Fixed issue with NullString JSON unmarshalling.
Updated Measurements.Notes test.
This commit is contained in:
parent
7da59ffef2
commit
7b7f519c01
4 changed files with 10 additions and 3 deletions
|
@ -14,6 +14,7 @@ func newMeasurement() *models.Measurement {
|
||||||
measurement.CharacteristicId = 3
|
measurement.CharacteristicId = 3
|
||||||
measurement.TextMeasurementTypeId = models.NullInt64{sql.NullInt64{Int64: 4, Valid: false}}
|
measurement.TextMeasurementTypeId = models.NullInt64{sql.NullInt64{Int64: 4, Valid: false}}
|
||||||
measurement.UnitTypeId = models.NullInt64{sql.NullInt64{Int64: 5, Valid: true}}
|
measurement.UnitTypeId = models.NullInt64{sql.NullInt64{Int64: 5, Valid: true}}
|
||||||
|
measurement.Notes = models.NullString{sql.NullString{String: "a note", Valid: true}}
|
||||||
return measurement
|
return measurement
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@ package models
|
||||||
import (
|
import (
|
||||||
"database/sql"
|
"database/sql"
|
||||||
"errors"
|
"errors"
|
||||||
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
|
@ -29,6 +30,10 @@ type Measurement struct {
|
||||||
UpdatedAt time.Time `db:"updated_at" json:"updatedAt"`
|
UpdatedAt time.Time `db:"updated_at" json:"updatedAt"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *Measurement) String() string {
|
||||||
|
return fmt.Sprintf("%v", *m)
|
||||||
|
}
|
||||||
|
|
||||||
func NewMeasurement() *Measurement {
|
func NewMeasurement() *Measurement {
|
||||||
return &Measurement{
|
return &Measurement{
|
||||||
NumValue: NullFloat64{sql.NullFloat64{Float64: 1.23, Valid: true}},
|
NumValue: NullFloat64{sql.NullFloat64{Float64: 1.23, Valid: true}},
|
||||||
|
|
|
@ -15,6 +15,7 @@ func newMeasurement() *Measurement {
|
||||||
measurement.StrainId = 1
|
measurement.StrainId = 1
|
||||||
measurement.CharacteristicId = 1
|
measurement.CharacteristicId = 1
|
||||||
measurement.UnitTypeId = NullInt64{sql.NullInt64{Int64: 1, Valid: true}}
|
measurement.UnitTypeId = NullInt64{sql.NullInt64{Int64: 1, Valid: true}}
|
||||||
|
measurement.Notes = NullString{sql.NullString{String: "a note", Valid: true}}
|
||||||
return measurement
|
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) {
|
mux.HandleFunc(urlPath(t, router.CreateMeasurement, nil), func(w http.ResponseWriter, r *http.Request) {
|
||||||
called = true
|
called = true
|
||||||
testMethod(t, r, "POST")
|
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)
|
w.WriteHeader(http.StatusCreated)
|
||||||
writeJSON(w, want)
|
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) {
|
mux.HandleFunc(urlPath(t, router.UpdateMeasurement, map[string]string{"Id": "1"}), func(w http.ResponseWriter, r *http.Request) {
|
||||||
called = true
|
called = true
|
||||||
testMethod(t, r, "PUT")
|
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)
|
w.WriteHeader(http.StatusOK)
|
||||||
writeJSON(w, want)
|
writeJSON(w, want)
|
||||||
})
|
})
|
||||||
|
|
|
@ -30,7 +30,7 @@ func (s *NullString) UnmarshalJSON(b []byte) error {
|
||||||
var err error
|
var err error
|
||||||
json.Unmarshal(b, &x)
|
json.Unmarshal(b, &x)
|
||||||
switch x.(type) {
|
switch x.(type) {
|
||||||
case float64:
|
case string:
|
||||||
err = json.Unmarshal(b, &s.String)
|
err = json.Unmarshal(b, &s.String)
|
||||||
case map[string]interface{}:
|
case map[string]interface{}:
|
||||||
err = json.Unmarshal(b, &s.NullString)
|
err = json.Unmarshal(b, &s.NullString)
|
||||||
|
|
Reference in a new issue