From d7de194a90ea25db844eb095e0af8b0d8d29b080 Mon Sep 17 00:00:00 2001 From: Dan Jones Date: Mon, 27 Jan 2025 11:41:32 -0600 Subject: [PATCH] =?UTF-8?q?=E2=9C=85=20Improve=20test=20coverage?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.go | 1 + app_test.go | 25 +++++++++++++++++++++++++ config/config_test.go | 38 ++++++++++++++++++++++++++++++++++++++ store/factory_test.go | 11 +++++++++++ 4 files changed, 75 insertions(+) diff --git a/app.go b/app.go index fbe7524..48caeaf 100644 --- a/app.go +++ b/app.go @@ -33,6 +33,7 @@ func NewApp(ver string, conf config.Config, db store.Store) (*App, error) { app := App{ version: ver, conf: conf, + storage: db, } selfIRI := boxap.DefaultServiceIRI(conf.BaseURL()) diff --git a/app_test.go b/app_test.go index 7819765..edcc536 100644 --- a/app_test.go +++ b/app_test.go @@ -78,6 +78,31 @@ func TestService(t *testing.T) { } } +func TestAppStorage(t *testing.T) { + th := setupAppTest(t) + base := "http://localhost:1234/" + th.conf.EXPECT().BaseURL().Return(base).MinTimes(1) + th.conf.EXPECT().Name().Return("").AnyTimes() + a, er := NewApp("0.0.0.0", th.conf, th.store) + assert.NoError(t, er) + if assert.NotNil(t, a) { + assert.Equal(t, th.store, a.Storage()) + } +} + +func TestAppUser(t *testing.T) { + // TODO: Actually fill this out at some point + th := setupAppTest(t) + base := "http://localhost:1234/" + th.conf.EXPECT().BaseURL().Return(base).MinTimes(1) + th.conf.EXPECT().Name().Return("").AnyTimes() + a, er := NewApp("0.0.0.0", th.conf, th.store) + assert.NoError(t, er) + if assert.NotNil(t, a) { + assert.Zero(t, a.User()) + } +} + func TestStrings(t *testing.T) { cases := [...]struct { given string diff --git a/config/config_test.go b/config/config_test.go index 28dfc9f..c146f7f 100644 --- a/config/config_test.go +++ b/config/config_test.go @@ -3,6 +3,7 @@ package config import ( "testing" + "github.com/BurntSushi/toml" "github.com/stretchr/testify/assert" ) @@ -24,3 +25,40 @@ func TestValidEnvReturnsCorrect(t *testing.T) { }) } } + +func TestConfigBaseURL(t *testing.T) { + c := config{baseURL: "https://me.goodevilgenius.org"} + assert.Equal(t, c.baseURL, c.BaseURL()) +} + +func TestConfigStoreName(t *testing.T) { + c := config{stores: stores{store: "cockroachdb"}} + assert.Equal(t, c.stores.store, c.StoreName()) +} + +func TestStoresMissingStore(t *testing.T) { + ss := stores{} + st, er := ss.GetStore("cockroachdb") + assert.Nil(t, st) + assert.ErrorIs(t, er, ErrMissingStore) +} + +var mockToml = ` +[cockroachdb] + +dsn = "cockroachdb://user:pass@127.0.0.1:26257/combluotion" +` + +type mockConn struct { + CockroachDB toml.Primitive +} + +func TestStoreMap(t *testing.T) { + var conn mockConn + md, _ := toml.Decode(mockToml, &conn) + st := store{"cockroachdb", conn.CockroachDB, md} + + m, er := st.Map() + assert.NoError(t, er) + assert.Equal(t, "cockroachdb://user:pass@127.0.0.1:26257/combluotion", m["dsn"]) +} diff --git a/store/factory_test.go b/store/factory_test.go index 6d3ed8f..aa97fdc 100644 --- a/store/factory_test.go +++ b/store/factory_test.go @@ -1,6 +1,7 @@ package store import ( + "errors" "testing" "github.com/stretchr/testify/assert" @@ -92,3 +93,13 @@ func TestMakeStoreNoName(t *testing.T) { assert.NotNil(t, s) assert.NoError(t, e) } + +func TestMakeStoreConfError(t *testing.T) { + th := setupFactoryTest(t) + mockError := errors.New("leave me alone") + th.conf.EXPECT().Store("mock").Return(nil, mockError) + s, e := MakeStore("mock", th.conf) + assert.Zero(t, s) + assert.ErrorIs(t, e, mockError) + +}