From 7b7f519c0126800c37d6d26408c1ca7b8aeec8c3 Mon Sep 17 00:00:00 2001 From: Matthew Dillon Date: Thu, 8 Jan 2015 15:51:50 -0900 Subject: [PATCH] Fixed issue with NullString JSON unmarshalling. Updated Measurements.Notes test. --- api/measurements_test.go | 1 + models/measurements.go | 5 +++++ models/measurements_test.go | 5 +++-- models/types.go | 2 +- 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/api/measurements_test.go b/api/measurements_test.go index c0b6b83..4caca5e 100644 --- a/api/measurements_test.go +++ b/api/measurements_test.go @@ -14,6 +14,7 @@ func newMeasurement() *models.Measurement { measurement.CharacteristicId = 3 measurement.TextMeasurementTypeId = models.NullInt64{sql.NullInt64{Int64: 4, Valid: false}} measurement.UnitTypeId = models.NullInt64{sql.NullInt64{Int64: 5, Valid: true}} + measurement.Notes = models.NullString{sql.NullString{String: "a note", Valid: true}} return measurement } diff --git a/models/measurements.go b/models/measurements.go index 0de3160..15325fc 100644 --- a/models/measurements.go +++ b/models/measurements.go @@ -3,6 +3,7 @@ package models import ( "database/sql" "errors" + "fmt" "net/http" "strconv" "time" @@ -29,6 +30,10 @@ type Measurement struct { UpdatedAt time.Time `db:"updated_at" json:"updatedAt"` } +func (m *Measurement) String() string { + return fmt.Sprintf("%v", *m) +} + func NewMeasurement() *Measurement { return &Measurement{ NumValue: NullFloat64{sql.NullFloat64{Float64: 1.23, Valid: true}}, diff --git a/models/measurements_test.go b/models/measurements_test.go index 6e59894..873fad0 100644 --- a/models/measurements_test.go +++ b/models/measurements_test.go @@ -15,6 +15,7 @@ func newMeasurement() *Measurement { measurement.StrainId = 1 measurement.CharacteristicId = 1 measurement.UnitTypeId = NullInt64{sql.NullInt64{Int64: 1, Valid: true}} + measurement.Notes = NullString{sql.NullString{String: "a note", Valid: true}} return measurement } @@ -58,7 +59,7 @@ func TestMeasurementService_Create(t *testing.T) { mux.HandleFunc(urlPath(t, router.CreateMeasurement, nil), func(w http.ResponseWriter, r *http.Request) { called = true testMethod(t, r, "POST") - testBody(t, r, `{"id":1,"strainId":1,"characteristicId":1,"textMeasurementTypeId":null,"txtValue":null,"numValue":1.23,"confidenceInterval":null,"unitTypeId":1,"notes":null,"testMethodId":null,"createdAt":"0001-01-01T00:00:00Z","updatedAt":"0001-01-01T00:00:00Z"}`+"\n") + testBody(t, r, `{"id":1,"strainId":1,"characteristicId":1,"textMeasurementTypeId":null,"txtValue":null,"numValue":1.23,"confidenceInterval":null,"unitTypeId":1,"notes":"a note","testMethodId":null,"createdAt":"0001-01-01T00:00:00Z","updatedAt":"0001-01-01T00:00:00Z"}`+"\n") w.WriteHeader(http.StatusCreated) writeJSON(w, want) @@ -127,7 +128,7 @@ func TestMeasurementService_Update(t *testing.T) { mux.HandleFunc(urlPath(t, router.UpdateMeasurement, map[string]string{"Id": "1"}), func(w http.ResponseWriter, r *http.Request) { called = true testMethod(t, r, "PUT") - testBody(t, r, `{"id":1,"strainId":1,"characteristicId":1,"textMeasurementTypeId":null,"txtValue":null,"numValue":4.56,"confidenceInterval":null,"unitTypeId":1,"notes":null,"testMethodId":null,"createdAt":"0001-01-01T00:00:00Z","updatedAt":"0001-01-01T00:00:00Z"}`+"\n") + testBody(t, r, `{"id":1,"strainId":1,"characteristicId":1,"textMeasurementTypeId":null,"txtValue":null,"numValue":4.56,"confidenceInterval":null,"unitTypeId":1,"notes":"a note","testMethodId":null,"createdAt":"0001-01-01T00:00:00Z","updatedAt":"0001-01-01T00:00:00Z"}`+"\n") w.WriteHeader(http.StatusOK) writeJSON(w, want) }) diff --git a/models/types.go b/models/types.go index 87eb22e..547c11a 100644 --- a/models/types.go +++ b/models/types.go @@ -30,7 +30,7 @@ func (s *NullString) UnmarshalJSON(b []byte) error { var err error json.Unmarshal(b, &x) switch x.(type) { - case float64: + case string: err = json.Unmarshal(b, &s.String) case map[string]interface{}: err = json.Unmarshal(b, &s.NullString)