def tag_as_public(self): """Set the core actions on new opened issues. When a new issue is opened, we set a couple of things. - Browser label - Priority label - Issue milestone - Any "extra" labels, set from GET params Then Send a GitHub PATCH to set labels and milestone for the issue. PATCH /repos/:owner/:repo/issues/:number { "milestone": 2, "labels": ['Label1', 'Label2'] } """ # Grabs the labels already set so they will not be erased # Gets the labels from the body labels = get_issue_labels(self.body) labels.extend(self.original_labels) self.milestone = app.config['STATUSES']['needstriage']['id'] # Preparing the proxy request to the public repo path = f'repos/{PUBLIC_REPO}/{self.number}' payload_request = {'labels': labels, 'milestone': self.milestone} make_request('patch', path, payload_request)
def prepare_accepted_issue(self, milestone=None): """Create the payload for the accepted moderated issue. When the issue has been moderated as accepted, we need to change a couple of things in the public space - Title - Body - Any labels from the private issue """ # Gets the labels from the body labels = get_issue_labels(self.body) labels.extend(self.original_labels) # Let's remove action-needsmoderation in case it's here if 'action-needsmoderation' in labels: labels.remove('action-needsmoderation') # Prepares the payload payload_request = { 'labels': labels, 'title': self.title, 'body': self.body } if milestone: milestone_id = app.config['STATUSES'][f'{milestone}']['id'] payload_request['milestone'] = milestone_id payload_request['state'] = 'closed' return payload_request
def test_get_issue_labels(self): """Extract list of labels from an issue body.""" labels_tests = [(self.issue_body, ['browser-firefox', 'type-media', 'type-stylo']), (self.issue_body2, ['browser-fixme', 'type-foobar']), (self.issue_body3, ['browser-firefox-tablet'])] for issue_body, expected in labels_tests: actual = helpers.get_issue_labels(issue_body) self.assertEqual(sorted(expected), sorted(actual))
def test_get_issue_labels(self): """Extract list of labels from an issue body.""" labels_tests = [ (self.issue_body, ['browser-firefox', 'type-media', 'type-stylo', 'engine-gecko']), (self.issue_body2, ['browser-fixme', 'type-foobar']), (self.issue_body3, ['browser-firefox-tablet', 'engine-gecko']), (self.issue_body5, ['browser-firefox-reality', 'engine-gecko', 'type-media']), (self.issue_body6, ['browser-safari']), ] for issue_body, expected in labels_tests: actual = helpers.get_issue_labels(issue_body) self.assertEqual(sorted(expected), sorted(actual))
def test_get_issue_labels(self): """Extract list of labels from an issue body.""" labels_tests = [ (self.issue_body, ['browser-firefox', 'type-media', 'type-stylo', 'engine-gecko']), (self.issue_body2, ['browser-fixme', 'type-foobar']), (self.issue_body3, ['browser-firefox-tablet', 'engine-gecko']), (self.issue_body5, ['browser-firefox-reality', 'engine-gecko', 'type-media']), (self.issue_body6, ['browser-safari']), (self.issue_body8, ['browser-firefox-ios', 'os-ios']), ] for issue_body, expected in labels_tests: actual = helpers.get_issue_labels(issue_body) self.assertEqual(sorted(expected), sorted(actual))