def test_context_processor_new_section(self): "Subsequent calls with a new section only require querying the placements." other_section = self.create_section(pattern='^/bar/') current_placements(self.request) with self.assertNumQueries(1): request = self.factory.get('/bar/') current_placements(request)
def test_context_processor_no_cache(self): "Number of queries for the context processor with no cache." cache.clear() with self.assertNumQueries(2): # One query to get all current sections # One query to get all placements the current section current_placements(self.request)
def test_match_priority(self): "Resolve overlapping regex patterns by using priority flag." request = self.factory.get('/foo/bar') section = self.create_section(pattern='^/foo/', priority=0) other_section = self.create_section(pattern='^/foo/bar', priority=1) context = current_placements(request) self.assertEqual(context[SECTION_CONTEXT_KEY], other_section)
def test_match_url_no_placements(self): "Handle no placements for the match url." request = self.factory.get('/foo/') section = self.create_section(pattern='^/foo/') context = current_placements(request) placements = context[PLACEMENTS_CONTEXT_KEY] self.assertEqual(len(placements), 0)
def test_match_url_placements(self): "Successful match of placements for the current url." request = self.factory.get('/foo/') section = self.create_section(pattern='^/foo/') placement = self.create_placement() placement.sections.add(section) context = current_placements(request) placements = context[PLACEMENTS_CONTEXT_KEY] self.assertEqual(len(placements), 1) self.assertTrue(placement in placements)
def test_no_existing_sections(self): "Handle when no sections are defined." request = self.factory.get('/foo/') context = current_placements(request) self.assertEqual(context[SECTION_CONTEXT_KEY], None)
def test_no_matched_urls(self): "Handle when no sections match the current url." request = self.factory.get('/foo/') section = self.create_section(pattern='^/bar/') context = current_placements(request) self.assertEqual(context[SECTION_CONTEXT_KEY], None)
def test_matched_url(self): "Successful match of a section to the current url." request = self.factory.get('/foo/') section = self.create_section(pattern='^/foo/') context = current_placements(request) self.assertEqual(context[SECTION_CONTEXT_KEY], section)
def test_context_processor_cached(self): "Subsequent calls through the context process should be cached." current_placements(self.request) with self.assertNumQueries(0): request = self.factory.get('/foo/') current_placements(request)