testing: Add indicator of review drafts to summary (
bug 1161230) r=smacleod
MozReview-Commit-ID: AHzWTbd8MQ
--- a/hgext/reviewboard/tests/test-review-request-summary.t
+++ b/hgext/reviewboard/tests/test-review-request-summary.t
@@ -51,37 +51,40 @@
$ rbmanage dump-summary 1
parent:
summary: bz://1/mynick
id: 1
submitter: default+5
issue_open_count: 0
status: pending
+ has_draft: false
reviewers:
- reviewer
children:
- summary: Bug 1 - Foo 1
id: 2
commit: 98467d80785ec84dd871f213c167ed704a6d974d
submitter: default+5
issue_open_count: 0
status: pending
+ has_draft: false
reviewers:
- reviewer
reviewers_status:
reviewer:
review_flag: r?
ship_it: false
- summary: Bug 1 - Foo 2
id: 3
commit: 3a446ae4382006c43cdfa5aa33c494f582736f35
submitter: default+5
issue_open_count: 0
status: pending
+ has_draft: false
reviewers: []
reviewers_status: {}
Only parents have summaries.
$ rbmanage dump-summary 2
API Error: 400: 1001: Review request is not a parent
[1]
@@ -98,147 +101,159 @@ Opening an issue should be reflected in
$ rbmanage dump-summary 1
parent:
summary: bz://1/mynick
id: 1
submitter: default+5
issue_open_count: 0
status: pending
+ has_draft: false
reviewers:
- reviewer
children:
- summary: Bug 1 - Foo 1
id: 2
commit: 98467d80785ec84dd871f213c167ed704a6d974d
submitter: default+5
issue_open_count: 1
status: pending
+ has_draft: false
reviewers:
- reviewer
reviewers_status:
reviewer:
review_flag: r?
ship_it: false
- summary: Bug 1 - Foo 2
id: 3
commit: 3a446ae4382006c43cdfa5aa33c494f582736f35
submitter: default+5
issue_open_count: 0
status: pending
+ has_draft: false
reviewers: []
reviewers_status: {}
Resolving an issue should decrement the issue count.
$ rbmanage update-issue-status 2 1 1 resolved
updated issue status on diff comment 1
$ rbmanage dump-summary 1
parent:
summary: bz://1/mynick
id: 1
submitter: default+5
issue_open_count: 0
status: pending
+ has_draft: false
reviewers:
- reviewer
children:
- summary: Bug 1 - Foo 1
id: 2
commit: 98467d80785ec84dd871f213c167ed704a6d974d
submitter: default+5
issue_open_count: 0
status: pending
+ has_draft: false
reviewers:
- reviewer
reviewers_status:
reviewer:
review_flag: r?
ship_it: false
- summary: Bug 1 - Foo 2
id: 3
commit: 3a446ae4382006c43cdfa5aa33c494f582736f35
submitter: default+5
issue_open_count: 0
status: pending
+ has_draft: false
reviewers: []
reviewers_status: {}
Giving a ship-it should result in a change in the reviewer status
$ exportbzauth reviewer@example.com password1
$ rbmanage create-review 2 --review-flag='r+' --public
created review 2
$ rbmanage dump-summary 1
parent:
summary: bz://1/mynick
id: 1
submitter: default+5
issue_open_count: 0
status: pending
+ has_draft: false
reviewers:
- reviewer
children:
- summary: Bug 1 - Foo 1
id: 2
commit: 98467d80785ec84dd871f213c167ed704a6d974d
submitter: default+5
issue_open_count: 0
status: pending
+ has_draft: false
reviewers:
- reviewer
reviewers_status:
reviewer:
review_flag: r+
ship_it: true
- summary: Bug 1 - Foo 2
id: 3
commit: 3a446ae4382006c43cdfa5aa33c494f582736f35
submitter: default+5
issue_open_count: 0
status: pending
+ has_draft: false
reviewers: []
reviewers_status: {}
$ exportbzauth default@example.com password
Verify we can also get the summaries by bug, including closed ones.
$ rbmanage closesubmitted 2
$ rbmanage dump-summaries-by-bug 1
- parent:
summary: bz://1/mynick
id: 1
submitter: default+5
issue_open_count: 0
status: pending
+ has_draft: false
reviewers:
- reviewer
children:
- summary: Bug 1 - Foo 1
id: 2
commit: 98467d80785ec84dd871f213c167ed704a6d974d
submitter: default+5
issue_open_count: 0
status: submitted
+ has_draft: false
reviewers:
- reviewer
reviewers_status:
reviewer:
review_flag: r+
ship_it: true
- summary: Bug 1 - Foo 2
id: 3
commit: 3a446ae4382006c43cdfa5aa33c494f582736f35
submitter: default+5
issue_open_count: 0
status: pending
+ has_draft: false
reviewers: []
reviewers_status: {}
Verify that we get nothing from non-existent bugs.
$ rbmanage dump-summaries-by-bug 2
[]
--- a/pylib/mozreview/mozreview/resources/review_request_summary.py
+++ b/pylib/mozreview/mozreview/resources/review_request_summary.py
@@ -199,16 +199,17 @@ class ReviewRequestSummaryResource(WebAP
def _summarize_review_request(self, request, review_request, commit=None):
"""Returns a dict summarizing a ReviewRequest object.
Example return value for a child request (a parent looks the same but
without a 'commit' key):
{
'commit': 'ece2029d013af68f9f32aa0a6199fcb2201d5aae',
+ 'has_draft': False,
'id': 3,
'issue_open_count': 0,
'last_updated': '2015-04-13T18:58:25Z',
'links': {
'self': {
'href': 'http://127.0.0.1:50936/api/extensions/mozreview.extension.MozReviewExtension/summary/3/',
'method': 'GET'
}
@@ -249,16 +250,18 @@ class ReviewRequestSummaryResource(WebAP
BugzillaUserMap.objects.filter(user_id__in=[
reviewer.id for reviewer in reviewers])]
d['links'] = self.get_links(obj=review_request, request=request)
if commit:
d['commit'] = commit
+ d['has_draft'] = review_request.get_draft() is not None
+
return d
def _summarize_families(self, request, families):
"""Returns a list of dicts summarizing a parent and its children.
'families' should be a list of dicts, each containing a 'parent' key
mapping to a single ReviewRequest and a 'children' key containing a
list of ReviewRequests.
--- a/testing/vcttesting/reviewboard/mach_commands.py
+++ b/testing/vcttesting/reviewboard/mach_commands.py
@@ -144,17 +144,18 @@ def serialize_review_requests(api_client
return yaml.safe_dump(d, default_flow_style=False).rstrip()
def short_review_request_dict(rr):
# Don't include last_updated since it's hard to test.
d = OrderedDict()
d['summary'] = _serialize_text(rr['summary'])
- for k in ('id', 'commit', 'submitter', 'issue_open_count', 'status'):
+ for k in ('id', 'commit', 'submitter', 'issue_open_count', 'status',
+ 'has_draft'):
if k in rr:
d[k] = rr[k]
d['reviewers'] = [x for x in rr['reviewers']]
if 'reviewers_status' in rr:
d['reviewers_status'] = dict()
for reviewer, status in rr[u'reviewers_status'].iteritems():
@@ -664,17 +665,17 @@ class ReviewBoardCommands(object):
from rbtools.api.errors import APIError
c = self._get_client()
try:
r = c.get_path('/extensions/mozreview.extension.MozReviewExtension'
'/summary/%s/' % rrid)
except APIError as e:
print('API Error: %s: %s: %s' % (e.http_status, e.error_code,
- e.rsp['err']['msg']))
+ e.rsp['err']['msg']))
return 1
d = OrderedDict()
d['parent'] = short_review_request_dict(r['parent'])
d['children'] = [short_review_request_dict(x) for x in r['children']]
print(yaml.safe_dump(d, default_flow_style=False).rstrip())