class ResourceReferenceTest(unittest.TestCase): def setUp(self): self._res_a_1 = TestResourceClassA('res'), self._res_a_2 = TestResourceClassA('res') self._res_b_1 = TestResourceClassB('res') self._device_port_spec_1 = {'device_name': 'bridge-000-001', 'port_id': 1} self._device_port_spec_2 = {'device_name': 'bridge-000-001', 'port_id': 2} self._setter_uuid = 'set_uuid' self._setter_type = 'set_uuid' self._ref1 = ResourceReference(self._res_a_1, self._setter_uuid, self._device_port_spec_1) self._ref2 = ResourceReference(self._res_a_1, self._setter_uuid, self._device_port_spec_1) self._ref3 = ResourceReference(self._res_a_2, self._setter_uuid, self._device_port_spec_1) self._ref4 = ResourceReference(self._res_b_1, self._setter_uuid, self._device_port_spec_1) self._ref5 = ResourceReference(self._res_a_1, self._setter_type, self._device_port_spec_1) self._ref6 = ResourceReference(self._res_a_1, self._setter_uuid, self._device_port_spec_2) def test_resource_reference_eq(self): # The same referencing resource object, same setter and specs. self.assertEqual(self._ref1, self._ref2) # The same reference classes but different instances. self.assertNotEqual(self._ref1, self._ref3) # The same reference classes but different instances. self.assertNotEqual(self._ref1, self._ref4) # Different attribute setters. self.assertNotEqual(self._ref1, self._ref5) # Different reference specs. self.assertNotEqual(self._ref1, self._ref6) def test_get_reference_spec(self): self.assertEqual(self._device_port_spec_1, self._ref1.get_reference_spec()) def test_resolve_reference(self): mock_resource = MagicMock() ref = ResourceReference(mock_resource, self._setter_uuid, self._device_port_spec_1) ref.resolve_reference('uuid-000') mock_resource.set_uuid.assert_called_with('uuid-000')