From c088386a00c64dd1110dfe021f695407c996b233 Mon Sep 17 00:00:00 2001 From: Matthew Dillon Date: Fri, 24 Oct 2014 15:40:55 -0800 Subject: [PATCH] Refactoring model & api tests. --- api/genera_test.go | 17 +++++++++++------ api/species_test.go | 17 ++++++++++++----- api/users_test.go | 12 +++++++++--- models/genera.go | 4 ++++ models/genera_test.go | 29 ++++++++++++++++------------- models/species.go | 4 ++++ models/species_test.go | 35 ++++++++++++++++++----------------- models/users.go | 4 ++++ models/users_test.go | 14 ++++++++++---- 9 files changed, 88 insertions(+), 48 deletions(-) diff --git a/api/genera_test.go b/api/genera_test.go index c5b1949..ca0bf2a 100644 --- a/api/genera_test.go +++ b/api/genera_test.go @@ -6,10 +6,16 @@ import ( "github.com/thermokarst/bactdb/models" ) +func newGenus() *models.Genus { + genus := models.NewGenus() + genus.Id = 1 + return genus +} + func TestGenus_Get(t *testing.T) { setup() - want := &models.Genus{Id: 1, GenusName: "Test Genus"} + want := newGenus() calledGet := false store.Genera.(*models.MockGeneraService).Get_ = func(id int64) (*models.Genus, error) { @@ -36,7 +42,7 @@ func TestGenus_Get(t *testing.T) { func TestGenus_Create(t *testing.T) { setup() - want := &models.Genus{Id: 1, GenusName: "Test Genus"} + want := newGenus() calledPost := false store.Genera.(*models.MockGeneraService).Create_ = func(genus *models.Genus) (bool, error) { @@ -63,7 +69,7 @@ func TestGenus_Create(t *testing.T) { func TestGenus_List(t *testing.T) { setup() - want := []*models.Genus{{Id: 1, GenusName: "Test Genus"}} + want := []*models.Genus{newGenus()} wantOpt := &models.GenusListOptions{ListOptions: models.ListOptions{Page: 1, PerPage: 10}} calledList := false @@ -83,7 +89,6 @@ func TestGenus_List(t *testing.T) { if !calledList { t.Error("!calledList") } - if !normalizeDeepEqual(&want, &genera) { t.Errorf("got genera %+v but wanted genera %+v", genera, want) } @@ -92,7 +97,7 @@ func TestGenus_List(t *testing.T) { func TestGenus_Update(t *testing.T) { setup() - want := &models.Genus{Id: 1, GenusName: "Test Genus"} + want := newGenus() calledPut := false store.Genera.(*models.MockGeneraService).Update_ = func(id int64, genus *models.Genus) (bool, error) { @@ -122,7 +127,7 @@ func TestGenus_Update(t *testing.T) { func TestGenus_Delete(t *testing.T) { setup() - want := &models.Genus{Id: 1, GenusName: "Test Genus"} + want := newGenus() calledDelete := false store.Genera.(*models.MockGeneraService).Delete_ = func(id int64) (bool, error) { diff --git a/api/species_test.go b/api/species_test.go index 418091e..91d52b6 100644 --- a/api/species_test.go +++ b/api/species_test.go @@ -6,10 +6,17 @@ import ( "github.com/thermokarst/bactdb/models" ) +func newSpecies() *models.Species { + species := models.NewSpecies() + species.Id = 1 + species.GenusId = 1 + return species +} + func TestSpecies_Get(t *testing.T) { setup() - want := &models.Species{Id: 1, GenusId: 1, SpeciesName: "Test Species"} + want := newSpecies() calledGet := false store.Species.(*models.MockSpeciesService).Get_ = func(id int64) (*models.Species, error) { @@ -36,7 +43,7 @@ func TestSpecies_Get(t *testing.T) { func TestSpecies_Create(t *testing.T) { setup() - want := &models.Species{Id: 1, GenusId: 1, SpeciesName: "Test Species"} + want := newSpecies() calledPost := false store.Species.(*models.MockSpeciesService).Create_ = func(species *models.Species) (bool, error) { @@ -63,7 +70,7 @@ func TestSpecies_Create(t *testing.T) { func TestSpecies_List(t *testing.T) { setup() - want := []*models.Species{{Id: 1, GenusId: 1, SpeciesName: "Test Species"}} + want := []*models.Species{newSpecies()} wantOpt := &models.SpeciesListOptions{ListOptions: models.ListOptions{Page: 1, PerPage: 10}} calledList := false @@ -92,7 +99,7 @@ func TestSpecies_List(t *testing.T) { func TestSpecies_Update(t *testing.T) { setup() - want := &models.Species{Id: 1, GenusId: 1, SpeciesName: "Test Species"} + want := newSpecies() calledPut := false store.Species.(*models.MockSpeciesService).Update_ = func(id int64, species *models.Species) (bool, error) { @@ -122,7 +129,7 @@ func TestSpecies_Update(t *testing.T) { func TestSpecies_Delete(t *testing.T) { setup() - want := &models.Species{Id: 1, GenusId: 1, SpeciesName: "Test Species"} + want := newSpecies() calledDelete := false store.Species.(*models.MockSpeciesService).Delete_ = func(id int64) (bool, error) { diff --git a/api/users_test.go b/api/users_test.go index 232178c..22d3319 100644 --- a/api/users_test.go +++ b/api/users_test.go @@ -6,10 +6,16 @@ import ( "github.com/thermokarst/bactdb/models" ) +func newUser() *models.User { + user := models.NewUser() + user.Id = 1 + return user +} + func TestUser_Get(t *testing.T) { setup() - wantUser := &models.User{Id: 1, UserName: "Test User"} + wantUser := newUser() calledGet := false store.Users.(*models.MockUsersService).Get_ = func(id int64) (*models.User, error) { @@ -36,7 +42,7 @@ func TestUser_Get(t *testing.T) { func TestUser_Create(t *testing.T) { setup() - wantUser := &models.User{Id: 1, UserName: "Test User"} + wantUser := newUser() calledPost := false store.Users.(*models.MockUsersService).Create_ = func(user *models.User) (bool, error) { @@ -63,7 +69,7 @@ func TestUser_Create(t *testing.T) { func TestUser_List(t *testing.T) { setup() - wantUsers := []*models.User{{Id: 1, UserName: "Test User"}} + wantUsers := []*models.User{newUser()} wantOpt := &models.UserListOptions{ListOptions: models.ListOptions{Page: 1, PerPage: 10}} calledList := false diff --git a/models/genera.go b/models/genera.go index 60cc2b0..eda59c0 100644 --- a/models/genera.go +++ b/models/genera.go @@ -18,6 +18,10 @@ type Genus struct { DeletedAt time.Time `db:"deleted_at" json:"deleted_at"` } +func NewGenus() *Genus { + return &Genus{GenusName: "Test Genus"} +} + // GeneraService interacts with the genus-related endpoints in bactdb's API. type GeneraService interface { // Get a genus. diff --git a/models/genera_test.go b/models/genera_test.go index 453f0bf..9cb0204 100644 --- a/models/genera_test.go +++ b/models/genera_test.go @@ -8,11 +8,17 @@ import ( "github.com/thermokarst/bactdb/router" ) +func newGenus() *Genus { + genus := NewGenus() + genus.Id = 1 + return genus +} + func TestGeneraService_Get(t *testing.T) { setup() defer teardown() - want := &Genus{Id: 1, GenusName: "Test Genus"} + want := newGenus() var called bool mux.HandleFunc(urlPath(t, router.Genus, map[string]string{"Id": "1"}), func(w http.ResponseWriter, r *http.Request) { @@ -22,7 +28,7 @@ func TestGeneraService_Get(t *testing.T) { writeJSON(w, want) }) - genus, err := client.Genera.Get(1) + genus, err := client.Genera.Get(want.Id) if err != nil { t.Errorf("Genera.Get returned error: %v", err) } @@ -42,7 +48,7 @@ func TestGeneraService_Create(t *testing.T) { setup() defer teardown() - want := &Genus{Id: 1, GenusName: "Test Genus"} + want := newGenus() var called bool mux.HandleFunc(urlPath(t, router.CreateGenus, nil), func(w http.ResponseWriter, r *http.Request) { @@ -54,16 +60,14 @@ func TestGeneraService_Create(t *testing.T) { writeJSON(w, want) }) - genus := &Genus{Id: 1, GenusName: "Test Genus"} + genus := newGenus() created, err := client.Genera.Create(genus) if err != nil { t.Errorf("Genera.Create returned error: %v", err) } - if !created { t.Error("!created") } - if !called { t.Fatal("!called") } @@ -78,7 +82,7 @@ func TestGeneraService_List(t *testing.T) { setup() defer teardown() - want := []*Genus{{Id: 1, GenusName: "Test Genus"}} + want := []*Genus{newGenus()} var called bool mux.HandleFunc(urlPath(t, router.Genera, nil), func(w http.ResponseWriter, r *http.Request) { @@ -110,7 +114,7 @@ func TestGeneraService_Update(t *testing.T) { setup() defer teardown() - want := &Genus{Id: 1, GenusName: "Test Genus"} + want := newGenus() var called bool mux.HandleFunc(urlPath(t, router.UpdateGenus, map[string]string{"Id": "1"}), func(w http.ResponseWriter, r *http.Request) { @@ -122,8 +126,9 @@ func TestGeneraService_Update(t *testing.T) { writeJSON(w, want) }) - genus := &Genus{Id: 1, GenusName: "Test Genus Updated"} - updated, err := client.Genera.Update(1, genus) + genus := newGenus() + genus.GenusName = "Test Genus Updated" + updated, err := client.Genera.Update(genus.Id, genus) if err != nil { t.Errorf("Genera.Update returned error: %v", err) } @@ -141,7 +146,7 @@ func TestGeneraService_Delete(t *testing.T) { setup() defer teardown() - want := &Genus{Id: 1, GenusName: "Test Genus"} + want := newGenus() var called bool mux.HandleFunc(urlPath(t, router.DeleteGenus, map[string]string{"Id": "1"}), func(w http.ResponseWriter, r *http.Request) { @@ -156,11 +161,9 @@ func TestGeneraService_Delete(t *testing.T) { if err != nil { t.Errorf("Genera.Delete returned error: %v", err) } - if !deleted { t.Error("!deleted") } - if !called { t.Fatal("!called") } diff --git a/models/species.go b/models/species.go index 19b69fb..7b76ccf 100644 --- a/models/species.go +++ b/models/species.go @@ -19,6 +19,10 @@ type Species struct { DeletedAt time.Time `db:"deleted_at" json:"deleted_at"` } +func NewSpecies() *Species { + return &Species{SpeciesName: "Test Species"} +} + // SpeciesService interacts with the species-related endpoints in bactdb's API. type SpeciesService interface { // Get a species diff --git a/models/species_test.go b/models/species_test.go index f2ef1e9..c850d1d 100644 --- a/models/species_test.go +++ b/models/species_test.go @@ -8,11 +8,18 @@ import ( "github.com/thermokarst/bactdb/router" ) +func newSpecies() *Species { + species := NewSpecies() + species.Id = 1 + species.GenusId = 1 + return species +} + func TestSpeciesService_Get(t *testing.T) { setup() defer teardown() - want := &Species{Id: 1, GenusId: 1, SpeciesName: "Test Species"} + want := newSpecies() var called bool mux.HandleFunc(urlPath(t, router.Species, map[string]string{"Id": "1"}), func(w http.ResponseWriter, r *http.Request) { @@ -22,11 +29,10 @@ func TestSpeciesService_Get(t *testing.T) { writeJSON(w, want) }) - species, err := client.Species.Get(1) + species, err := client.Species.Get(want.Id) if err != nil { t.Errorf("Species.Get returned error: %v", err) } - if !called { t.Fatal("!called") } @@ -42,7 +48,7 @@ func TestSpeciesService_Create(t *testing.T) { setup() defer teardown() - want := &Species{Id: 1, GenusId: 1, SpeciesName: "Test Species"} + want := newSpecies() var called bool mux.HandleFunc(urlPath(t, router.CreateSpecies, nil), func(w http.ResponseWriter, r *http.Request) { @@ -54,16 +60,14 @@ func TestSpeciesService_Create(t *testing.T) { writeJSON(w, want) }) - species := &Species{Id: 1, GenusId: 1, SpeciesName: "Test Species"} + species := newSpecies() created, err := client.Species.Create(species) if err != nil { t.Errorf("Species.Create returned error: %v", err) } - if !created { t.Error("!created") } - if !called { t.Fatal("!called") } @@ -78,7 +82,7 @@ func TestSpeciesService_List(t *testing.T) { setup() defer teardown() - want := []*Species{{Id: 1, GenusId: 1, SpeciesName: "Test Species"}} + want := []*Species{newSpecies()} var called bool mux.HandleFunc(urlPath(t, router.SpeciesList, nil), func(w http.ResponseWriter, r *http.Request) { @@ -110,7 +114,7 @@ func TestSpeciesService_Update(t *testing.T) { setup() defer teardown() - want := &Species{Id: 1, GenusId: 1, SpeciesName: "Test Species"} + want := newSpecies() var called bool mux.HandleFunc(urlPath(t, router.UpdateSpecies, map[string]string{"Id": "1"}), func(w http.ResponseWriter, r *http.Request) { @@ -122,16 +126,15 @@ func TestSpeciesService_Update(t *testing.T) { writeJSON(w, want) }) - species := &Species{Id: 1, GenusId: 1, SpeciesName: "Test Species Updated"} - updated, err := client.Species.Update(1, species) + species := newSpecies() + species.SpeciesName = "Test Species Updated" + updated, err := client.Species.Update(species.Id, species) if err != nil { t.Errorf("Species.Update returned error: %v", err) } - if !updated { t.Error("!updated") } - if !called { t.Fatal("!called") } @@ -141,7 +144,7 @@ func TestSpeciesService_Delete(t *testing.T) { setup() defer teardown() - want := &Species{Id: 1, GenusId: 1, SpeciesName: "Test Species"} + want := newSpecies() var called bool mux.HandleFunc(urlPath(t, router.DeleteSpecies, map[string]string{"Id": "1"}), func(w http.ResponseWriter, r *http.Request) { @@ -152,15 +155,13 @@ func TestSpeciesService_Delete(t *testing.T) { writeJSON(w, want) }) - deleted, err := client.Species.Delete(1) + deleted, err := client.Species.Delete(want.Id) if err != nil { t.Errorf("Species.Delete returned error: %v", err) } - if !deleted { t.Error("!deleted") } - if !called { t.Fatal("!called") } diff --git a/models/users.go b/models/users.go index d7a526d..bceb786 100644 --- a/models/users.go +++ b/models/users.go @@ -18,6 +18,10 @@ type User struct { DeletedAt time.Time `db:"deleted_at" json:"deleted_at"` } +func NewUser() *User { + return &User{UserName: "Test User"} +} + // UsersService interacts with the user-related endpoints in bactdb's API. type UsersService interface { // Get a user. diff --git a/models/users_test.go b/models/users_test.go index 274aeb4..efef39d 100644 --- a/models/users_test.go +++ b/models/users_test.go @@ -8,11 +8,17 @@ import ( "github.com/thermokarst/bactdb/router" ) +func newUser() *User { + user := NewUser() + user.Id = 1 + return user +} + func TestUsersService_Get(t *testing.T) { setup() defer teardown() - want := &User{Id: 1, UserName: "Test User"} + want := newUser() var called bool mux.HandleFunc(urlPath(t, router.User, map[string]string{"Id": "1"}), func(w http.ResponseWriter, r *http.Request) { @@ -42,7 +48,7 @@ func TestUsersService_Create(t *testing.T) { setup() defer teardown() - want := &User{Id: 1, UserName: "Test User"} + want := newUser() var called bool mux.HandleFunc(urlPath(t, router.CreateUser, nil), func(w http.ResponseWriter, r *http.Request) { @@ -54,7 +60,7 @@ func TestUsersService_Create(t *testing.T) { writeJSON(w, want) }) - user := &User{Id: 1, UserName: "Test User"} + user := newUser() created, err := client.Users.Create(user) if err != nil { t.Errorf("Users.Create returned error: %v", err) @@ -78,7 +84,7 @@ func TestUsersService_List(t *testing.T) { setup() defer teardown() - want := []*User{{Id: 1, UserName: "Test User"}} + want := []*User{newUser()} var called bool mux.HandleFunc(urlPath(t, router.Users, nil), func(w http.ResponseWriter, r *http.Request) {