return field name with error in BuildQueryString
diff --git a/params.go b/params.go
index c01c9e5..c492ec0 100644
--- a/params.go
+++ b/params.go
@@ -87,7 +87,7 @@
// Otherwise, the field is not set.
if len(tags) == 2 && tags[1] == "required" {
// And the field is required. Return an error.
- return nil, fmt.Errorf("Required query parameter not set.")
+ return nil, fmt.Errorf("Required query parameter [%s] not set.", f.Name)
}
}
}
diff --git a/params_test.go b/params_test.go
index 112850d..03eaefc 100644
--- a/params_test.go
+++ b/params_test.go
@@ -33,10 +33,27 @@
opts := Opts{J: 2, R: "red"}
- actual, err := BuildQueryString(opts)
+ actual, err := BuildQueryString(&opts)
if err != nil {
t.Errorf("Error building query string: %v", err)
}
th.CheckDeepEquals(t, actual, expected)
}
+
+func TestBuildQueryStringWithoutRequiredFieldSet(t *testing.T) {
+ type Opts struct {
+ J int `q:"j"`
+ R string `q:"r,required"`
+ C bool
+ }
+
+ opts := Opts{J: 2, C: true}
+
+ _, err := BuildQueryString(&opts)
+ if err == nil {
+ t.Error("Unexpected result: There should be an error thrown when a required field isn't set.")
+ }
+
+ t.Log(err)
+}