package repository import ( "context" "git.infra.nkode.tech/dkelly/nkode-core/entities" "git.infra.nkode.tech/dkelly/nkode-core/sqlc" "github.com/stretchr/testify/assert" "os" "testing" ) func TestNewSqliteDB(t *testing.T) { dbPath := os.Getenv("TEST_DB") // sql_driver.MakeTables(dbFile) ctx := context.Background() sqliteDb, err := sqlc.OpenSqliteDb(dbPath) assert.NoError(t, err) queue, err := sqlc.NewQueue(sqliteDb, ctx) assert.NoError(t, err) queue.Start() defer queue.Stop() db := NewSqliteRepository(queue, ctx) assert.NoError(t, err) testSignupLoginRenew(t, &db) testSqliteDBRandomSvgInterface(t, &db) } func testSignupLoginRenew(t *testing.T, db CustomerUserRepository) { nkodePolicy := entities.NewDefaultNKodePolicy() customerOrig, err := entities.NewCustomer(nkodePolicy) assert.NoError(t, err) err = db.CreateCustomer(*customerOrig) assert.NoError(t, err) customer, err := db.GetCustomer(customerOrig.Id) assert.NoError(t, err) assert.Equal(t, customerOrig, customer) username := "test_user@example.com" kp := entities.KeypadDefault passcodeIdx := []int{0, 1, 2, 3} mockSvgInterface := make(entities.SvgIdInterface, kp.TotalAttrs()) ui, err := entities.NewUserInterface(&kp, mockSvgInterface) assert.NoError(t, err) userOrig, err := entities.NewUser(*customer, username, passcodeIdx, *ui, kp) assert.NoError(t, err) err = db.WriteNewUser(*userOrig) assert.NoError(t, err) user, err := db.GetUser(entities.UserEmail(username), customer.Id) assert.NoError(t, err) assert.Equal(t, userOrig, user) err = db.Renew(customer.Id) assert.NoError(t, err) } func testSqliteDBRandomSvgInterface(t *testing.T, db CustomerUserRepository) { kp := entities.KeypadMax svgs, err := db.RandomSvgInterface(kp) assert.NoError(t, err) assert.Len(t, svgs, kp.TotalAttrs()) }