def test_breadcrumbs_singleton(self): brd = Breadcrumbs() brd(**self.data[0]) brd2 = Breadcrumbs() brd2(**self.data[1]) # test 3 instances to see if singleton really works self.assertEqual(self.breadcrumbs[0].__dict__, Breadcrumb(**self.data[0]).__dict__) self.assertEqual(self.breadcrumbs[1].__dict__, Breadcrumb(**self.data[1]).__dict__) self.assertEqual(brd[1].__dict__, Breadcrumbs()[1].__dict__)
def setUp(self): self.old_MIDDLEWARE_CLASSES = settings.MIDDLEWARE_CLASSES breadcrumbs_middleware_class = 'breadcrumbs.middleware.BreadcrumbsMiddleware' if breadcrumbs_middleware_class not in settings.MIDDLEWARE_CLASSES: settings.MIDDLEWARE_CLASSES += (breadcrumbs_middleware_class, ) self.old_TEMPLATE_CONTEXT_PROCESSORS = settings.TEMPLATE_CONTEXT_PROCESSORS request_processor = 'django.core.context_processors.request' if request_processor not in settings.TEMPLATE_CONTEXT_PROCESSORS: settings.TEMPLATE_CONTEXT_PROCESSORS += (request_processor, ) self.old_TEMPLATE_DIRS = settings.TEMPLATE_DIRS settings.TEMPLATE_DIRS = (os.path.join(os.path.dirname(__file__), 'templates'), ) # now we start singleton. singleton are tested on singleton_tests.py self.breadcrumbs = Breadcrumbs() # set some common ta to use SD = SortedDict self.data = [ SD([('name', 'Page1'), ('url', '/page1/')]), SD([('name', 'Page2'), ('url', '/page2/')]), SD([('name', 'Page3'), ('url', '/page2/page3/')]), SD([('name', 'Page4'), ('url', '/page4/')]), SD([('name', 'Page5'), ('url', '/page5/')]), ]
def setUp(self): breadcrumbs_middleware_class = 'breadcrumbs.middleware.BreadcrumbsMiddleware' flatpages_middleware_class = 'breadcrumbs.middleware.FlatpageFallbackMiddleware' # remove breadcrumbs middlewares to assert that we set correct # order self.old_MIDDLEWARE_CLASSES = settings.MIDDLEWARE_CLASSES settings.MIDDLEWARE_CLASSES = [mid for mid \ in self.old_MIDDLEWARE_CLASSES if mid not in \ (breadcrumbs_middleware_class, flatpages_middleware_class)] settings.MIDDLEWARE_CLASSES += [ breadcrumbs_middleware_class, flatpages_middleware_class ] self.old_TEMPLATE_DIRS = settings.TEMPLATE_DIRS settings.TEMPLATE_DIRS = (os.path.join(os.path.dirname(__file__), 'templates'), ) # now we start singleton. singleton are tested on singleton_tests.py self.breadcrumbs = Breadcrumbs()
# -*- coding: utf-8 -*- # TODO: Write unit tests!!! # run this script on your shell from breadcrumbs import Breadcrumbs bds = Breadcrumbs() # fill one per time for i in range(5): bds('name%s' % i, 'url%s' % i) # create a simple class to emulate one object with name and url class EmulateObj(object): def __init__(self, *args): self.name = args[0] self.url = args[1] # add 10 objects bds([EmulateObj('name %s' % (i + 10), 'url %s' % (i + 10)) for i in range(10)]) # print all for bd in bds: print bd.name, bd.url
def process_request(self, request): request.breadcrumbs = Breadcrumbs() request.breadcrumbs._clean()