# will be removed in API v2
data = super(CoverLetterListSerializer, self).to_representation(
instance)
- data['series'] = [data['series']]
+ data['series'] = [data['series']] if data['series'] else []
return data
class Meta:
# after we changed the series-patch relationship from M:N to 1:N. It
# will be removed in API v2
data = super(PatchListSerializer, self).to_representation(instance)
- data['series'] = [data['series']]
+ data['series'] = [data['series']] if data['series'] else []
return data
class Meta:
self.assertEqual(cover_obj.submitter.id,
cover_json['submitter']['id'])
+ if hasattr(cover_obj, 'series'):
+ self.assertEqual(1, len(cover_json['series']))
+ self.assertEqual(cover_obj.series.id,
+ cover_json['series'][0]['id'])
+ else:
+ self.assertEqual([], cover_json['series'])
+
def test_list_empty(self):
"""List cover letters when none are present."""
resp = self.client.get(self.api_url())
def test_list_anonymous(self):
"""List cover letter as anonymous user."""
- cover = create_cover()
+ # we specifically set series to None to test code that handles legacy
+ # cover letters created before series existed
+ cover = create_cover(series=None)
resp = self.client.get(self.api_url())
self.assertEqual(status.HTTP_200_OK, resp.status_code)
self.assertEqual(patch_obj.project.id,
patch_json['project']['id'])
+ if patch_obj.series:
+ self.assertEqual(1, len(patch_json['series']))
+ self.assertEqual(patch_obj.series.id,
+ patch_json['series'][0]['id'])
+ else:
+ self.assertEqual([], patch_json['series'])
+
def test_list_empty(self):
"""List patches when none are present."""
resp = self.client.get(self.api_url())
self.assertEqual(status.HTTP_200_OK, resp.status_code)
self.assertEqual(0, len(resp.data))
- def _create_patch(self):
+ def _create_patch(self, **kwargs):
person_obj = create_person(email='test@example.com')
project_obj = create_project(linkname='myproject')
state_obj = create_state(name='Under Review')
patch_obj = create_patch(state=state_obj, project=project_obj,
- submitter=person_obj)
+ submitter=person_obj, **kwargs)
return patch_obj
def test_list_anonymous(self):
"""List patches as anonymous user."""
- patch = self._create_patch()
+ # we specifically set series to None to test code that handles legacy
+ # patches created before series existed
+ patch = self._create_patch(series=None)
resp = self.client.get(self.api_url())
self.assertEqual(status.HTTP_200_OK, resp.status_code)
def test_patch_created(self):
"""No series, so patch dependencies implicitly exist."""
- patch = utils.create_patch()
+ patch = utils.create_patch(series=None)
# This should raise the CATEGORY_PATCH_CREATED event only as there is
# no series
class PatchChangedTest(_BaseTestCase):
def test_patch_state_changed(self):
- patch = utils.create_patch()
+ # purposefully setting series to None to minimize additional events
+ patch = utils.create_patch(series=None)
old_state = patch.state
new_state = utils.create_state()
current_state=new_state)
def test_patch_delegated(self):
- patch = utils.create_patch()
+ # purposefully setting series to None to minimize additional events
+ patch = utils.create_patch(series=None)
delegate_a = utils.create_user()
# None -> Delegate A
def test_legacy_patch(self):
"""Validate a patch with non-existent dependencies raises a 404."""
# we're explicitly creating a patch without a series
- patch = create_patch()
+ patch = create_patch(series=None)
response = self.client.get('%s?series=*' % reverse(
'patch-mbox', args=[patch.id]))
# NOTE(stephenfin): Even though we could simply pass 'series' into the
# constructor, we don't as that's not what we do in the parser and not what
# our signal handlers (for events) expect
- series = kwargs.pop('series', None)
- number = kwargs.pop('number', None)
+ if 'series' in kwargs:
+ series = kwargs.pop('series')
+ else:
+ series = create_series(project=kwargs.pop('project', create_project()))
+
+ if 'number' in kwargs:
+ number = kwargs.pop('number', None)
+ elif series:
+ number = series.patches.count() + 1
# NOTE(stephenfin): We overwrite the provided project, if there is one, to
# maintain some degree of sanity
# emulate that here. For more info, see [1].
#
# [1] https://stackoverflow.com/q/43119575/
- series = kwargs.pop('series', None)
+ if 'series' in kwargs:
+ series = kwargs.pop('series')
+ else:
+ series = create_series(project=kwargs.pop('project', create_project()))
# NOTE(stephenfin): We overwrite the provided project, if there is one, to
# maintain some degree of sanity