github.com/miguelgrubin/gin-boilerplate@v0.0.0-20231208120009-f8f00c6d4138/pkg/petshop/infrastructure/storage/sql_pet_repository_test.go (about) 1 package storage_test 2 3 import ( 4 "testing" 5 6 "github.com/miguelgrubin/gin-boilerplate/pkg/petshop/domain" 7 "github.com/miguelgrubin/gin-boilerplate/pkg/petshop/infrastructure/storage" 8 "github.com/miguelgrubin/gin-boilerplate/pkg/shared" 9 "github.com/stretchr/testify/assert" 10 ) 11 12 func TestSaveWithNewPet(t *testing.T) { 13 db, err := DBConn() 14 if err != nil { 15 t.Error("Connection error") 16 } 17 18 pet := domain.NewPet(domain.CreatePetParams{Name: "testy", Status: "sleeping"}) 19 pr := storage.NewPetRepository(db) 20 err = pr.Save(pet) 21 22 storedPet, _ := pr.FindOne(pet.ID) 23 assert.Equal(t, pet.ID.String(), storedPet.ID.String()) 24 assert.NoError(t, err) 25 } 26 27 func TestSaveWithStoredPet(t *testing.T) { 28 db, err := DBConn() 29 if err != nil { 30 t.Error(err.Error()) 31 } 32 pets, _ := storage.SeedPets(db) 33 34 pet := pets[0] 35 pet.Name = "New Name" 36 pr := storage.NewPetRepository(db) 37 err = pr.Save(pet) 38 39 storedPet, _ := pr.FindOne(pet.ID) 40 assert.Equal(t, storedPet.Name, "New Name") 41 assert.NoError(t, err) 42 } 43 44 func TestFindOneWithResult(t *testing.T) { 45 db, err := DBConn() 46 if err != nil { 47 t.Error(err.Error()) 48 } 49 pets, _ := storage.SeedPets(db) 50 pet := pets[0] 51 52 pr := storage.NewPetRepository(db) 53 storedPet, prErr := pr.FindOne(pet.ID) 54 55 assert.Equal(t, pet.ID, storedPet.ID) 56 assert.NoError(t, prErr) 57 } 58 59 func TestFindOneWithoutResult(t *testing.T) { 60 db, err := DBConn() 61 if err != nil { 62 t.Error(err.Error()) 63 } 64 65 pr := storage.NewPetRepository(db) 66 _, err = pr.FindOne(shared.EntityID("random-id")) 67 68 assert.ErrorContains(t, err, "Pet not found") 69 assert.Contains(t, err.Error(), "random-id") 70 } 71 72 func TestFindAllWithEmptyResult(t *testing.T) { 73 db, err := DBConn() 74 if err != nil { 75 t.Error(err.Error()) 76 } 77 78 pr := storage.NewPetRepository(db) 79 storedPets, err := pr.FindAll() 80 81 assert.Empty(t, storedPets) 82 assert.NoError(t, err) 83 } 84 85 func TestFindOneWithResults(t *testing.T) { 86 db, err := DBConn() 87 if err != nil { 88 t.Error(err.Error()) 89 } 90 pets, _ := storage.SeedPets(db) 91 92 pr := storage.NewPetRepository(db) 93 storedPets, err := pr.FindAll() 94 95 assert.Len(t, storedPets, len(pets)) 96 assert.NoError(t, err) 97 } 98 99 func TestDelete(t *testing.T) { 100 db, err := DBConn() 101 if err != nil { 102 t.Error(err.Error()) 103 } 104 pets, _ := storage.SeedPets(db) 105 pet := pets[0] 106 107 pr := storage.NewPetRepository(db) 108 err = pr.Delete(pet.ID) 109 110 assert.NoError(t, err) 111 }