def testLongBugNumbers(self): """Testing review requests with very long bug numbers""" review_request = ReviewRequest() review_request.bugs_closed = \ '12006153200030304432010,4432009' self.assertEqual(review_request.get_bug_list(), ['4432009', '12006153200030304432010'])
def create_review_request(self, with_local_site=False, with_diffs=False, summary='Test Summary', description='Test Description', testing_done='Testing', submitter='doc', local_id=1001, status='P', public=False, publish=False, repository=None, id=None, create_repository=False): """Creates a ReviewRequest for testing. The ReviewRequest may optionally be attached to a LocalSite. It's also populated with default data that can be overridden by the caller. If create_repository is True, a Repository will be created automatically. If set, a custom repository cannot be provided. The provided submitter may either be a username or a User object. If publish is True, ReviewRequest.publish() will be called. """ if with_local_site: local_site = LocalSite.objects.get(name=self.local_site_name) else: local_site = None local_id = None if create_repository: assert not repository repository = \ self.create_repository(with_local_site=with_local_site) if not isinstance(submitter, User): submitter = User.objects.get(username=submitter) review_request = ReviewRequest( summary=summary, description=description, testing_done=testing_done, local_site=local_site, local_id=local_id, submitter=submitter, diffset_history=DiffSetHistory.objects.create(), repository=repository, public=public, status=status, id=id) review_request.save() if publish: review_request.publish(review_request.submitter) return review_request
def serialize_status_field(self, obj, **kwargs): return ReviewRequest.status_to_string(obj.status)
def __init__(self, request, review_request, changedesc, collapsed, data): """Initialize the entry. Args: request (django.http.HttpRequest): The request object. review_request (reviewboard.reviews.models.ReviewRequest): The review request that the change is for. changedesc (reviewboard.changedescs.models.ChangeDescription): The change description for this entry. collapsed (bool): Whether the entry is collapsed by default. data (ReviewRequestPageData): Pre-queried data for the review request page. """ BaseReviewRequestPageEntry.__init__(self, changedesc.timestamp, collapsed) if status_updates_feature.is_enabled(request=request): StatusUpdatesEntryMixin.__init__(self) self.changedesc = changedesc self.fields_changed_groups = [] cur_field_changed_group = None # See if there was a review request status change. status_change = changedesc.fields_changed.get('status') if status_change: assert 'new' in status_change self.new_status = ReviewRequest.status_to_string( status_change['new'][0]) else: self.new_status = None # Process the list of fields, in order by fieldset. These will be # put into groups composed of inline vs. full-width field values, # for render into the box. fieldsets = get_review_request_fieldsets( include_main=True, include_change_entries_only=True) for fieldset in fieldsets: for field_cls in fieldset.field_classes: field_id = field_cls.field_id if field_id not in changedesc.fields_changed: continue inline = field_cls.change_entry_renders_inline if (not cur_field_changed_group or cur_field_changed_group['inline'] != inline): # Begin a new group of fields. cur_field_changed_group = { 'inline': inline, 'fields': [], } self.fields_changed_groups.append(cur_field_changed_group) if issubclass(field_cls, ReviewRequestPageDataMixin): field = field_cls(review_request, request=request, data=data) else: field = field_cls(review_request, request=request) cur_field_changed_group['fields'] += \ field.get_change_entry_sections_html( changedesc.fields_changed[field_id])
def create_review_request(self, with_local_site=False, local_site=None, summary='Test Summary', description='Test Description', testing_done='Testing', submitter='doc', branch='my-branch', local_id=1001, bugs_closed='', status='P', public=False, publish=False, commit_id=None, changenum=None, time_added=None, last_updated=None, repository=None, id=None, create_repository=False): """Create a ReviewRequest for testing. The ReviewRequest may optionally be attached to a LocalSite. It's also populated with default data that can be overridden by the caller. If create_repository is True, a Repository will be created automatically. If set, a custom repository cannot be provided. The provided submitter may either be a username or a User object. If publish is True, ReviewRequest.publish() will be called. """ if not local_site: if with_local_site: local_site = self.get_local_site(name=self.local_site_name) else: local_site = None if not local_site: local_id = None if create_repository: assert not repository repository = \ self.create_repository(with_local_site=with_local_site) if not isinstance(submitter, User): submitter = User.objects.get(username=submitter) review_request = ReviewRequest( summary=summary, description=description, branch=branch, testing_done=testing_done, local_site=local_site, local_id=local_id, submitter=submitter, diffset_history=DiffSetHistory.objects.create(), repository=repository, public=public, commit_id=commit_id, changenum=changenum, bugs_closed=bugs_closed, status=status) # Set this separately to avoid issues with CounterField updates. review_request.id = id review_request.save() if publish: review_request.publish(review_request.submitter) if time_added and last_updated: ReviewRequest.objects.filter(pk=review_request.pk).update( time_added=time_added, last_updated=last_updated) review_request.time_added = time_added review_request.last_updated = last_updated elif time_added: ReviewRequest.objects.filter(pk=review_request.pk).update( time_added=time_added) review_request.time_added = time_added elif last_updated: ReviewRequest.objects.filter(pk=review_request.pk).update( last_updated=last_updated) review_request.last_updated = last_updated return review_request
def create_review_request(self, with_local_site=False, local_site=None, summary='Test Summary', description='Test Description', testing_done='Testing', submitter='doc', branch='my-branch', local_id=1001, bugs_closed='', status='P', public=False, publish=False, commit_id=None, changenum=None, repository=None, id=None, create_repository=False): """Create a ReviewRequest for testing. The ReviewRequest may optionally be attached to a LocalSite. It's also populated with default data that can be overridden by the caller. If create_repository is True, a Repository will be created automatically. If set, a custom repository cannot be provided. The provided submitter may either be a username or a User object. If publish is True, ReviewRequest.publish() will be called. """ if not local_site: if with_local_site: local_site = self.get_local_site(name=self.local_site_name) else: local_site = None if not local_site: local_id = None if create_repository: assert not repository repository = \ self.create_repository(with_local_site=with_local_site) if not isinstance(submitter, User): submitter = User.objects.get(username=submitter) review_request = ReviewRequest( summary=summary, description=description, branch=branch, testing_done=testing_done, local_site=local_site, local_id=local_id, submitter=submitter, diffset_history=DiffSetHistory.objects.create(), repository=repository, public=public, commit_id=commit_id, changenum=changenum, bugs_closed=bugs_closed, status=status) # Set this separately to avoid issues with CounterField updates. review_request.id = id review_request.save() if publish: review_request.publish(review_request.submitter) return review_request
def __init__(self, request, review_request, changedesc, collapsed, locals_vars): """Initialize the entry. Args: request (django.http.HttpRequest): The request object. review_request (reviewboard.reviews.models.ReviewRequest): The review request that the change is for. changedesc (reviewboard.changedescs.models.ChangeDescription): The change description for this entry. collapsed (bool): Whether the entry is collapsed by default. locals_vars (dict): A dictionary of the local variables inside the review detail view. This is done because some of the fields in the change description may make use of some of the maps maintained while building the page in order to avoid adding additional queries .. seealso:: :py:data:`~reviewboard.reviews.fields.Field.locals_vars` """ super(ChangeEntry, self).__init__(changedesc.timestamp, collapsed) self.changedesc = changedesc self.fields_changed_groups = [] cur_field_changed_group = None # See if there was a review request status change. status_change = changedesc.fields_changed.get('status') if status_change: assert 'new' in status_change self.new_status = ReviewRequest.status_to_string( status_change['new'][0]) else: self.new_status = None # Process the list of fields, in order by fieldset. These will be # put into groups composed of inline vs. full-width field values, # for render into the box. fieldsets = get_review_request_fieldsets( include_main=True, include_change_entries_only=True) for fieldset in fieldsets: for field_cls in fieldset.field_classes: field_id = field_cls.field_id if field_id not in changedesc.fields_changed: continue inline = field_cls.change_entry_renders_inline if (not cur_field_changed_group or cur_field_changed_group['inline'] != inline): # Begin a new group of fields. cur_field_changed_group = { 'inline': inline, 'fields': [], } self.fields_changed_groups.append(cur_field_changed_group) if hasattr(field_cls, 'locals_vars'): field = field_cls(review_request, request=request, locals_vars=locals_vars) else: field = field_cls(review_request, request=request) cur_field_changed_group['fields'] += \ field.get_change_entry_sections_html( changedesc.fields_changed[field_id])
def test_no_summary(self): """Testing review requests with no summary""" from django.template.defaultfilters import lower review_request = ReviewRequest() lower(review_request)
def test_long_bug_numbers(self): """Testing review requests with very long bug numbers""" review_request = ReviewRequest() review_request.bugs_closed = '12006153200030304432010,4432009' self.assertEqual(review_request.get_bug_list(), ['4432009', '12006153200030304432010'])
def test_is_approved_sandbox(self): """Testing ReviewRequestApprovalHook.is_approved with raised exception """ SandboxReviewRequestApprovalTestHook(extension=self.extension) review = ReviewRequest() review._calculate_approval()