def test_routing_extras(self): a = object() router = RoutingBase() router.get_or_create_routes(a, ('a', ), sub_routes=('b', 'c')) self.assertEqual(router.list_all(), [a]) item = router.get_route_item('a') self.assertEqual({'b': a, 'c': a}, item) # additional top level route for 'a' with no sub_routes b = object() item = router.get_or_create_routes(b, ('a', )) self.assertEqual(b, item) # re-setting existing sub route for 'a' ... returns 'a' c = object() item = router.get_or_create_routes(c, ('a', ), ('b', )) self.assertEqual(a, item) # additional route for 'a' with no sub_routes ... should return 'b' from top-level cache d = object() item = router.get_or_create_routes(d, ('a', )) self.assertEqual(b, item) # our router now has only two unique items self.assertEqual(2, len(router.list_all())) self.assertEqual({a, b}, set(router.list_all())) # now if we look up an entry we see the items we need to iterate # to resolve the sub_routes (the router does not resolve them for us) item = router.get_route_item('a') self.assertEqual({a, b}, set(list(item.values())))
def test_route_item(self): a = object() router = RoutingBase() router.get_or_create_routes(a, ('a', )) self.assertEqual([a], router.list_all()) # index a single item item = router.get_route_item('a') self.assertIn(a, item.values())
def test_cache(self): a = object() router = RoutingBase() router.get_or_create_routes(a, ('a', )) self.assertEqual(router.list_all(), [a]) # idempotent / cache b = object() item = router.get_or_create_routes(b, ('a', )) self.assertEqual(a, item)
def test_same_routes(self): a = 12345 b = 54321 router = RoutingBase() router.create_route(a, ('a', )) router.create_route(b, ('a', )) self.assertEqual(sorted([a, b]), sorted(router.list_all())) # index a single item items = router.get_route_items('a') self.assertIn(a, items) # explicit sort needed for Python2 self.assertEqual(sorted([a, b]), sorted(items))
def test_same_items(self): a = 12345 b = a router = RoutingBase() router.create_route(a, ('a', )) router.create_route(b, ('b', )) self.assertEqual([a], sorted(router.list_all())) # index a single item items = router.get_route_items('a') self.assertIn(a, items) # index a single item items = router.get_route_items('b') self.assertIn(b, items)
def test_route_two_items(self): a = 12345 b = 54321 router = RoutingBase() router.get_or_create_routes(a, ('a', )) router.get_or_create_routes(b, ('b', )) self.assertEqual(sorted(router.list_all()), sorted([a, b])) # index a single item item = router.get_route_item('a') self.assertIn(a, item.values()) # index a single item item = router.get_route_item('b') self.assertIn(b, item.values())
def test_add_and_list_one_item(self): a = object() router = RoutingBase() router.create_route(a, ('a', )) self.assertEqual([a], router.list_all())