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  }