1da279b3ad
As commented in [1], "unittest.mock" has been supported in the Python internal unit testing framework since version 3.3. [1]http://lists.openstack.org/pipermail/openstack-discuss/2020-March/013281.html Change-Id: If71241a412ecfe3471a472802e18c986bd05d5b1
77 lines
2.5 KiB
Python
77 lines
2.5 KiB
Python
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
from unittest import mock
|
|
|
|
from neutron_lib.objects import utils as obj_utils
|
|
from neutron_lib.tests import _base as base
|
|
|
|
|
|
class TestUtils(base.BaseTestCase):
|
|
|
|
def test_get_objects_with_filters_not_in(self):
|
|
|
|
class FakeColumn(object):
|
|
def __init__(self, column):
|
|
self.column = column
|
|
|
|
def in_(self, value):
|
|
self.value = value
|
|
return self
|
|
|
|
def __invert__(self):
|
|
return list(set(self.column) - set(self.value))
|
|
|
|
filter_obj = obj_utils.NotIn([1, 2, 3])
|
|
fake_column = FakeColumn([1, 2, 4, 5])
|
|
self.assertEqual([4, 5],
|
|
sorted(filter_obj.filter(fake_column)))
|
|
|
|
fake_column = FakeColumn([1, 2])
|
|
self.assertEqual([], filter_obj.filter(fake_column))
|
|
|
|
fake_column = FakeColumn([4, 5])
|
|
self.assertEqual([4, 5],
|
|
sorted(filter_obj.filter(fake_column)))
|
|
|
|
def test_get_objects_with_filters_not_equal(self):
|
|
|
|
class FakeColumn(object):
|
|
def __init__(self, column):
|
|
self.column = column
|
|
|
|
def __ne__(self, value):
|
|
return [item for item in self.column if item != value]
|
|
|
|
filter_obj = obj_utils.NotEqual(1)
|
|
fake_column = FakeColumn([1, 2, 4, 5])
|
|
self.assertEqual([2, 4, 5],
|
|
sorted(filter_obj.filter(fake_column)))
|
|
|
|
fake_column = FakeColumn([1])
|
|
self.assertEqual([], filter_obj.filter(fake_column))
|
|
|
|
fake_column = FakeColumn([4, 5])
|
|
self.assertEqual([4, 5],
|
|
sorted(filter_obj.filter(fake_column)))
|
|
|
|
def test_get_updatable_fields(self):
|
|
mock_class = mock.Mock()
|
|
mock_class.fields_no_update = [0, 2, 6]
|
|
|
|
mock_fields = mock.Mock()
|
|
mock_fields.copy.return_value = {k: k for k in range(7)}
|
|
|
|
updatable = obj_utils.get_updatable_fields(mock_class, mock_fields)
|
|
self.assertEqual([1, 3, 4, 5],
|
|
sorted(list(updatable.keys())))
|