package godo import ( "fmt" "net/http" "reflect" "testing" ) func TestRegions_List(t *testing.T) { setup() defer teardown() mux.HandleFunc("/v2/regions", func(w http.ResponseWriter, r *http.Request) { testMethod(t, r, http.MethodGet) fmt.Fprint(w, `{ "regions": [ { "slug": "1" }, { "slug": "2" } ], "meta": { "total": 2 } }`) }) regions, resp, err := client.Regions.List(ctx, nil) if err != nil { t.Errorf("Regions.List returned error: %v", err) } expectedRegions := []Region{{Slug: "1"}, {Slug: "2"}} if !reflect.DeepEqual(regions, expectedRegions) { t.Errorf("Regions.List returned regions %+v, expected %+v", regions, expectedRegions) } expectedMeta := &Meta{Total: 2} if !reflect.DeepEqual(resp.Meta, expectedMeta) { t.Errorf("Regions.List returned meta %+v, expected %+v", resp.Meta, expectedMeta) } } func TestRegions_ListRegionsMultiplePages(t *testing.T) { setup() defer teardown() mux.HandleFunc("/v2/regions", func(w http.ResponseWriter, r *http.Request) { testMethod(t, r, http.MethodGet) fmt.Fprint(w, `{"regions": [{"id":1},{"id":2}], "links":[]}`) }) _, _, err := client.Regions.List(ctx, nil) if err != nil { t.Fatal(err) } } func TestRegions_RetrievePageByNumber(t *testing.T) { setup() defer teardown() jBlob := ` { "regions": [{"id":1},{"id":2}], "links":[] }` mux.HandleFunc("/v2/regions", func(w http.ResponseWriter, r *http.Request) { testMethod(t, r, http.MethodGet) fmt.Fprint(w, jBlob) }) opt := &ListOptions{Page: 2} _, _, err := client.Regions.List(ctx, opt) if err != nil { t.Fatal(err) } } func TestRegion_String(t *testing.T) { region := &Region{ Slug: "region", Name: "Region", Sizes: []string{"1", "2"}, Available: true, } stringified := region.String() expected := `godo.Region{Slug:"region", Name:"Region", Sizes:["1" "2"], Available:true}` if expected != stringified { t.Errorf("Region.String returned %+v, expected %+v", stringified, expected) } }