Skip to content

Commit

Permalink
Fix displaying release data after update
Browse files Browse the repository at this point in the history
When the update results in change of release_id, the client would
display Not found error instead of updated release details.

This patch requires more changes in test helpers to properly test PATCH
requests. All tests are updated to still pass.

JIRA: PDC-1083
  • Loading branch information
lubomir committed Oct 14, 2015
1 parent 97a0769 commit dfa6329
Show file tree
Hide file tree
Showing 5 changed files with 18 additions and 6 deletions.
6 changes: 4 additions & 2 deletions pdc_client/plugins/release.py
Original file line number Diff line number Diff line change
Expand Up @@ -108,13 +108,15 @@ def release_info(self, args, release_id=None):
def release_update(self, args):
data = self.get_release_data(args)

release_id = None
if data:
self.logger.debug('Updating release {} with data {}'.format(args.release_id, data))
self.client.releases[args.release_id]._ += data
response = self.client.releases[args.release_id]._('PATCH', data)
release_id = response['release_id']
else:
self.logger.info('No change required, not making a request')

self.release_info(args)
self.release_info(args, release_id)

def release_create(self, args):
data = self.get_release_data(args)
Expand Down
8 changes: 7 additions & 1 deletion pdc_client/test_helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,8 @@ def __getitem__(self, key):
return PathAccumulator(key, self)

def __call__(self, *args, **kwargs):
if len(args) == 2 and args[0] == 'PATCH':
return self._handle_patch(args[1])
if len(args) == 1:
return self._handle_post(args[0])
elif len(args) == 0:
Expand All @@ -104,11 +106,15 @@ def _handle_get(self, filters):
}
return data

def _handle_patch(self, data):
self.calls.setdefault(self.will_call, []).append(('PATCH', data))
return self.endpoints[self.will_call]['PATCH']

def _fmt_url(self, page):
return 'http://testserver/?page={}'.format(page)

def __iadd__(self, data):
self.calls.setdefault(self.will_call, []).append(('PATCH', data))
self._handle_patch(data)


def mock_api(func):
Expand Down
2 changes: 2 additions & 0 deletions pdc_client/tests/component/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ def test_detail(self, api):

def test_update(self, api):
self._setup_detail(api)
api.add_endpoint('global-components/1', 'PATCH', {})
with self.expect_output('global_component/detail.txt'):
self.runner.run(['global-component-update', '1', '--name', 'new test name'])
self.assertDictEqual(api.calls,
Expand Down Expand Up @@ -180,6 +181,7 @@ def test_detail(self, api):

def test_update(self, api):
self._setup_detail(api)
api.add_endpoint('release-components/1', 'PATCH', {})
with self.expect_output('release_component/detail.txt'):
self.runner.run(['release-component-update', '1', '--name', 'new test name'])
self.assertDictEqual(api.calls,
Expand Down
1 change: 1 addition & 0 deletions pdc_client/tests/compose/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ def test_info_json(self, api):

def test_update(self, api):
api.add_endpoint('composes/awesome-product-20130203.7', 'GET', self.compose_detail)
api.add_endpoint('composes/awesome-product-20130203.7', 'PATCH', {})
with self.expect_output('info.txt'):
self.runner.run(['compose-update', 'awesome-product-20130203.7',
'--acceptance-testing', 'passed',
Expand Down
7 changes: 4 additions & 3 deletions pdc_client/tests/release/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,11 +71,12 @@ def test_detail(self, api):

def test_update(self, api):
self._setup_release_detail(api)
api.add_endpoint('releases/release-0.9', 'PATCH', self.release_detail)
with self.expect_output('detail.txt'):
self.runner.run(['release-update', 'release-1.0', '--deactivate'])
self.runner.run(['release-update', 'release-0.9', '--version', '1.0'])
self.assertDictEqual(api.calls,
{'releases/release-1.0': [('PATCH', {'active': False}),
('GET', {})],
{'releases/release-0.9': [('PATCH', {'version': '1.0'})],
'releases/release-1.0': [('GET', {})],
'release-variants': [('GET', {'page': 1, 'release': 'release-1.0'})]})

def test_create(self, api):
Expand Down

0 comments on commit dfa6329

Please sign in to comment.