Improve tests for the Delete() function

pull/7/head
Vinícius Garcia 2021-09-18 21:24:22 -03:00
parent 8b897d8ca9
commit b92a751d5e
1 changed files with 68 additions and 40 deletions

View File

@ -918,51 +918,79 @@ func TestDelete(t *testing.T) {
}) })
t.Run("should delete one id correctly", func(t *testing.T) { t.Run("should delete one id correctly", func(t *testing.T) {
db, closer := connectDB(t, config) tests := []struct {
defer closer.Close() desc string
deletionKeyForUser func(u User) interface{}
ctx := context.Background() }{
c := newTestDB(db, config.driver) {
desc: "passing only the ID as key",
u1 := User{ deletionKeyForUser: func(u User) interface{} {
Name: "Fernanda", return u.ID
},
},
{
desc: "passing only the entire user",
deletionKeyForUser: func(u User) interface{} {
return u
},
},
{
desc: "passing the address of the user",
deletionKeyForUser: func(u User) interface{} {
return &u
},
},
} }
err := c.Insert(ctx, UsersTable, &u1) for _, test := range tests {
assert.Equal(t, nil, err) t.Run(test.desc, func(t *testing.T) {
assert.NotEqual(t, uint(0), u1.ID) db, closer := connectDB(t, config)
defer closer.Close()
result := User{} ctx := context.Background()
err = getUserByID(c.db, c.dialect, &result, u1.ID) c := newTestDB(db, config.driver)
assert.Equal(t, nil, err)
assert.Equal(t, u1.ID, result.ID)
u2 := User{ u1 := User{
Name: "Won't be deleted", Name: "Fernanda",
}
err := c.Insert(ctx, UsersTable, &u1)
assert.Equal(t, nil, err)
assert.NotEqual(t, uint(0), u1.ID)
result := User{}
err = getUserByID(c.db, c.dialect, &result, u1.ID)
assert.Equal(t, nil, err)
assert.Equal(t, u1.ID, result.ID)
u2 := User{
Name: "Won't be deleted",
}
err = c.Insert(ctx, UsersTable, &u2)
assert.Equal(t, nil, err)
assert.NotEqual(t, uint(0), u2.ID)
result = User{}
err = getUserByID(c.db, c.dialect, &result, u2.ID)
assert.Equal(t, nil, err)
assert.Equal(t, u2.ID, result.ID)
err = c.Delete(ctx, UsersTable, test.deletionKeyForUser(u1))
assert.Equal(t, nil, err)
result = User{}
err = getUserByID(c.db, c.dialect, &result, u1.ID)
assert.Equal(t, sql.ErrNoRows, err)
result = User{}
err = getUserByID(c.db, c.dialect, &result, u2.ID)
assert.Equal(t, nil, err)
assert.NotEqual(t, uint(0), result.ID)
assert.Equal(t, "Won't be deleted", result.Name)
})
} }
err = c.Insert(ctx, UsersTable, &u2)
assert.Equal(t, nil, err)
assert.NotEqual(t, uint(0), u2.ID)
result = User{}
err = getUserByID(c.db, c.dialect, &result, u2.ID)
assert.Equal(t, nil, err)
assert.Equal(t, u2.ID, result.ID)
err = c.Delete(ctx, UsersTable, u1.ID)
assert.Equal(t, nil, err)
result = User{}
err = getUserByID(c.db, c.dialect, &result, u1.ID)
assert.Equal(t, sql.ErrNoRows, err)
result = User{}
err = getUserByID(c.db, c.dialect, &result, u2.ID)
assert.Equal(t, nil, err)
assert.NotEqual(t, uint(0), result.ID)
assert.Equal(t, "Won't be deleted", result.Name)
}) })
t.Run("should delete multiple ids correctly", func(t *testing.T) { t.Run("should delete multiple ids correctly", func(t *testing.T) {