1package godo 2 3import ( 4 "fmt" 5 "net/http" 6 "reflect" 7 "testing" 8) 9 10func TestSizes_List(t *testing.T) { 11 setup() 12 defer teardown() 13 14 mux.HandleFunc("/v2/sizes", func(w http.ResponseWriter, r *http.Request) { 15 testMethod(t, r, http.MethodGet) 16 fmt.Fprint(w, `{"sizes":[{"slug":"1"},{"slug":"2"}]}`) 17 }) 18 19 sizes, _, err := client.Sizes.List(ctx, nil) 20 if err != nil { 21 t.Errorf("Sizes.List returned error: %v", err) 22 } 23 24 expected := []Size{{Slug: "1"}, {Slug: "2"}} 25 if !reflect.DeepEqual(sizes, expected) { 26 t.Errorf("Sizes.List returned %+v, expected %+v", sizes, expected) 27 } 28} 29 30func TestSizes_ListSizesMultiplePages(t *testing.T) { 31 setup() 32 defer teardown() 33 34 mux.HandleFunc("/v2/sizes", func(w http.ResponseWriter, r *http.Request) { 35 testMethod(t, r, http.MethodGet) 36 fmt.Fprint(w, `{"sizes": [{"id":1},{"id":2}], "links":{"pages":{"next":"http://example.com/v2/sizes/?page=2"}}}`) 37 }) 38 39 _, resp, err := client.Sizes.List(ctx, nil) 40 if err != nil { 41 t.Fatal(err) 42 } 43 44 checkCurrentPage(t, resp, 1) 45} 46 47func TestSizes_RetrievePageByNumber(t *testing.T) { 48 setup() 49 defer teardown() 50 51 jBlob := ` 52 { 53 "sizes": [{"id":1},{"id":2}], 54 "links":{ 55 "pages":{ 56 "next":"http://example.com/v2/sizes/?page=3", 57 "prev":"http://example.com/v2/sizes/?page=1", 58 "last":"http://example.com/v2/sizes/?page=3", 59 "first":"http://example.com/v2/sizes/?page=1" 60 } 61 } 62 }` 63 64 mux.HandleFunc("/v2/sizes", func(w http.ResponseWriter, r *http.Request) { 65 testMethod(t, r, http.MethodGet) 66 fmt.Fprint(w, jBlob) 67 }) 68 69 opt := &ListOptions{Page: 2} 70 _, resp, err := client.Sizes.List(ctx, opt) 71 if err != nil { 72 t.Fatal(err) 73 } 74 75 checkCurrentPage(t, resp, 2) 76} 77 78func TestSize_String(t *testing.T) { 79 size := &Size{ 80 Slug: "slize", 81 Memory: 123, 82 Vcpus: 456, 83 Disk: 789, 84 PriceMonthly: 123, 85 PriceHourly: 456, 86 Regions: []string{"1", "2"}, 87 Available: true, 88 Transfer: 789, 89 } 90 91 stringified := size.String() 92 expected := `godo.Size{Slug:"slize", Memory:123, Vcpus:456, Disk:789, PriceMonthly:123, PriceHourly:456, Regions:["1" "2"], Available:true, Transfer:789}` 93 if expected != stringified { 94 t.Errorf("Size.String returned %+v, expected %+v", stringified, expected) 95 } 96} 97