From aac72e3741cd5331907a1cc4f2d107cad92e8538 Mon Sep 17 00:00:00 2001 From: TwinProduction Date: Sun, 18 Jul 2021 00:34:22 -0400 Subject: [PATCH] Improve test coverage --- storage/store/database/database.go | 24 +++++++++++++++--------- storage/store/database/database_test.go | 11 +++++++++++ storage/store/store_test.go | 6 +++++- 3 files changed, 31 insertions(+), 10 deletions(-) diff --git a/storage/store/database/database.go b/storage/store/database/database.go index f793555b..dbdede69 100644 --- a/storage/store/database/database.go +++ b/storage/store/database/database.go @@ -308,18 +308,24 @@ func (s *Store) Insert(service *core.Service, result *core.Result) { // DeleteAllServiceStatusesNotInKeys removes all rows owned by a service whose key is not within the keys provided func (s *Store) DeleteAllServiceStatusesNotInKeys(keys []string) int { + var err error + var result sql.Result if len(keys) == 0 { + // Delete everything + result, err = s.db.Exec("DELETE FROM service") + } else { + args := make([]interface{}, 0, len(keys)) + for i := range keys { + args = append(args, keys[i]) + } + result, err = s.db.Exec(fmt.Sprintf("DELETE FROM service WHERE service_key NOT IN (%s)", strings.Trim(strings.Repeat("?,", len(keys)), ",")), args...) + } + if err != nil { + log.Printf("[database][DeleteAllServiceStatusesNotInKeys] Failed to delete rows that do not belong to any of keys=%v: %s", keys, err.Error()) return 0 } - args := make([]interface{}, 0, len(keys)) - for i := range keys { - args = append(args, keys[i]) - } - _, err := s.db.Exec(fmt.Sprintf("DELETE FROM service WHERE service_key NOT IN (%s)", strings.Trim(strings.Repeat("?,", len(keys)), ",")), args...) - if err != nil { - log.Printf("err: %v", err) - } - return 0 + rowsAffects, _ := result.RowsAffected() + return int(rowsAffects) } // Clear deletes everything from the store diff --git a/storage/store/database/database_test.go b/storage/store/database/database_test.go index 492e271f..1602be07 100644 --- a/storage/store/database/database_test.go +++ b/storage/store/database/database_test.go @@ -242,12 +242,23 @@ func TestStore_Persistence(t *testing.T) { } } +func TestStore_Save(t *testing.T) { + store, _ := NewStore("sqlite", t.TempDir()+"/TestStore_Save.db") + defer store.Close() + if store.Save() != nil { + t.Error("Save shouldn't do anything for this store") + } +} + // TestStore_InvalidTransaction tests what happens if an invalid transaction is passed as parameter func TestStore_InvalidTransaction(t *testing.T) { store, _ := NewStore("sqlite", t.TempDir()+"/TestStore_InvalidTransaction.db") defer store.Close() tx, _ := store.db.Begin() tx.Commit() + if _, err := store.insertService(tx, &testService); err == nil { + t.Error("should've returned an error, because the transaction was already committed") + } if err := store.insertEvent(tx, 1, core.NewEventFromResult(&testSuccessfulResult)); err == nil { t.Error("should've returned an error, because the transaction was already committed") } diff --git a/storage/store/store_test.go b/storage/store/store_test.go index 2d719177..cd658d4c 100644 --- a/storage/store/store_test.go +++ b/storage/store/store_test.go @@ -355,7 +355,11 @@ func TestStore_DeleteAllServiceStatusesNotInKeys(t *testing.T) { if scenario.Store.GetServiceStatusByKey(secondService.Key(), paging.NewServiceStatusParams()) != nil { t.Error("firstService should still exist") } - scenario.Store.Clear() + // Delete everything + scenario.Store.DeleteAllServiceStatusesNotInKeys([]string{}) + if len(scenario.Store.GetAllServiceStatuses(paging.NewServiceStatusParams())) != 0 { + t.Errorf("everything should've been deleted") + } }) } }