df/db/sqlc/person_test.go

126 lines
3.2 KiB
Go

package db
import (
"context"
"database/sql"
"testing"
"time"
"github.com/itsscb/df/util"
"github.com/stretchr/testify/require"
)
func createRandomPerson(t *testing.T) Person {
account := createRandomCustomer(t)
require.NotEmpty(t, account)
creator := util.RandomUser()
arg := CreatePersonParams{
CustomerID: account.ID,
Firstname: util.RandomUser(),
Lastname: util.RandomUser(),
Birthday: time.Date(1990, 1, 1, 0, 0, 0, 0, time.UTC),
City: util.RandomString(15),
Zip: util.RandomString(5),
Street: util.RandomString(20),
Country: util.RandomString(15),
Creator: creator,
Changer: creator,
}
person, err := testQueries.CreatePerson(context.Background(), arg)
require.NoError(t, err)
require.NotEmpty(t, person)
require.Equal(t, arg.CustomerID, person.CustomerID)
require.Equal(t, arg.Firstname, person.Firstname)
require.Equal(t, arg.Lastname, person.Lastname)
require.Equal(t, arg.Birthday, person.Birthday)
require.Equal(t, arg.City, person.City)
require.Equal(t, arg.Zip, person.Zip)
require.Equal(t, arg.Street, person.Street)
require.Equal(t, arg.Country, person.Country)
require.Equal(t, arg.Creator, person.Creator)
require.NotZero(t, person.ID)
require.NotZero(t, person.Created)
return person
}
func TestCreatePerson(t *testing.T) {
createRandomPerson(t)
}
func TestGetPerson(t *testing.T) {
newperson := createRandomPerson(t)
require.NotEmpty(t, newperson)
person, err := testQueries.GetPerson(context.Background(), newperson.ID)
require.NoError(t, err)
require.NotEmpty(t, person)
require.Equal(t, newperson.Firstname, person.Firstname)
require.Equal(t, newperson.Lastname, person.Lastname)
require.Equal(t, newperson.Birthday, person.Birthday)
require.Equal(t, newperson.City, person.City)
require.Equal(t, newperson.Zip, person.Zip)
require.Equal(t, newperson.Street, person.Street)
require.Equal(t, newperson.Country, person.Country)
require.Equal(t, newperson.Creator, person.Creator)
require.WithinDuration(t, newperson.Created, person.Created, time.Second)
}
func TestDeletePerson(t *testing.T) {
person1 := createRandomPerson(t)
err := testQueries.DeletePerson(context.Background(), person1.ID)
require.NoError(t, err)
person2, err := testQueries.GetPerson(context.Background(), person1.ID)
require.Error(t, err)
require.EqualError(t, err, sql.ErrNoRows.Error())
require.Empty(t, person2)
}
func TestUpdatePerson(t *testing.T) {
person1 := createRandomPerson(t)
require.NotEmpty(t, person1)
arg := UpdatePersonParams{
ID: person1.ID,
Lastname: sql.NullString{
String: util.RandomPhone(),
Valid: true,
},
}
person2, err := testQueries.UpdatePerson(context.Background(), arg)
require.NoError(t, err)
require.NotEmpty(t, person2)
require.Equal(t, person1.ID, person2.ID)
require.Equal(t, person1.Firstname, person2.Firstname)
require.NotEqual(t, person1.Lastname, person2.Lastname)
}
func TestListPersons(t *testing.T) {
for i := 0; i < 10; i++ {
createRandomPerson(t)
}
arg := ListPersonsParams{
Limit: 5,
Offset: 5,
}
persons, err := testQueries.ListPersons(context.Background(), arg)
require.NoError(t, err)
require.Len(t, persons, 5)
for _, person := range persons {
require.NotEmpty(t, person)
}
}