From f48ee87ccd00df23e7f597cc2f962cbf295233ee Mon Sep 17 00:00:00 2001 From: Matthew Dillon Date: Fri, 31 Oct 2014 09:38:49 -0800 Subject: [PATCH] NullTime in normalizeTime & tests --- datastore/datastore_test.go | 20 +++++++++++++++++--- datastore/genera_test.go | 6 ++++-- datastore/species_test.go | 6 ++++-- datastore/strains_test.go | 6 ++++-- models/client_test.go | 16 ++++++++++++++-- models/genera_test.go | 4 ++-- models/species_test.go | 4 ++-- models/strains_test.go | 4 ++-- 8 files changed, 49 insertions(+), 17 deletions(-) diff --git a/datastore/datastore_test.go b/datastore/datastore_test.go index 1e952a3..f4f75a4 100644 --- a/datastore/datastore_test.go +++ b/datastore/datastore_test.go @@ -1,9 +1,23 @@ package datastore -import "time" +import ( + "fmt" + "time" -func normalizeTime(t ...*time.Time) { + "github.com/lib/pq" +) + +func normalizeTime(t ...interface{}) { for _, v := range t { - *v = v.In(time.UTC) + switch u := v.(type) { + default: + fmt.Printf("unexpected type %T", u) + case *time.Time: + x, _ := v.(*time.Time) + *x = x.In(time.UTC) + case *pq.NullTime: + x, _ := v.(*pq.NullTime) + *x = pq.NullTime{Time: x.Time.In(time.UTC), Valid: x.Valid} + } } } diff --git a/datastore/genera_test.go b/datastore/genera_test.go index aab3229..b73e998 100644 --- a/datastore/genera_test.go +++ b/datastore/genera_test.go @@ -36,6 +36,7 @@ func TestGeneraStore_Get_db(t *testing.T) { } normalizeTime(&want.CreatedAt, &want.UpdatedAt, &want.DeletedAt) + normalizeTime(&genus.CreatedAt, &genus.UpdatedAt, &genus.DeletedAt) if !reflect.DeepEqual(genus, want) { t.Errorf("got genus %+v, want %+v", genus, want) } @@ -74,8 +75,9 @@ func TestGeneraStore_List_db(t *testing.T) { t.Fatal(err) } - for _, g := range want { - normalizeTime(&g.CreatedAt, &g.UpdatedAt, &g.DeletedAt) + for i := range want { + normalizeTime(&want[i].CreatedAt, &want[i].UpdatedAt, &want[i].DeletedAt) + normalizeTime(&genera[i].CreatedAt, &genera[i].UpdatedAt, &genera[i].DeletedAt) } if !reflect.DeepEqual(genera, want) { t.Errorf("got genera %+v, want %+v", genera, want) diff --git a/datastore/species_test.go b/datastore/species_test.go index 3748a14..a617cf0 100644 --- a/datastore/species_test.go +++ b/datastore/species_test.go @@ -38,6 +38,7 @@ func TestSpeciesStore_Get_db(t *testing.T) { } normalizeTime(&want.CreatedAt, &want.UpdatedAt, &want.DeletedAt) + normalizeTime(&species.CreatedAt, &species.UpdatedAt, &species.DeletedAt) if !reflect.DeepEqual(species, want) { t.Errorf("got species %+v, want %+v", species, want) } @@ -77,8 +78,9 @@ func TestSpeciesStore_List_db(t *testing.T) { t.Fatal(err) } - for _, g := range want { - normalizeTime(&g.CreatedAt, &g.UpdatedAt, &g.DeletedAt) + for i := range want { + normalizeTime(&want[i].CreatedAt, &want[i].UpdatedAt, &want[i].DeletedAt) + normalizeTime(&species[i].CreatedAt, &species[i].UpdatedAt, &species[i].DeletedAt) } if !reflect.DeepEqual(species, want) { t.Errorf("got species %+v, want %+v", species, want) diff --git a/datastore/strains_test.go b/datastore/strains_test.go index 7209011..1a93edc 100644 --- a/datastore/strains_test.go +++ b/datastore/strains_test.go @@ -40,6 +40,7 @@ func TestStrainsStore_Get_db(t *testing.T) { } normalizeTime(&want.CreatedAt, &want.UpdatedAt, &want.DeletedAt) + normalizeTime(&strain.CreatedAt, &strain.UpdatedAt, &strain.DeletedAt) if !reflect.DeepEqual(strain, want) { t.Errorf("got strain %+v, want %+v", strain, want) @@ -80,8 +81,9 @@ func TestStrainsStore_List_db(t *testing.T) { t.Fatal(err) } - for _, g := range want { - normalizeTime(&g.CreatedAt, &g.UpdatedAt, &g.DeletedAt) + for i := range want { + normalizeTime(&want[i].CreatedAt, &want[i].UpdatedAt, &want[i].DeletedAt) + normalizeTime(&strains[i].CreatedAt, &strains[i].UpdatedAt, &strains[i].DeletedAt) } if !reflect.DeepEqual(strains, want) { t.Errorf("got strains %+v, want %+v", strains, want) diff --git a/models/client_test.go b/models/client_test.go index f4db754..6ad7cbc 100644 --- a/models/client_test.go +++ b/models/client_test.go @@ -2,6 +2,7 @@ package models import ( "encoding/json" + "fmt" "io/ioutil" "net/http" "net/http/httptest" @@ -9,6 +10,8 @@ import ( "reflect" "testing" "time" + + "github.com/lib/pq" ) var ( @@ -88,8 +91,17 @@ func testBody(t *testing.T, r *http.Request, want string) { } } -func normalizeTime(t ...*time.Time) { +func normalizeTime(t ...interface{}) { for _, v := range t { - *v = v.In(time.UTC) + switch u := v.(type) { + default: + fmt.Printf("unexpected type %T", u) + case *time.Time: + x, _ := v.(*time.Time) + *x = x.In(time.UTC) + case *pq.NullTime: + x, _ := v.(*pq.NullTime) + *x = pq.NullTime{Time: x.Time.In(time.UTC), Valid: x.Valid} + } } } diff --git a/models/genera_test.go b/models/genera_test.go index 8661ee8..21efc97 100644 --- a/models/genera_test.go +++ b/models/genera_test.go @@ -54,7 +54,7 @@ func TestGeneraService_Create(t *testing.T) { mux.HandleFunc(urlPath(t, router.CreateGenus, nil), func(w http.ResponseWriter, r *http.Request) { called = true testMethod(t, r, "POST") - testBody(t, r, `{"id":1,"genus_name":"Test Genus","created_at":"0001-01-01T00:00:00Z","updated_at":"0001-01-01T00:00:00Z","deleted_at":"0001-01-01T00:00:00Z"}`+"\n") + testBody(t, r, `{"id":1,"genus_name":"Test Genus","created_at":"0001-01-01T00:00:00Z","updated_at":"0001-01-01T00:00:00Z","deleted_at":{"Time":"0001-01-01T00:00:00Z","Valid":false}}`+"\n") w.WriteHeader(http.StatusCreated) writeJSON(w, want) @@ -124,7 +124,7 @@ func TestGeneraService_Update(t *testing.T) { mux.HandleFunc(urlPath(t, router.UpdateGenus, map[string]string{"Id": "1"}), func(w http.ResponseWriter, r *http.Request) { called = true testMethod(t, r, "PUT") - testBody(t, r, `{"id":1,"genus_name":"Test Genus Updated","created_at":"0001-01-01T00:00:00Z","updated_at":"0001-01-01T00:00:00Z","deleted_at":"0001-01-01T00:00:00Z"}`+"\n") + testBody(t, r, `{"id":1,"genus_name":"Test Genus Updated","created_at":"0001-01-01T00:00:00Z","updated_at":"0001-01-01T00:00:00Z","deleted_at":{"Time":"0001-01-01T00:00:00Z","Valid":false}}`+"\n") w.WriteHeader(http.StatusOK) writeJSON(w, want) diff --git a/models/species_test.go b/models/species_test.go index f5c6d0d..b6639f9 100644 --- a/models/species_test.go +++ b/models/species_test.go @@ -55,7 +55,7 @@ func TestSpeciesService_Create(t *testing.T) { mux.HandleFunc(urlPath(t, router.CreateSpecies, nil), func(w http.ResponseWriter, r *http.Request) { called = true testMethod(t, r, "POST") - testBody(t, r, `{"id":1,"genus_id":1,"species_name":"Test Species","created_at":"0001-01-01T00:00:00Z","updated_at":"0001-01-01T00:00:00Z","deleted_at":"0001-01-01T00:00:00Z"}`+"\n") + testBody(t, r, `{"id":1,"genus_id":1,"species_name":"Test Species","created_at":"0001-01-01T00:00:00Z","updated_at":"0001-01-01T00:00:00Z","deleted_at":{"Time":"0001-01-01T00:00:00Z","Valid":false}}`+"\n") w.WriteHeader(http.StatusCreated) writeJSON(w, want) @@ -124,7 +124,7 @@ func TestSpeciesService_Update(t *testing.T) { mux.HandleFunc(urlPath(t, router.UpdateSpecies, map[string]string{"Id": "1"}), func(w http.ResponseWriter, r *http.Request) { called = true testMethod(t, r, "PUT") - testBody(t, r, `{"id":1,"genus_id":1,"species_name":"Test Species Updated","created_at":"0001-01-01T00:00:00Z","updated_at":"0001-01-01T00:00:00Z","deleted_at":"0001-01-01T00:00:00Z"}`+"\n") + testBody(t, r, `{"id":1,"genus_id":1,"species_name":"Test Species Updated","created_at":"0001-01-01T00:00:00Z","updated_at":"0001-01-01T00:00:00Z","deleted_at":{"Time":"0001-01-01T00:00:00Z","Valid":false}}`+"\n") w.WriteHeader(http.StatusOK) writeJSON(w, want) diff --git a/models/strains_test.go b/models/strains_test.go index 772e849..0ccf9b7 100644 --- a/models/strains_test.go +++ b/models/strains_test.go @@ -55,7 +55,7 @@ func TestStrainService_Create(t *testing.T) { mux.HandleFunc(urlPath(t, router.CreateStrain, nil), func(w http.ResponseWriter, r *http.Request) { called = true testMethod(t, r, "POST") - testBody(t, r, `{"id":1,"species_id":1,"strain_name":"Test Strain","strain_type":"Test Type","etymology":"Test Etymology","accession_banks":"Test Accession","genbank_embl_ddb":"Test Genbank","created_at":"0001-01-01T00:00:00Z","updated_at":"0001-01-01T00:00:00Z","deleted_at":"0001-01-01T00:00:00Z"}`+"\n") + testBody(t, r, `{"id":1,"species_id":1,"strain_name":"Test Strain","strain_type":"Test Type","etymology":"Test Etymology","accession_banks":"Test Accession","genbank_embl_ddb":"Test Genbank","created_at":"0001-01-01T00:00:00Z","updated_at":"0001-01-01T00:00:00Z","deleted_at":{"Time":"0001-01-01T00:00:00Z","Valid":false}}`+"\n") w.WriteHeader(http.StatusCreated) writeJSON(w, want) @@ -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,"species_id":1,"strain_name":"Test Strain Updated","strain_type":"Test Type Updated","etymology":"Test Etymology Updated","accession_banks":"Test Accession Updated","genbank_embl_ddb":"Test Genbank Updated","created_at":"0001-01-01T00:00:00Z","updated_at":"0001-01-01T00:00:00Z","deleted_at":"0001-01-01T00:00:00Z"}`+"\n") + testBody(t, r, `{"id":1,"species_id":1,"strain_name":"Test Strain Updated","strain_type":"Test Type Updated","etymology":"Test Etymology Updated","accession_banks":"Test Accession Updated","genbank_embl_ddb":"Test Genbank Updated","created_at":"0001-01-01T00:00:00Z","updated_at":"0001-01-01T00:00:00Z","deleted_at":{"Time":"0001-01-01T00:00:00Z","Valid":false}}`+"\n") w.WriteHeader(http.StatusOK) writeJSON(w, want) })