summaryrefslogtreecommitdiff
path: root/openstackclient/tests/unit/volume
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2017-01-12 03:13:22 +0000
committerGerrit Code Review <review@openstack.org>2017-01-12 03:13:22 +0000
commitc8c29e8c2e4644b066cc2cb7e86b36664c4e094c (patch)
tree11a0d325fc9cfac7f013e6dafd7744a96a3d7e11 /openstackclient/tests/unit/volume
parent2fb5ac0cc44352aeb102b54b7e15de657202faf9 (diff)
parent28f9a9c6211839c0f3320dcbb0e8288d6627fa43 (diff)
downloadpython-openstackclient-c8c29e8c2e4644b066cc2cb7e86b36664c4e094c.tar.gz
Merge "Add unit test for multi volume types delete"
Diffstat (limited to 'openstackclient/tests/unit/volume')
-rw-r--r--openstackclient/tests/unit/volume/v2/fakes.py20
-rw-r--r--openstackclient/tests/unit/volume/v2/test_type.py58
2 files changed, 73 insertions, 5 deletions
diff --git a/openstackclient/tests/unit/volume/v2/fakes.py b/openstackclient/tests/unit/volume/v2/fakes.py
index d5cd72ec..a6676403 100644
--- a/openstackclient/tests/unit/volume/v2/fakes.py
+++ b/openstackclient/tests/unit/volume/v2/fakes.py
@@ -903,3 +903,23 @@ class FakeType(object):
volume_types.append(volume_type)
return volume_types
+
+ @staticmethod
+ def get_types(types=None, count=2):
+ """Get an iterable MagicMock object with a list of faked types.
+
+ If types list is provided, then initialize the Mock object with the
+ list. Otherwise create one.
+
+ :param List types:
+ A list of FakeResource objects faking types
+ :param Integer count:
+ The number of types to be faked
+ :return
+ An iterable Mock object with side_effect set to a list of faked
+ types
+ """
+ if types is None:
+ types = FakeType.create_types(count)
+
+ return mock.Mock(side_effect=types)
diff --git a/openstackclient/tests/unit/volume/v2/test_type.py b/openstackclient/tests/unit/volume/v2/test_type.py
index 0d556e13..cec01bd8 100644
--- a/openstackclient/tests/unit/volume/v2/test_type.py
+++ b/openstackclient/tests/unit/volume/v2/test_type.py
@@ -13,6 +13,7 @@
#
import mock
+from mock import call
from osc_lib import exceptions
from osc_lib import utils
@@ -133,12 +134,13 @@ class TestTypeCreate(TestType):
class TestTypeDelete(TestType):
- volume_type = volume_fakes.FakeType.create_one_type()
+ volume_types = volume_fakes.FakeType.create_types(count=2)
def setUp(self):
super(TestTypeDelete, self).setUp()
- self.types_mock.get.return_value = self.volume_type
+ self.types_mock.get = volume_fakes.FakeType.get_types(
+ self.volume_types)
self.types_mock.delete.return_value = None
# Get the command object to mock
@@ -146,18 +148,64 @@ class TestTypeDelete(TestType):
def test_type_delete(self):
arglist = [
- self.volume_type.id
+ self.volume_types[0].id
]
verifylist = [
- ("volume_types", [self.volume_type.id])
+ ("volume_types", [self.volume_types[0].id])
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
result = self.cmd.take_action(parsed_args)
- self.types_mock.delete.assert_called_with(self.volume_type)
+ self.types_mock.delete.assert_called_with(self.volume_types[0])
self.assertIsNone(result)
+ def test_delete_multiple_types(self):
+ arglist = []
+ for t in self.volume_types:
+ arglist.append(t.id)
+ verifylist = [
+ ('volume_types', arglist),
+ ]
+
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+ result = self.cmd.take_action(parsed_args)
+
+ calls = []
+ for t in self.volume_types:
+ calls.append(call(t))
+ self.types_mock.delete.assert_has_calls(calls)
+ self.assertIsNone(result)
+
+ def test_delete_multiple_types_with_exception(self):
+ arglist = [
+ self.volume_types[0].id,
+ 'unexist_type',
+ ]
+ verifylist = [
+ ('volume_types', arglist),
+ ]
+
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ find_mock_result = [self.volume_types[0], exceptions.CommandError]
+ with mock.patch.object(utils, 'find_resource',
+ side_effect=find_mock_result) as find_mock:
+ try:
+ self.cmd.take_action(parsed_args)
+ self.fail('CommandError should be raised.')
+ except exceptions.CommandError as e:
+ self.assertEqual('1 of 2 volume types failed to delete.',
+ str(e))
+ find_mock.assert_any_call(
+ self.types_mock, self.volume_types[0].id)
+ find_mock.assert_any_call(self.types_mock, 'unexist_type')
+
+ self.assertEqual(2, find_mock.call_count)
+ self.types_mock.delete.assert_called_once_with(
+ self.volume_types[0]
+ )
+
class TestTypeList(TestType):