Skip to content

Commit 0fa2e8d

Browse files
ting.wangsimenhhu
authored andcommitted
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
1 parent 553e154 commit 0fa2e8d

3 files changed

Lines changed: 54 additions & 9 deletions

File tree

openstackclient/tests/fakes.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,10 @@ def __repr__(self):
189189
def keys(self):
190190
return self._info.keys()
191191

192+
@property
193+
def info(self):
194+
return self._info
195+
192196

193197
class FakeResponse(requests.Response):
194198

openstackclient/tests/volume/v2/fakes.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -451,6 +451,44 @@ def get_volumes(volumes=None, count=2):
451451

452452
return mock.MagicMock(side_effect=volumes)
453453

454+
@staticmethod
455+
def get_volume_columns(volume=None):
456+
"""Get the volume columns from a faked volume object.
457+
458+
:param volume:
459+
A FakeResource objects faking volume
460+
:return
461+
A tuple which may include the following keys:
462+
('id', 'name', 'description', 'status', 'size', 'volume_type',
463+
'metadata', 'snapshot', 'availability_zone', 'attachments')
464+
"""
465+
if volume is not None:
466+
return tuple(k for k in sorted(volume.keys()))
467+
return tuple([])
468+
469+
@staticmethod
470+
def get_volume_data(volume=None):
471+
"""Get the volume data from a faked volume object.
472+
473+
:param volume:
474+
A FakeResource objects faking volume
475+
:return
476+
A tuple which may include the following values:
477+
('ce26708d', 'fake_volume', 'fake description', 'available',
478+
20, 'fake_lvmdriver-1', "Alpha='a', Beta='b', Gamma='g'",
479+
1, 'nova', [{'device': '/dev/ice', 'server_id': '1233'}])
480+
"""
481+
data_list = []
482+
if volume is not None:
483+
for x in sorted(volume.keys()):
484+
if x == 'tags':
485+
# The 'tags' should be format_list
486+
data_list.append(
487+
common_utils.format_list(volume.info.get(x)))
488+
else:
489+
data_list.append(volume.info.get(x))
490+
return tuple(data_list)
491+
454492

455493
class FakeAvailabilityZone(object):
456494
"""Fake one or more volume availability zones (AZs)."""

openstackclient/tests/volume/v2/test_volume.py

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -772,27 +772,30 @@ class TestVolumeShow(TestVolume):
772772
def setUp(self):
773773
super(TestVolumeShow, self).setUp()
774774

775-
self.volumes_mock.get.return_value = fakes.FakeResource(
776-
None,
777-
copy.deepcopy(volume_fakes.VOLUME),
778-
loaded=True)
775+
self._volume = volume_fakes.FakeVolume.create_one_volume()
776+
self.volumes_mock.get.return_value = self._volume
779777
# Get the command object to test
780778
self.cmd = volume.ShowVolume(self.app, None)
781779

782780
def test_volume_show(self):
783781
arglist = [
784-
volume_fakes.volume_id
782+
self._volume.id
785783
]
786784
verifylist = [
787-
("volume", volume_fakes.volume_id)
785+
("volume", self._volume.id)
788786
]
789787
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
790788

791789
columns, data = self.cmd.take_action(parsed_args)
792-
self.volumes_mock.get.assert_called_with(volume_fakes.volume_id)
790+
self.volumes_mock.get.assert_called_with(self._volume.id)
791+
792+
self.assertEqual(
793+
volume_fakes.FakeVolume.get_volume_columns(self._volume),
794+
columns)
793795

794-
self.assertEqual(volume_fakes.VOLUME_columns, columns)
795-
self.assertEqual(volume_fakes.VOLUME_data, data)
796+
self.assertEqual(
797+
volume_fakes.FakeVolume.get_volume_data(self._volume),
798+
data)
796799

797800

798801
class TestVolumeSet(TestVolume):

0 commit comments

Comments
 (0)