| @ -0,0 +1,252 @@ | |||
| // Copyright 2013 The go-github AUTHORS. All rights reserved. | |||
| // | |||
| // Use of this source code is governed by a BSD-style | |||
| // license that can be found in the LICENSE file. | |||
| package github | |||
| import ( | |||
| "encoding/json" | |||
| "fmt" | |||
| "net/http" | |||
| "reflect" | |||
| "testing" | |||
| ) | |||
| func TestIssuesService_ListLabels(t *testing.T) { | |||
| setup() | |||
| defer teardown() | |||
| mux.HandleFunc("/repos/o/r/labels", func(w http.ResponseWriter, r *http.Request) { | |||
| testMethod(t, r, "GET") | |||
| fmt.Fprint(w, `[{"name": "a"},{"name": "b"}]`) | |||
| }) | |||
| labels, _, err := client.Issues.ListLabels("o", "r") | |||
| if err != nil { | |||
| t.Errorf("Issues.ListLabels returned error: %v", err) | |||
| } | |||
| want := []Label{Label{Name: "a"}, Label{Name: "b"}} | |||
| if !reflect.DeepEqual(labels, want) { | |||
| t.Errorf("Issues.ListLabels returned %+v, want %+v", labels, want) | |||
| } | |||
| } | |||
| func TestIssuesService_GetLabel(t *testing.T) { | |||
| setup() | |||
| defer teardown() | |||
| mux.HandleFunc("/repos/o/r/labels/n", func(w http.ResponseWriter, r *http.Request) { | |||
| testMethod(t, r, "GET") | |||
| fmt.Fprint(w, `{"url":"u", "name": "n", "color": "c"}`) | |||
| }) | |||
| label, _, err := client.Issues.GetLabel("o", "r", "n") | |||
| if err != nil { | |||
| t.Errorf("Issues.GetLabel returned error: %v", err) | |||
| } | |||
| want := &Label{URL: "u", Name: "n", Color: "c"} | |||
| if !reflect.DeepEqual(label, want) { | |||
| t.Errorf("Issues.GetLabel returned %+v, want %+v", label, want) | |||
| } | |||
| } | |||
| func TestIssuesService_CreateLabel(t *testing.T) { | |||
| setup() | |||
| defer teardown() | |||
| input := &Label{Name: "n"} | |||
| mux.HandleFunc("/repos/o/r/labels", func(w http.ResponseWriter, r *http.Request) { | |||
| v := new(Label) | |||
| json.NewDecoder(r.Body).Decode(v) | |||
| testMethod(t, r, "POST") | |||
| if !reflect.DeepEqual(v, input) { | |||
| t.Errorf("Request body = %+v, want %+v", v, input) | |||
| } | |||
| fmt.Fprint(w, `{"url":"u"}`) | |||
| }) | |||
| label, _, err := client.Issues.CreateLabel("o", "r", input) | |||
| if err != nil { | |||
| t.Errorf("Issues.CreateLabel returned error: %v", err) | |||
| } | |||
| want := &Label{URL: "u"} | |||
| if !reflect.DeepEqual(label, want) { | |||
| t.Errorf("Issues.CreateLabel returned %+v, want %+v", label, want) | |||
| } | |||
| } | |||
| func TestIssuesService_EditLabel(t *testing.T) { | |||
| setup() | |||
| defer teardown() | |||
| input := &Label{Name: "z"} | |||
| mux.HandleFunc("/repos/o/r/labels/n", func(w http.ResponseWriter, r *http.Request) { | |||
| v := new(Label) | |||
| json.NewDecoder(r.Body).Decode(v) | |||
| testMethod(t, r, "PATCH") | |||
| if !reflect.DeepEqual(v, input) { | |||
| t.Errorf("Request body = %+v, want %+v", v, input) | |||
| } | |||
| fmt.Fprint(w, `{"url":"u"}`) | |||
| }) | |||
| label, _, err := client.Issues.EditLabel("o", "r", "n", input) | |||
| if err != nil { | |||
| t.Errorf("Issues.EditLabel returned error: %v", err) | |||
| } | |||
| want := &Label{URL: "u"} | |||
| if !reflect.DeepEqual(label, want) { | |||
| t.Errorf("Issues.EditLabel returned %+v, want %+v", label, want) | |||
| } | |||
| } | |||
| func TestIssuesService_DeleteLabel(t *testing.T) { | |||
| setup() | |||
| defer teardown() | |||
| mux.HandleFunc("/repos/o/r/labels/n", func(w http.ResponseWriter, r *http.Request) { | |||
| testMethod(t, r, "DELETE") | |||
| }) | |||
| _, err := client.Issues.DeleteLabel("o", "r", "n") | |||
| if err != nil { | |||
| t.Errorf("Issues.DeleteLabel returned error: %v", err) | |||
| } | |||
| } | |||
| func TestIssuesService_ListLabelsByIssue(t *testing.T) { | |||
| setup() | |||
| defer teardown() | |||
| mux.HandleFunc("/repos/o/r/issues/1/labels", func(w http.ResponseWriter, r *http.Request) { | |||
| testMethod(t, r, "GET") | |||
| fmt.Fprint(w, `[{"name": "a"},{"name": "b"}]`) | |||
| }) | |||
| labels, _, err := client.Issues.ListLabelsByIssue("o", "r", 1) | |||
| if err != nil { | |||
| t.Errorf("Issues.ListLabelsByIssue returned error: %v", err) | |||
| } | |||
| want := []Label{Label{Name: "a"}, Label{Name: "b"}} | |||
| if !reflect.DeepEqual(labels, want) { | |||
| t.Errorf("Issues.ListLabelsByIssue returned %+v, want %+v", labels, want) | |||
| } | |||
| } | |||
| func TestIssuesService_AddLabelsToIssue(t *testing.T) { | |||
| setup() | |||
| defer teardown() | |||
| input := []string{"a", "b"} | |||
| mux.HandleFunc("/repos/o/r/issues/1/labels", func(w http.ResponseWriter, r *http.Request) { | |||
| v := new([]string) | |||
| json.NewDecoder(r.Body).Decode(v) | |||
| testMethod(t, r, "POST") | |||
| if !reflect.DeepEqual(*v, input) { | |||
| t.Errorf("Request body = %+v, want %+v", v, input) | |||
| } | |||
| fmt.Fprint(w, `[{"url":"u"}]`) | |||
| }) | |||
| labels, _, err := client.Issues.AddLabelsToIssue("o", "r", 1, input) | |||
| if err != nil { | |||
| t.Errorf("Issues.AddLabelsToIssue returned error: %v", err) | |||
| } | |||
| want := []Label{Label{URL: "u"}} | |||
| if !reflect.DeepEqual(labels, want) { | |||
| t.Errorf("Issues.AddLabelsToIssue returned %+v, want %+v", labels, want) | |||
| } | |||
| } | |||
| func TestIssuesService_RemoveLabelForIssue(t *testing.T) { | |||
| setup() | |||
| defer teardown() | |||
| mux.HandleFunc("/repos/o/r/issues/1/labels/l", func(w http.ResponseWriter, r *http.Request) { | |||
| testMethod(t, r, "DELETE") | |||
| }) | |||
| _, err := client.Issues.RemoveLabelForIssue("o", "r", 1, "l") | |||
| if err != nil { | |||
| t.Errorf("Issues.RemoveLabelForIssue returned error: %v", err) | |||
| } | |||
| } | |||
| func TestIssuesService_ReplaceLabelsForIssue(t *testing.T) { | |||
| setup() | |||
| defer teardown() | |||
| input := []string{"a", "b"} | |||
| mux.HandleFunc("/repos/o/r/issues/1/labels", func(w http.ResponseWriter, r *http.Request) { | |||
| v := new([]string) | |||
| json.NewDecoder(r.Body).Decode(v) | |||
| testMethod(t, r, "PUT") | |||
| if !reflect.DeepEqual(*v, input) { | |||
| t.Errorf("Request body = %+v, want %+v", v, input) | |||
| } | |||
| fmt.Fprint(w, `[{"url":"u"}]`) | |||
| }) | |||
| labels, _, err := client.Issues.ReplaceLabelsForIssue("o", "r", 1, input) | |||
| if err != nil { | |||
| t.Errorf("Issues.ReplaceLabelsForIssue returned error: %v", err) | |||
| } | |||
| want := []Label{Label{URL: "u"}} | |||
| if !reflect.DeepEqual(labels, want) { | |||
| t.Errorf("Issues.ReplaceLabelsForIssue returned %+v, want %+v", labels, want) | |||
| } | |||
| } | |||
| func TestIssuesService_RemoveLabelsForIssue(t *testing.T) { | |||
| setup() | |||
| defer teardown() | |||
| mux.HandleFunc("/repos/o/r/issues/1/labels", func(w http.ResponseWriter, r *http.Request) { | |||
| testMethod(t, r, "DELETE") | |||
| }) | |||
| _, err := client.Issues.RemoveLabelsForIssue("o", "r", 1) | |||
| if err != nil { | |||
| t.Errorf("Issues.RemoveLabelsForIssue returned error: %v", err) | |||
| } | |||
| } | |||
| func TestIssuesService_ListLabelsForMilestone(t *testing.T) { | |||
| setup() | |||
| defer teardown() | |||
| mux.HandleFunc("/repos/o/r/milestones/1/labels", func(w http.ResponseWriter, r *http.Request) { | |||
| testMethod(t, r, "GET") | |||
| fmt.Fprint(w, `[{"name": "a"},{"name": "b"}]`) | |||
| }) | |||
| labels, _, err := client.Issues.ListLabelsForMilestone("o", "r", 1) | |||
| if err != nil { | |||
| t.Errorf("Issues.ListLabelsForMilestone returned error: %v", err) | |||
| } | |||
| want := []Label{Label{Name: "a"}, Label{Name: "b"}} | |||
| if !reflect.DeepEqual(labels, want) { | |||
| t.Errorf("Issues.ListLabelsForMilestone returned %+v, want %+v", labels, want) | |||
| } | |||
| } | |||