Refactor TestVolumeShow with FakeVolume
In the meantime, add some static methods in FakeVolume for ease of use and add info() method with "property" decorator in FakeResource to allow those static methods to get fake information. Change-Id: I98ad520f32afd529fda77a4592f645130282537f Co-Authored-By: xiexs <xiexs@cn.fujitsu.com> Implements: blueprint improve-volume-unittest-framework
This commit is contained in:
parent
553e154960
commit
0fa2e8df92
openstackclient/tests
@ -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):
|
||||
|
||||
|
@ -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)."""
|
||||
|
@ -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):
|
||||
|
Loading…
x
Reference in New Issue
Block a user