Subroutes: strains

This commit is contained in:
Matthew Dillon 2015-01-08 16:15:31 -09:00
parent 7b7f519c01
commit b5af05de9d
8 changed files with 95 additions and 13 deletions

View file

@ -1,7 +1,9 @@
package models
import (
"database/sql"
"errors"
"fmt"
"net/http"
"strconv"
"time"
@ -15,22 +17,43 @@ type Strain struct {
SpeciesId int64 `db:"species_id" json:"speciesId"`
StrainName string `db:"strain_name" json:"strainName"`
StrainType string `db:"strain_type" json:"strainType"`
Etymology string `db:"etymology" json:"etymology"`
Etymology NullString `db:"etymology" json:"etymology"`
AccessionBanks string `db:"accession_banks" json:"accessionBanks"`
GenbankEmblDdb string `db:"genbank_embl_ddb" json:"genbankEmblDdb"`
GenbankEmblDdb NullString `db:"genbank_embl_ddb" json:"genbankEmblDdb"`
IsolatedFrom NullString `db:"isolated_from" json:"isolatedFrom"`
CreatedAt time.Time `db:"created_at" json:"createdAt"`
UpdatedAt time.Time `db:"updated_at" json:"updatedAt"`
DeletedAt NullTime `db:"deleted_at" json:"deletedAt"`
}
func (s *Strain) String() string {
return fmt.Sprintf("%v", *s)
}
func NewStrain() *Strain {
return &Strain{
StrainName: "Test Strain",
StrainType: "Test Type",
Etymology: "Test Etymology",
StrainName: "Test Strain",
StrainType: "Test Type",
Etymology: NullString{
sql.NullString{
String: "Test Etymology",
Valid: true,
},
},
AccessionBanks: "Test Accession",
GenbankEmblDdb: "Test Genbank"}
GenbankEmblDdb: NullString{
sql.NullString{
String: "Test Genbank",
Valid: true,
},
},
IsolatedFrom: NullString{
sql.NullString{
String: "",
Valid: false,
},
},
}
}
// StrainService interacts with the strain-related endpoints in bactdb's API
@ -102,6 +125,7 @@ func (s *strainsService) Create(strain *Strain) (bool, error) {
type StrainListOptions struct {
ListOptions
Genus string
}
func (s *strainsService) List(opt *StrainListOptions) ([]*Strain, error) {

View file

@ -124,7 +124,7 @@ func TestStrainService_Update(t *testing.T) {
mux.HandleFunc(urlPath(t, router.UpdateStrain, map[string]string{"Id": "1"}), func(w http.ResponseWriter, r *http.Request) {
called = true
testMethod(t, r, "PUT")
testBody(t, r, `{"id":1,"speciesId":1,"strainName":"Test Strain Updated","strainType":"Test Type Updated","etymology":"Test Etymology Updated","accessionBanks":"Test Accession Updated","genbankEmblDdb":"Test Genbank Updated","isolatedFrom":null,"createdAt":"0001-01-01T00:00:00Z","updatedAt":"0001-01-01T00:00:00Z","deletedAt":null}`+"\n")
testBody(t, r, `{"id":1,"speciesId":1,"strainName":"Test Strain Updated","strainType":"Test Type Updated","etymology":"Test Etymology","accessionBanks":"Test Accession Updated","genbankEmblDdb":"Test Genbank Updated","isolatedFrom":null,"createdAt":"0001-01-01T00:00:00Z","updatedAt":"0001-01-01T00:00:00Z","deletedAt":null}`+"\n")
w.WriteHeader(http.StatusOK)
writeJSON(w, want)
})
@ -132,9 +132,8 @@ func TestStrainService_Update(t *testing.T) {
strain := newStrain()
strain.StrainName = "Test Strain Updated"
strain.StrainType = "Test Type Updated"
strain.Etymology = "Test Etymology Updated"
strain.AccessionBanks = "Test Accession Updated"
strain.GenbankEmblDdb = "Test Genbank Updated"
strain.GenbankEmblDdb.String = "Test Genbank Updated"
updated, err := client.Strains.Update(strain.Id, strain)
if err != nil {
t.Errorf("Strains.Update returned error: %v", err)