зеркало из https://github.com/mislav/hub.git
244 строки
7.3 KiB
Gherkin
244 строки
7.3 KiB
Gherkin
Feature: hub pr list
|
|
Background:
|
|
Given I am in "git://github.com/github/hub.git" git repo
|
|
And I am "defunkt" on github.com with OAuth token "OTOKEN"
|
|
|
|
Scenario: List pulls
|
|
Given the GitHub API server:
|
|
"""
|
|
get('/repos/github/hub/pulls') {
|
|
assert :per_page => "100",
|
|
:page => :no,
|
|
:sort => nil,
|
|
:direction => "desc"
|
|
|
|
response.headers["Link"] = %(<https://api.github.com/repositories/12345?per_page=100&page=2>; rel="next")
|
|
|
|
json [
|
|
{ :number => 999,
|
|
:title => "First",
|
|
:state => "open",
|
|
:base => { :ref => "master", :label => "github:master" },
|
|
:head => { :ref => "patch-1", :label => "octocat:patch-1" },
|
|
:user => { :login => "octocat" },
|
|
},
|
|
{ :number => 102,
|
|
:title => "Second",
|
|
:state => "open",
|
|
:base => { :ref => "master", :label => "github:master" },
|
|
:head => { :ref => "patch-2", :label => "octocat:patch-2" },
|
|
:user => { :login => "octocat" },
|
|
},
|
|
{ :number => 13,
|
|
:title => "Third",
|
|
:state => "open",
|
|
:base => { :ref => "master", :label => "github:master" },
|
|
:head => { :ref => "patch-3", :label => "octocat:patch-3" },
|
|
:user => { :login => "octocat" },
|
|
},
|
|
]
|
|
}
|
|
|
|
get('/repositories/12345') {
|
|
assert :per_page => "100",
|
|
:page => "2"
|
|
|
|
json [
|
|
{ :number => 7,
|
|
:title => "Fourth",
|
|
:state => "open",
|
|
:base => { :ref => "master", :label => "github:master" },
|
|
:head => { :ref => "patch-4", :label => "octocat:patch-4" },
|
|
:user => { :login => "octocat" },
|
|
},
|
|
]
|
|
}
|
|
"""
|
|
When I successfully run `hub pr list`
|
|
Then the output should contain exactly:
|
|
"""
|
|
#999 First
|
|
#102 Second
|
|
#13 Third
|
|
#7 Fourth\n
|
|
"""
|
|
|
|
Scenario: List pull requests with requested reviewers
|
|
Given the GitHub API server:
|
|
"""
|
|
get('/repos/github/hub/pulls') {
|
|
assert :per_page => "100",
|
|
:page => :no,
|
|
:sort => nil,
|
|
:direction => "desc"
|
|
|
|
json [
|
|
{ :number => 999,
|
|
:title => "First",
|
|
:state => "open",
|
|
:base => {
|
|
:ref => "master",
|
|
:label => "github:master",
|
|
:repo => { :owner => { :login => "github" } }
|
|
},
|
|
:head => { :ref => "patch-1", :label => "octocat:patch-1" },
|
|
:user => { :login => "octocat" },
|
|
:requested_reviewers => [
|
|
{ :login => "rey" },
|
|
],
|
|
:requested_teams => [
|
|
{ :slug => "troopers" },
|
|
{ :slug => "cantina-band" },
|
|
]
|
|
},
|
|
{ :number => 102,
|
|
:title => "Second",
|
|
:state => "open",
|
|
:base => { :ref => "master", :label => "github:master" },
|
|
:head => { :ref => "patch-2", :label => "octocat:patch-2" },
|
|
:user => { :login => "octocat" },
|
|
:requested_reviewers => [
|
|
{ :login => "luke" },
|
|
{ :login => "jyn" },
|
|
]
|
|
},
|
|
]
|
|
}
|
|
"""
|
|
When I successfully run `hub pr list -f "%sC%>(8)%i %rs%n"`
|
|
Then the output should contain exactly:
|
|
"""
|
|
#999 rey, github/troopers, github/cantina-band
|
|
#102 luke, jyn\n
|
|
"""
|
|
|
|
Scenario: List draft status
|
|
Given the GitHub API server:
|
|
"""
|
|
get('/repos/github/hub/pulls') {
|
|
halt 400 unless env['HTTP_ACCEPT'] == 'application/vnd.github.shadow-cat-preview+json;charset=utf-8'
|
|
|
|
json [
|
|
{ :number => 999,
|
|
:state => "open",
|
|
:draft => true,
|
|
:merged_at => nil,
|
|
:base => { :ref => "master", :label => "github:master" },
|
|
:head => { :ref => "patch-2", :label => "octocat:patch-2" },
|
|
:user => { :login => "octocat" },
|
|
},
|
|
{ :number => 102,
|
|
:state => "open",
|
|
:draft => false,
|
|
:merged_at => nil,
|
|
:base => { :ref => "master", :label => "github:master" },
|
|
:head => { :ref => "patch-1", :label => "octocat:patch-1" },
|
|
:user => { :login => "octocat" },
|
|
},
|
|
{ :number => 42,
|
|
:state => "closed",
|
|
:draft => false,
|
|
:merged_at => "2018-12-11T10:50:33Z",
|
|
:base => { :ref => "master", :label => "github:master" },
|
|
:head => { :ref => "patch-3", :label => "octocat:patch-3" },
|
|
:user => { :login => "octocat" },
|
|
},
|
|
{ :number => 8,
|
|
:state => "closed",
|
|
:draft => false,
|
|
:merged_at => nil,
|
|
:base => { :ref => "master", :label => "github:master" },
|
|
:head => { :ref => "patch-4", :label => "octocat:patch-4" },
|
|
:user => { :login => "octocat" },
|
|
},
|
|
]
|
|
}
|
|
"""
|
|
When I successfully run `hub pr list --format "%I %pC %pS %Creset%n" --color`
|
|
Then the output should contain exactly:
|
|
"""
|
|
999 \e[37m draft \e[m
|
|
102 \e[32m open \e[m
|
|
42 \e[35m merged \e[m
|
|
8 \e[31m closed \e[m\n
|
|
"""
|
|
|
|
Scenario: Sort by number of comments ascending
|
|
Given the GitHub API server:
|
|
"""
|
|
get('/repos/github/hub/pulls') {
|
|
assert :sort => "comments",
|
|
:direction => "asc"
|
|
|
|
json []
|
|
}
|
|
"""
|
|
When I successfully run `hub pr list -o comments -^`
|
|
Then the output should contain exactly ""
|
|
|
|
Scenario: Filter by base and head
|
|
Given the GitHub API server:
|
|
"""
|
|
get('/repos/github/hub/pulls') {
|
|
assert :base => "develop",
|
|
:head => "github:patch-1"
|
|
|
|
json []
|
|
}
|
|
"""
|
|
When I successfully run `hub pr list -b develop -h patch-1`
|
|
Then the output should contain exactly ""
|
|
|
|
Scenario: Filter by head with owner
|
|
Given the GitHub API server:
|
|
"""
|
|
get('/repos/github/hub/pulls') {
|
|
assert :head => "mislav:patch-1"
|
|
|
|
json []
|
|
}
|
|
"""
|
|
When I successfully run `hub pr list -h mislav:patch-1`
|
|
Then the output should contain exactly ""
|
|
|
|
Scenario: Filter by merged state
|
|
Given the GitHub API server:
|
|
"""
|
|
get('/repos/github/hub/pulls') {
|
|
assert :state => "closed"
|
|
|
|
json [
|
|
{ :number => 999,
|
|
:title => "First",
|
|
:state => "closed",
|
|
:merged_at => "2018-12-11T10:50:33Z",
|
|
:base => { :ref => "master", :label => "github:master" },
|
|
:head => { :ref => "patch-1", :label => "octocat:patch-1" },
|
|
:user => { :login => "octocat" },
|
|
},
|
|
{ :number => 102,
|
|
:title => "Second",
|
|
:state => "closed",
|
|
:merged_at => nil,
|
|
:base => { :ref => "master", :label => "github:master" },
|
|
:head => { :ref => "patch-2", :label => "octocat:patch-2" },
|
|
:user => { :login => "octocat" },
|
|
},
|
|
{ :number => 13,
|
|
:title => "Third",
|
|
:state => "closed",
|
|
:merged_at => "2018-12-11T10:50:33Z",
|
|
:base => { :ref => "master", :label => "github:master" },
|
|
:head => { :ref => "patch-3", :label => "octocat:patch-3" },
|
|
:user => { :login => "octocat" },
|
|
},
|
|
]
|
|
}
|
|
"""
|
|
When I successfully run `hub pr list --state=merged`
|
|
Then the output should contain exactly:
|
|
"""
|
|
#999 First
|
|
#13 Third\n
|
|
"""
|