class test_locator_with_proxy_and_factorization(TestCase): ''' Test the locator via the assembler for factorization. ''' def setUp(self): self.locator = Locator() self.transformer = Transformer(self.locator) self.assembler = Assembler(self.transformer) def tearDown(self): del self.locator del self.transformer del self.assembler def test_good_locator_xml_on_entity_registration(self): self.__prepare_good_locator_from_xml() # Normal entity self.assertTrue(self.locator.has('manager'), self.locator._entities) # Factorized entities self.assertTrue(self.locator.has('worker.alpha')) self.assertTrue(self.locator.has('worker.bravo')) self.assertTrue(self.locator.has('def.doubler')) self.assertTrue(self.locator.has('def.trippler')) def test_get_object(self): self.__prepare_good_locator_from_xml() ticker = self.locator.get('ticker') trigger = self.locator.get('something') entity = self.locator.get('worker.alpha') self.assertIsInstance(entity, Worker) self.assertEqual(entity.name, 'Alpha') self.assertEqual(0, len(ticker.sequence)) trigger.alpha() self.assertEqual(1, len(ticker.sequence)) def test_get_callback(self): self.__prepare_good_locator_from_xml() ticker = self.locator.get('ticker') trigger = self.locator.get('something') doubler = self.locator.get('def.doubler') self.assertTrue(callable(doubler)) self.assertEqual(12, doubler(6)) self.assertEqual(0, len(ticker.sequence)) trigger.doubler() # No interception for callable object as of 1.9. self.assertEqual(0, len(ticker.sequence)) def __get_data_path(self, filename): return abspath(join(dirname(__file__), '..', 'data', filename)) def __load_from_xml(self, path_from_data): test_file = self.__get_data_path(path_from_data) self.assembler.load(test_file) def __prepare_good_locator_from_xml(self): self.__load_from_xml('locator-factorization.xml')
class TestLocator(TestCase): ''' Test the locator via the assembler. ''' class UnknownEntity(object): pass def setUp(self): self.locator = Locator() self.transformer = Transformer(self.locator) self.assembler = Assembler(self.transformer) def tearDown(self): del self.locator del self.transformer del self.assembler def test_checker(self): entity = self.__make_good_entity() self.assertFalse(self.locator.has('poo')) self.assertRaises(UnknownEntityError, self.locator.get, ('poo')) def test_before_activation(self): entity = self.__make_good_entity() self.locator.set('poo', entity) self.assertTrue(self.locator.has('poo')) self.assertFalse(entity.activated) def test_after_activation(self): entity = self.__make_good_entity() self.locator.set('poo', entity) self.assertIsInstance(self.locator.get('poo'), PlainOldObject) self.assertTrue(entity.activated) def test_good_locator_xml_on_entity_registration(self): self.__prepare_good_locator_from_xml() self.assertTrue(self.locator.has('poo')) self.assertTrue(self.locator.has('poow-1')) self.assertTrue(self.locator.has('poow-2')) self.assertTrue(self.locator.has('dioc')) self.assertTrue(self.locator.has('dioe')) def test_good_locator_xml_on_class_injection(self): self.__prepare_good_locator_from_xml() self.assertEqual(self.locator.get('dioc').r, PlainOldObject) def test_good_locator_xml_on_class_injection(self): self.__prepare_good_locator_from_xml() self.assertIsInstance(self.locator.get('dioe').e, PlainOldObjectWithParameters) def test_entities_with_same_class(self): self.__prepare_good_locator_from_xml() self.assertIsInstance(self.locator.get('poow-1'), PlainOldObjectWithParameters) self.assertIsInstance(self.locator.get('poow-2'), PlainOldObjectWithParameters) self.assertNotEquals(self.locator.get('poow-1').method(), self.locator.get('poow-2').method()) self.assertEquals('%.2f' % self.locator.get('poow-1').method(), '0.67') self.assertEquals(self.locator.get('poow-2').method(), 35) def __make_good_entity(self): return Entity( 'poo', Loader('dummy.core.PlainOldObject') ) def __get_data_path(self, filename): return abspath(join(dirname(__file__), '..', 'data', filename)) def __load_from_xml(self, path_from_data): test_file = self.__get_data_path(path_from_data) self.assembler.load(test_file) def __prepare_good_locator_from_xml(self): self.__load_from_xml('locator.xml')