mirror of
https://github.com/coder/coder.git
synced 2026-06-03 04:58:23 +00:00
ce935657f6
This PR adds a framework to move to a mocked db. And therefore massively speed up these tests.
72 lines
1.6 KiB
Go
72 lines
1.6 KiB
Go
package testutil_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/brianvoe/gofakeit/v7"
|
|
"github.com/google/uuid"
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/coder/coder/v2/coderd/database"
|
|
"github.com/coder/coder/v2/testutil"
|
|
)
|
|
|
|
type simpleStruct struct {
|
|
ID uuid.UUID
|
|
Name string
|
|
Description string
|
|
Age int `fake:"{number:18,60}"`
|
|
}
|
|
|
|
type nestedStruct struct {
|
|
Person simpleStruct
|
|
Address string
|
|
}
|
|
|
|
func TestFake(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
t.Run("Simple", func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
faker := gofakeit.New(0)
|
|
person := testutil.Fake(t, faker, simpleStruct{
|
|
Name: "alice",
|
|
})
|
|
require.Equal(t, "alice", person.Name)
|
|
require.NotEqual(t, uuid.Nil, person.ID)
|
|
require.NotEmpty(t, person.Description)
|
|
require.Greater(t, person.Age, 17, "Age should be greater than 17")
|
|
require.Less(t, person.Age, 61, "Age should be less than 61")
|
|
})
|
|
|
|
t.Run("Nested", func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
faker := gofakeit.New(0)
|
|
person := testutil.Fake(t, faker, nestedStruct{
|
|
Person: simpleStruct{
|
|
Name: "alice",
|
|
},
|
|
})
|
|
require.Equal(t, "alice", person.Person.Name)
|
|
require.NotEqual(t, uuid.Nil, person.Person.ID)
|
|
require.NotEmpty(t, person.Person.Description)
|
|
require.Greater(t, person.Person.Age, 17, "Age should be greater than 17")
|
|
require.NotEmpty(t, person.Address)
|
|
})
|
|
|
|
t.Run("DatabaseType", func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
faker := gofakeit.New(0)
|
|
id := uuid.New()
|
|
key := testutil.Fake(t, faker, database.APIKey{
|
|
UserID: id,
|
|
TokenName: "keep-my-name",
|
|
})
|
|
require.Equal(t, id, key.UserID)
|
|
require.NotEmpty(t, key.TokenName)
|
|
})
|
|
}
|