pokedex-go/pokemon/repo_test.go

70 lines
1.3 KiB
Go

package pokemon
import (
"github.com/stretchr/testify/assert"
"gorm.io/driver/sqlite"
"gorm.io/gorm"
"testing"
)
func pokeTest(name string) pokemon {
return pokemon{
Name: name,
Weight: 124,
Height: 356,
}
}
func TestRepo_Find(t *testing.T) {
cases := []struct {
label string
searchFor string
pokes []pokemon
expectResult pokemon
}{
{
label: "No pokes in db",
searchFor: "Jos",
pokes: []pokemon{},
expectResult: pokemon{},
},
{
label: "No pokes matching the name in db",
searchFor: "Jos",
pokes: []pokemon{
pokeTest("Snul"),
pokeTest("Muesli"),
pokeTest("Bonnie"),
},
expectResult: pokemon{},
},
{
label: "Unique poke name found",
searchFor: "Jos",
pokes: []pokemon{
pokeTest("Jos"),
pokeTest("Miel"),
},
expectResult: pokeTest("Jos"),
},
}
for _, tc := range cases {
t.Run(tc.label, func(t *testing.T) {
db, err := gorm.Open(sqlite.Open(":memory:"), &gorm.Config{})
assert.NoError(t, err)
db.AutoMigrate(&pokemon{})
repo := NewRepo(db)
for _, p := range tc.pokes {
db.Save(&p)
}
result, err := repo.Find(tc.searchFor)
assert.NoError(t, err)
assert.Equal(t, tc.expectResult.Name, result.Name)
assert.Equal(t, tc.expectResult.Weight, result.Weight)
})
}
}