blob: a9919d25b18d117731bf2732fa4f1befafa90358 [file] [log] [blame]
Jon Perritt255b6f82014-09-30 16:07:50 -05001package gophercloud
2
3import (
4 "net/url"
5 "testing"
6
7 th "github.com/rackspace/gophercloud/testhelper"
8)
9
Jon Perritt1e17aec2014-10-06 14:33:34 -050010func TestMaybeString(t *testing.T) {
11 testString := ""
12 var expected *string
13 actual := MaybeString(testString)
14 th.CheckDeepEquals(t, actual, expected)
15
16 testString = "carol"
17 expected = &testString
18 actual = MaybeString(testString)
Jon Perritt255b6f82014-09-30 16:07:50 -050019 th.CheckDeepEquals(t, actual, expected)
20}
21
Jon Perritt1e17aec2014-10-06 14:33:34 -050022func TestMaybeInt(t *testing.T) {
23 testInt := 0
24 var expected *int
25 actual := MaybeInt(testInt)
26 th.CheckDeepEquals(t, actual, expected)
27
28 testInt = 4
29 expected = &testInt
30 actual = MaybeInt(testInt)
Jon Perritt255b6f82014-09-30 16:07:50 -050031 th.CheckDeepEquals(t, actual, expected)
32}
33
34func TestBuildQueryStringWithPointerToStruct(t *testing.T) {
35 expected := &url.URL{
36 RawQuery: "j=2&r=red",
37 }
38
39 type Opts struct {
40 J int `q:"j"`
41 R string `q:"r"`
42 C bool
43 }
44
45 opts := Opts{J: 2, R: "red"}
46
Jon Perrittdb00ad12014-09-30 16:29:50 -050047 actual, err := BuildQueryString(&opts)
Jon Perritt255b6f82014-09-30 16:07:50 -050048 if err != nil {
49 t.Errorf("Error building query string: %v", err)
50 }
51
52 th.CheckDeepEquals(t, actual, expected)
53}
Jon Perrittdb00ad12014-09-30 16:29:50 -050054
55func TestBuildQueryStringWithoutRequiredFieldSet(t *testing.T) {
56 type Opts struct {
57 J int `q:"j"`
58 R string `q:"r,required"`
59 C bool
60 }
61
62 opts := Opts{J: 2, C: true}
63
64 _, err := BuildQueryString(&opts)
65 if err == nil {
66 t.Error("Unexpected result: There should be an error thrown when a required field isn't set.")
67 }
68
69 t.Log(err)
70}