From 80eeea585b8f11a0849fe9bff0aa54d8f23d4eb9 Mon Sep 17 00:00:00 2001 From: Brian Ginsburg Date: Tue, 3 Dec 2024 14:36:06 -0800 Subject: [PATCH] test: Add database store to test suite --- pkg/solver/store/store_test.go | 37 ++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/pkg/solver/store/store_test.go b/pkg/solver/store/store_test.go index e4a69c67..adebcb38 100644 --- a/pkg/solver/store/store_test.go +++ b/pkg/solver/store/store_test.go @@ -11,10 +11,13 @@ import ( "github.com/lilypad-tech/lilypad/pkg/data" "github.com/lilypad-tech/lilypad/pkg/solver/store" + databasestore "github.com/lilypad-tech/lilypad/pkg/solver/store/db" memorystore "github.com/lilypad-tech/lilypad/pkg/solver/store/memory" "golang.org/x/exp/rand" ) +const DB_CONN_STR = "postgres://postgres:postgres@localhost:5432/solver-db?sslmode=disable" + type storeConfig struct { name string init func() (getStore func() store.SolverStore) @@ -33,8 +36,42 @@ func setupStores(t *testing.T) []storeConfig { } } + initDatabase := func() func() store.SolverStore { + db, err := databasestore.NewSolverStoreDatabase(DB_CONN_STR, true) + if err != nil { + t.Fatalf("Failed to create database store: %v", err) + } + + // Clear data at initialization + clearStoreDatabase(t, db) + + // Get store functions clear data and returns + // the same store instance + return func() store.SolverStore { + clearStoreDatabase(t, db) + return db + } + } + return []storeConfig{ {name: "memory", init: initMemory}, + {name: "database", init: initDatabase}, + } +} + +func clearStoreDatabase(t *testing.T, s store.SolverStore) { + jobOffers, err := s.GetJobOffers(store.GetJobOffersQuery{ + IncludeCancelled: true, + }) + if err != nil { + t.Fatalf("Failed to get existing job offers: %v", err) + } + + for _, result := range jobOffers { + err := s.RemoveJobOffer(result.ID) + if err != nil { + t.Fatalf("Failed to remove existing job offer: %v", err) + } } }