Merge "Refactor TestVolumeShow with FakeVolume"

This commit is contained in:
Jenkins 2016-05-24 23:30:56 +00:00 committed by Gerrit Code Review
commit 2402dcfc35
3 changed files with 54 additions and 9 deletions

View File

@ -189,6 +189,10 @@ class FakeResource(object):
def keys(self):
return self._info.keys()
@property
def info(self):
return self._info
class FakeResponse(requests.Response):

View File

@ -451,6 +451,44 @@ class FakeVolume(object):
return mock.MagicMock(side_effect=volumes)
@staticmethod
def get_volume_columns(volume=None):
"""Get the volume columns from a faked volume object.
:param volume:
A FakeResource objects faking volume
:return
A tuple which may include the following keys:
('id', 'name', 'description', 'status', 'size', 'volume_type',
'metadata', 'snapshot', 'availability_zone', 'attachments')
"""
if volume is not None:
return tuple(k for k in sorted(volume.keys()))
return tuple([])
@staticmethod
def get_volume_data(volume=None):
"""Get the volume data from a faked volume object.
:param volume:
A FakeResource objects faking volume
:return
A tuple which may include the following values:
('ce26708d', 'fake_volume', 'fake description', 'available',
20, 'fake_lvmdriver-1', "Alpha='a', Beta='b', Gamma='g'",
1, 'nova', [{'device': '/dev/ice', 'server_id': '1233'}])
"""
data_list = []
if volume is not None:
for x in sorted(volume.keys()):
if x == 'tags':
# The 'tags' should be format_list
data_list.append(
common_utils.format_list(volume.info.get(x)))
else:
data_list.append(volume.info.get(x))
return tuple(data_list)
class FakeAvailabilityZone(object):
"""Fake one or more volume availability zones (AZs)."""

View File

@ -772,27 +772,30 @@ class TestVolumeShow(TestVolume):
def setUp(self):
super(TestVolumeShow, self).setUp()
self.volumes_mock.get.return_value = fakes.FakeResource(
None,
copy.deepcopy(volume_fakes.VOLUME),
loaded=True)
self._volume = volume_fakes.FakeVolume.create_one_volume()
self.volumes_mock.get.return_value = self._volume
# Get the command object to test
self.cmd = volume.ShowVolume(self.app, None)
def test_volume_show(self):
arglist = [
volume_fakes.volume_id
self._volume.id
]
verifylist = [
("volume", volume_fakes.volume_id)
("volume", self._volume.id)
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args)
self.volumes_mock.get.assert_called_with(volume_fakes.volume_id)
self.volumes_mock.get.assert_called_with(self._volume.id)
self.assertEqual(volume_fakes.VOLUME_columns, columns)
self.assertEqual(volume_fakes.VOLUME_data, data)
self.assertEqual(
volume_fakes.FakeVolume.get_volume_columns(self._volume),
columns)
self.assertEqual(
volume_fakes.FakeVolume.get_volume_data(self._volume),
data)
class TestVolumeSet(TestVolume):