diff --git a/command/issue_test.go b/command/issue_test.go index ab1b43c29..dd9581984 100644 --- a/command/issue_test.go +++ b/command/issue_test.go @@ -129,149 +129,6 @@ Showing 3 of 3 issues in OWNER/REPO } } -func TestIssueList_limit(t *testing.T) { - initBlankContext("OWNER/REPO", "master") - http := initFakeHTTP() - http.StubRepoResponse("OWNER", "REPO") - - jsonFile, _ := os.Open("../test/fixtures/issueList.json") - defer jsonFile.Close() - http.StubResponse(200, jsonFile) - - output, err := RunCommand(issueListCmd, "issue list -L 10") - if err != nil { - t.Fatal(err) - } - - eq(t, output.Stderr(), ` -Showing 3 of 3 issues in OWNER/REPO - -`) -} - -func TestIssueList_smallLimit(t *testing.T) { - initBlankContext("OWNER/REPO", "master") - http := initFakeHTTP() - http.StubRepoResponse("OWNER", "REPO") - - jsonFile, _ := os.Open("../test/fixtures/issueList.json") - defer jsonFile.Close() - http.StubResponse(200, jsonFile) - - output, err := RunCommand(issueListCmd, "issue list -L 2") - if err != nil { - t.Fatal(err) - } - - eq(t, output.Stderr(), ` -Showing 2 of 3 issues in OWNER/REPO - -`) -} - -func TestIssueList_multipleFilterWithLimit(t *testing.T) { - initBlankContext("OWNER/REPO", "master") - http := initFakeHTTP() - http.StubRepoResponse("OWNER", "REPO") - - jsonFile, _ := os.Open("../test/fixtures/issueList.json") - defer jsonFile.Close() - http.StubResponse(200, jsonFile) - - output, err := RunCommand(issueListCmd, "issue list -s open -l web -L 2") - if err != nil { - t.Fatal(err) - } - - eq(t, output.Stderr(), ` -Showing 2 of 3 issues in OWNER/REPO that match your search - -`) -} - -func TestIssueList_multipleFilterWithoutLimit(t *testing.T) { - initBlankContext("OWNER/REPO", "master") - http := initFakeHTTP() - http.StubRepoResponse("OWNER", "REPO") - - jsonFile, _ := os.Open("../test/fixtures/issueList.json") - defer jsonFile.Close() - http.StubResponse(200, jsonFile) - - output, err := RunCommand(issueListCmd, "issue list -s open -l web") - if err != nil { - t.Fatal(err) - } - - eq(t, output.Stderr(), ` -Showing 3 of 3 issues in OWNER/REPO that match your search - -`) -} - -func TestIssueList_singleFilter(t *testing.T) { - initBlankContext("OWNER/REPO", "master") - http := initFakeHTTP() - http.StubRepoResponse("OWNER", "REPO") - - jsonFile, _ := os.Open("../test/fixtures/issueList.json") - defer jsonFile.Close() - http.StubResponse(200, jsonFile) - - output, err := RunCommand(issueListCmd, "issue list -s open") - if err != nil { - t.Fatal(err) - } - - eq(t, output.Stderr(), ` -Showing 3 of 3 issues in OWNER/REPO that match your search - -`) -} - -func TestIssueList_singleResultWithFilter(t *testing.T) { - initBlankContext("OWNER/REPO", "master") - http := initFakeHTTP() - http.StubRepoResponse("OWNER", "REPO") - - respBody := bytes.NewBufferString(`{ - "data": { - "repository": { - "hasIssuesEnabled": true, - "issues": { - "totalCount": 1, - "nodes": [ - { - "number": 1, - "title": "number won", - "url": "https://wow.com", - "labels": { - "nodes": [ - { - "name": "label" - } - ], - "totalCount": 1 - } - } - ] - } - } - } - }`) - http.StubResponse(200, respBody) - - output, err := RunCommand(issueListCmd, "issue list -s open") - if err != nil { - t.Fatal(err) - } - - eq(t, output.Stderr(), ` -Showing 1 of 1 issue in OWNER/REPO that matches your search - -`) -} - func TestIssueList_withFlags(t *testing.T) { initBlankContext("OWNER/REPO", "master") http := initFakeHTTP() @@ -702,3 +559,114 @@ func TestIssueCreate_webTitleBody(t *testing.T) { eq(t, url, "https://github.com/OWNER/REPO/issues/new?title=mytitle&body=mybody") eq(t, output.String(), "Opening github.com/OWNER/REPO/issues/new in your browser.\n") } + +func Test_listHeader(t *testing.T) { + type args struct { + repoName string + itemName string + matchCount int + totalMatchCount int + hasFilters bool + } + tests := []struct { + name string + args args + want string + }{ + { + name: "no results", + args: args{ + repoName: "REPO", + itemName: "table", + matchCount: 0, + totalMatchCount: 0, + hasFilters: false, + }, + want: "There are no open tables in REPO", + }, + { + name: "no matches after filters", + args: args{ + repoName: "REPO", + itemName: "Luftballon", + matchCount: 0, + totalMatchCount: 0, + hasFilters: true, + }, + want: "No Luftballons match your search in REPO", + }, + { + name: "one result", + args: args{ + repoName: "REPO", + itemName: "genie", + matchCount: 1, + totalMatchCount: 23, + hasFilters: false, + }, + want: "Showing 1 of 23 genies in REPO", + }, + { + name: "one result after filters", + args: args{ + repoName: "REPO", + itemName: "tiny cup", + matchCount: 1, + totalMatchCount: 23, + hasFilters: true, + }, + want: "Showing 1 of 23 tiny cups in REPO that match your search", + }, + { + name: "one result in total", + args: args{ + repoName: "REPO", + itemName: "chip", + matchCount: 1, + totalMatchCount: 1, + hasFilters: false, + }, + want: "Showing 1 of 1 chip in REPO", + }, + { + name: "one result in total after filters", + args: args{ + repoName: "REPO", + itemName: "spicy noodle", + matchCount: 1, + totalMatchCount: 1, + hasFilters: true, + }, + want: "Showing 1 of 1 spicy noodle in REPO that matches your search", + }, + { + name: "multiple results", + args: args{ + repoName: "REPO", + itemName: "plant", + matchCount: 4, + totalMatchCount: 23, + hasFilters: false, + }, + want: "Showing 4 of 23 plants in REPO", + }, + { + name: "multiple results after filters", + args: args{ + repoName: "REPO", + itemName: "boomerang", + matchCount: 4, + totalMatchCount: 23, + hasFilters: true, + }, + want: "Showing 4 of 23 boomerangs in REPO that match your search", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := listHeader(tt.args.repoName, tt.args.itemName, tt.args.matchCount, tt.args.totalMatchCount, tt.args.hasFilters); got != tt.want { + t.Errorf("listHeader() = %v, want %v", got, tt.want) + } + }) + } +} diff --git a/command/pr_test.go b/command/pr_test.go index 5fccd7583..6ed9106ea 100644 --- a/command/pr_test.go +++ b/command/pr_test.go @@ -211,147 +211,6 @@ Showing 3 of 3 pull requests in OWNER/REPO `) } -func TestPRList_limit(t *testing.T) { - initBlankContext("OWNER/REPO", "master") - http := initFakeHTTP() - http.StubRepoResponse("OWNER", "REPO") - - jsonFile, _ := os.Open("../test/fixtures/prList.json") - defer jsonFile.Close() - http.StubResponse(200, jsonFile) - - output, err := RunCommand(prListCmd, "pr list -L 10") - if err != nil { - t.Fatal(err) - } - - eq(t, output.Stderr(), ` -Showing 3 of 3 pull requests in OWNER/REPO - -`) -} - -func TestPRList_smallLimit(t *testing.T) { - initBlankContext("OWNER/REPO", "master") - http := initFakeHTTP() - http.StubRepoResponse("OWNER", "REPO") - - jsonFile, _ := os.Open("../test/fixtures/prList.json") - defer jsonFile.Close() - http.StubResponse(200, jsonFile) - - output, err := RunCommand(prListCmd, "pr list -L 2") - if err != nil { - t.Fatal(err) - } - - eq(t, output.Stderr(), ` -Showing 2 of 3 pull requests in OWNER/REPO - -`) -} - -func TestPRList_multipleFilterWithLimit(t *testing.T) { - initBlankContext("OWNER/REPO", "master") - http := initFakeHTTP() - http.StubRepoResponse("OWNER", "REPO") - - jsonFile, _ := os.Open("../test/fixtures/prList.json") - defer jsonFile.Close() - http.StubResponse(200, jsonFile) - - output, err := RunCommand(prListCmd, "pr list -s open -l one -L 2") - if err != nil { - t.Fatal(err) - } - - eq(t, output.Stderr(), ` -Showing 2 of 3 pull requests in OWNER/REPO that match your search - -`) -} - -func TestPRList_multipleFilterWithoutLimit(t *testing.T) { - initBlankContext("OWNER/REPO", "master") - http := initFakeHTTP() - http.StubRepoResponse("OWNER", "REPO") - - jsonFile, _ := os.Open("../test/fixtures/prList.json") - defer jsonFile.Close() - http.StubResponse(200, jsonFile) - - output, err := RunCommand(prListCmd, "pr list -s open -l one") - if err != nil { - t.Fatal(err) - } - - eq(t, output.Stderr(), ` -Showing 3 of 3 pull requests in OWNER/REPO that match your search - -`) -} - -func TestPRList_singleFilter(t *testing.T) { - initBlankContext("OWNER/REPO", "master") - http := initFakeHTTP() - http.StubRepoResponse("OWNER", "REPO") - - jsonFile, _ := os.Open("../test/fixtures/prList.json") - defer jsonFile.Close() - http.StubResponse(200, jsonFile) - - output, err := RunCommand(prListCmd, "pr list -s open") - if err != nil { - t.Fatal(err) - } - - eq(t, output.Stderr(), ` -Showing 3 of 3 pull requests in OWNER/REPO that match your search - -`) -} - -func TestPRList_singleResultWithFilter(t *testing.T) { - initBlankContext("OWNER/REPO", "master") - http := initFakeHTTP() - http.StubRepoResponse("OWNER", "REPO") - - respBody := bytes.NewBufferString(`{ - "data": { - "repository": { - "pullRequests": { - "totalCount": 1, - "edges": [ - { - "node": { - "number": 32, - "title": "New feature", - "url": "https://github.com/monalisa/hello/pull/32", - "headRefName": "feature" - } - } - ], - "pageInfo": { - "hasNextPage": false, - "endCursor": "" - } - } - } - } - }`) - http.StubResponse(200, respBody) - - output, err := RunCommand(prListCmd, "pr list -s open -B develop") - if err != nil { - t.Fatal(err) - } - - eq(t, output.Stderr(), ` -Showing 1 of 1 pull request in OWNER/REPO that matches your search - -`) -} - func TestPRList_filtering(t *testing.T) { initBlankContext("OWNER/REPO", "master") http := initFakeHTTP()