github.com/google/go-github/v33@v33.0.0/github/repos_comments_test.go (about) 1 // Copyright 2013 The go-github AUTHORS. All rights reserved. 2 // 3 // Use of this source code is governed by a BSD-style 4 // license that can be found in the LICENSE file. 5 6 package github 7 8 import ( 9 "context" 10 "encoding/json" 11 "fmt" 12 "net/http" 13 "reflect" 14 "testing" 15 ) 16 17 func TestRepositoriesService_ListComments(t *testing.T) { 18 client, mux, _, teardown := setup() 19 defer teardown() 20 21 mux.HandleFunc("/repos/o/r/comments", func(w http.ResponseWriter, r *http.Request) { 22 testMethod(t, r, "GET") 23 testHeader(t, r, "Accept", mediaTypeReactionsPreview) 24 testFormValues(t, r, values{"page": "2"}) 25 fmt.Fprint(w, `[{"id":1}, {"id":2}]`) 26 }) 27 28 opt := &ListOptions{Page: 2} 29 comments, _, err := client.Repositories.ListComments(context.Background(), "o", "r", opt) 30 if err != nil { 31 t.Errorf("Repositories.ListComments returned error: %v", err) 32 } 33 34 want := []*RepositoryComment{{ID: Int64(1)}, {ID: Int64(2)}} 35 if !reflect.DeepEqual(comments, want) { 36 t.Errorf("Repositories.ListComments returned %+v, want %+v", comments, want) 37 } 38 } 39 40 func TestRepositoriesService_ListComments_invalidOwner(t *testing.T) { 41 client, _, _, teardown := setup() 42 defer teardown() 43 44 _, _, err := client.Repositories.ListComments(context.Background(), "%", "%", nil) 45 testURLParseError(t, err) 46 } 47 48 func TestRepositoriesService_ListCommitComments(t *testing.T) { 49 client, mux, _, teardown := setup() 50 defer teardown() 51 52 mux.HandleFunc("/repos/o/r/commits/s/comments", func(w http.ResponseWriter, r *http.Request) { 53 testMethod(t, r, "GET") 54 testHeader(t, r, "Accept", mediaTypeReactionsPreview) 55 testFormValues(t, r, values{"page": "2"}) 56 fmt.Fprint(w, `[{"id":1}, {"id":2}]`) 57 }) 58 59 opt := &ListOptions{Page: 2} 60 comments, _, err := client.Repositories.ListCommitComments(context.Background(), "o", "r", "s", opt) 61 if err != nil { 62 t.Errorf("Repositories.ListCommitComments returned error: %v", err) 63 } 64 65 want := []*RepositoryComment{{ID: Int64(1)}, {ID: Int64(2)}} 66 if !reflect.DeepEqual(comments, want) { 67 t.Errorf("Repositories.ListCommitComments returned %+v, want %+v", comments, want) 68 } 69 } 70 71 func TestRepositoriesService_ListCommitComments_invalidOwner(t *testing.T) { 72 client, _, _, teardown := setup() 73 defer teardown() 74 75 _, _, err := client.Repositories.ListCommitComments(context.Background(), "%", "%", "%", nil) 76 testURLParseError(t, err) 77 } 78 79 func TestRepositoriesService_CreateComment(t *testing.T) { 80 client, mux, _, teardown := setup() 81 defer teardown() 82 83 input := &RepositoryComment{Body: String("b")} 84 85 mux.HandleFunc("/repos/o/r/commits/s/comments", func(w http.ResponseWriter, r *http.Request) { 86 v := new(RepositoryComment) 87 json.NewDecoder(r.Body).Decode(v) 88 89 testMethod(t, r, "POST") 90 if !reflect.DeepEqual(v, input) { 91 t.Errorf("Request body = %+v, want %+v", v, input) 92 } 93 94 fmt.Fprint(w, `{"id":1}`) 95 }) 96 97 comment, _, err := client.Repositories.CreateComment(context.Background(), "o", "r", "s", input) 98 if err != nil { 99 t.Errorf("Repositories.CreateComment returned error: %v", err) 100 } 101 102 want := &RepositoryComment{ID: Int64(1)} 103 if !reflect.DeepEqual(comment, want) { 104 t.Errorf("Repositories.CreateComment returned %+v, want %+v", comment, want) 105 } 106 } 107 108 func TestRepositoriesService_CreateComment_invalidOwner(t *testing.T) { 109 client, _, _, teardown := setup() 110 defer teardown() 111 112 _, _, err := client.Repositories.CreateComment(context.Background(), "%", "%", "%", nil) 113 testURLParseError(t, err) 114 } 115 116 func TestRepositoriesService_GetComment(t *testing.T) { 117 client, mux, _, teardown := setup() 118 defer teardown() 119 120 mux.HandleFunc("/repos/o/r/comments/1", func(w http.ResponseWriter, r *http.Request) { 121 testMethod(t, r, "GET") 122 testHeader(t, r, "Accept", mediaTypeReactionsPreview) 123 fmt.Fprint(w, `{"id":1}`) 124 }) 125 126 comment, _, err := client.Repositories.GetComment(context.Background(), "o", "r", 1) 127 if err != nil { 128 t.Errorf("Repositories.GetComment returned error: %v", err) 129 } 130 131 want := &RepositoryComment{ID: Int64(1)} 132 if !reflect.DeepEqual(comment, want) { 133 t.Errorf("Repositories.GetComment returned %+v, want %+v", comment, want) 134 } 135 } 136 137 func TestRepositoriesService_GetComment_invalidOwner(t *testing.T) { 138 client, _, _, teardown := setup() 139 defer teardown() 140 141 _, _, err := client.Repositories.GetComment(context.Background(), "%", "%", 1) 142 testURLParseError(t, err) 143 } 144 145 func TestRepositoriesService_UpdateComment(t *testing.T) { 146 client, mux, _, teardown := setup() 147 defer teardown() 148 149 input := &RepositoryComment{Body: String("b")} 150 151 mux.HandleFunc("/repos/o/r/comments/1", func(w http.ResponseWriter, r *http.Request) { 152 v := new(RepositoryComment) 153 json.NewDecoder(r.Body).Decode(v) 154 155 testMethod(t, r, "PATCH") 156 if !reflect.DeepEqual(v, input) { 157 t.Errorf("Request body = %+v, want %+v", v, input) 158 } 159 160 fmt.Fprint(w, `{"id":1}`) 161 }) 162 163 comment, _, err := client.Repositories.UpdateComment(context.Background(), "o", "r", 1, input) 164 if err != nil { 165 t.Errorf("Repositories.UpdateComment returned error: %v", err) 166 } 167 168 want := &RepositoryComment{ID: Int64(1)} 169 if !reflect.DeepEqual(comment, want) { 170 t.Errorf("Repositories.UpdateComment returned %+v, want %+v", comment, want) 171 } 172 } 173 174 func TestRepositoriesService_UpdateComment_invalidOwner(t *testing.T) { 175 client, _, _, teardown := setup() 176 defer teardown() 177 178 _, _, err := client.Repositories.UpdateComment(context.Background(), "%", "%", 1, nil) 179 testURLParseError(t, err) 180 } 181 182 func TestRepositoriesService_DeleteComment(t *testing.T) { 183 client, mux, _, teardown := setup() 184 defer teardown() 185 186 mux.HandleFunc("/repos/o/r/comments/1", func(w http.ResponseWriter, r *http.Request) { 187 testMethod(t, r, "DELETE") 188 }) 189 190 _, err := client.Repositories.DeleteComment(context.Background(), "o", "r", 1) 191 if err != nil { 192 t.Errorf("Repositories.DeleteComment returned error: %v", err) 193 } 194 } 195 196 func TestRepositoriesService_DeleteComment_invalidOwner(t *testing.T) { 197 client, _, _, teardown := setup() 198 defer teardown() 199 200 _, err := client.Repositories.DeleteComment(context.Background(), "%", "%", 1) 201 testURLParseError(t, err) 202 }