Refactoring model & api tests.

This commit is contained in:
Matthew Dillon 2014-10-24 15:40:55 -08:00
parent cb383d84e7
commit c088386a00
9 changed files with 88 additions and 48 deletions

View file

@ -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.

View file

@ -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")
}

View file

@ -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

View file

@ -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")
}

View file

@ -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.

View file

@ -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) {