github.com/google/go-github/v33@v33.0.0/github/users_projects_test.go (about) 1 // Copyright 2019 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 TestUsersService_ListProjects(t *testing.T) { 18 client, mux, _, teardown := setup() 19 defer teardown() 20 21 mux.HandleFunc("/users/u/projects", func(w http.ResponseWriter, r *http.Request) { 22 testMethod(t, r, "GET") 23 testHeader(t, r, "Accept", mediaTypeProjectsPreview) 24 testFormValues(t, r, values{"state": "open", "page": "2"}) 25 fmt.Fprint(w, `[{"id":1}]`) 26 }) 27 28 opt := &ProjectListOptions{State: "open", ListOptions: ListOptions{Page: 2}} 29 projects, _, err := client.Users.ListProjects(context.Background(), "u", opt) 30 if err != nil { 31 t.Errorf("Users.ListProjects returned error: %v", err) 32 } 33 34 want := []*Project{{ID: Int64(1)}} 35 if !reflect.DeepEqual(projects, want) { 36 t.Errorf("Users.ListProjects returned %+v, want %+v", projects, want) 37 } 38 } 39 40 func TestUsersService_CreateProject(t *testing.T) { 41 client, mux, _, teardown := setup() 42 defer teardown() 43 44 input := &CreateUserProjectOptions{Name: "Project Name", Body: String("Project body.")} 45 46 mux.HandleFunc("/user/projects", func(w http.ResponseWriter, r *http.Request) { 47 testMethod(t, r, "POST") 48 testHeader(t, r, "Accept", mediaTypeProjectsPreview) 49 50 v := &CreateUserProjectOptions{} 51 json.NewDecoder(r.Body).Decode(v) 52 if !reflect.DeepEqual(v, input) { 53 t.Errorf("Request body = %+v, want %+v", v, input) 54 } 55 56 fmt.Fprint(w, `{"id":1}`) 57 }) 58 59 project, _, err := client.Users.CreateProject(context.Background(), input) 60 if err != nil { 61 t.Errorf("Users.CreateProject returned error: %v", err) 62 } 63 64 want := &Project{ID: Int64(1)} 65 if !reflect.DeepEqual(project, want) { 66 t.Errorf("Users.CreateProject returned %+v, want %+v", project, want) 67 } 68 }