Testing Stores
Testing Philosophy
Store tests use real in-memory SQLite databases, not mocks. This ensures your code works in real scenarios, catching issues that mocks might miss.
How Interfaces Help Testing
Because stores and entities are accessed via interfaces, you can easily swap implementations or inject test doubles if needed.
Example Test Code
func TestExampleStore_CreateAndRetrieve(t *testing.T) {
db := setupInMemoryDB()
store := NewExampleStore(db)
example := NewExample()
example.SetID("1234")
// ... set fields
err := store.ExampleCreate(context.Background(), example)
require.NoError(t, err)
retrieved, err := store.ExampleGet(context.Background(), "1234")
require.NoError(t, err)
require.Equal(t, "1234", retrieved.ID())
}