def test_logo(self): env = EnvironmentStub() req = Mock(hdf=HDFWrapper(), cgi_location='/trac.cgi', path_info='') # Verify that no logo data is put in the HDF if no logo is configured env.config.set('header_logo', 'src', '') Chrome(env).populate_hdf(req, None) assert 'chrome.logo.src' not in req.hdf # Test with a relative path to the logo image req.hdf = HDFWrapper() env.config.set('header_logo', 'src', 'foo.png') Chrome(env).populate_hdf(req, None) self.assertEqual('/trac.cgi/chrome/common/foo.png', req.hdf['chrome.logo.src']) # Test with a server-relative path to the logo image req.hdf = HDFWrapper() env.config.set('header_logo', 'src', '/img/foo.png') Chrome(env).populate_hdf(req, None) self.assertEqual('/img/foo.png', req.hdf['chrome.logo.src']) # Test with an absolute path to the logo image req.hdf = HDFWrapper() env.config.set('header_logo', 'src', 'http://www.example.org/foo.png') Chrome(env).populate_hdf(req, None) self.assertEqual('http://www.example.org/foo.png', req.hdf['chrome.logo.src'])
def test_icon_links(self): env = EnvironmentStub() req = Mock(hdf=HDFWrapper(), cgi_location='/trac.cgi', path_info='') # No icon set in config, so no icon links env.config.set('project', 'icon', '') Chrome(env).populate_hdf(req, None) assert 'chrome.links.icon' not in req.hdf assert 'chrome.links.shortcut icon' not in req.hdf # Relative URL for icon config option env.config.set('project', 'icon', 'trac.ico') Chrome(env).populate_hdf(req, None) self.assertEqual('/trac.cgi/chrome/common/trac.ico', req.hdf['chrome.links.icon.0.href']) self.assertEqual('/trac.cgi/chrome/common/trac.ico', req.hdf['chrome.links.shortcut icon.0.href']) # URL relative to the server root for icon config option req.hdf = HDFWrapper() env.config.set('project', 'icon', '/favicon.ico') Chrome(env).populate_hdf(req, None) self.assertEqual('/favicon.ico', req.hdf['chrome.links.icon.0.href']) self.assertEqual('/favicon.ico', req.hdf['chrome.links.shortcut icon.0.href']) # Absolute URL for icon config option req.hdf = HDFWrapper() env.config.set('project', 'icon', 'http://example.com/favicon.ico') Chrome(env).populate_hdf(req, None) self.assertEqual('http://example.com/favicon.ico', req.hdf['chrome.links.icon.0.href']) self.assertEqual('http://example.com/favicon.ico', req.hdf['chrome.links.shortcut icon.0.href'])
def test_logo(self): env = EnvironmentStub(enable=[]) req = Mock(hdf=HDFWrapper(), href=Href('/trac.cgi'), base_path='/trac.cgi', path_info='') # Verify that no logo data is put in the HDF if no logo is configured env.config.set('header_logo', 'src', '') Chrome(env).populate_hdf(req, None) assert 'chrome.logo.src' not in req.hdf # Test with a relative path to the logo image req.hdf = HDFWrapper() env.config.set('header_logo', 'src', 'foo.png') Chrome(env).populate_hdf(req, None) self.assertEqual('/trac.cgi/chrome/common/foo.png', req.hdf['chrome.logo.src']) # Test with a server-relative path to the logo image req.hdf = HDFWrapper() env.config.set('header_logo', 'src', '/img/foo.png') Chrome(env).populate_hdf(req, None) self.assertEqual('/img/foo.png', req.hdf['chrome.logo.src']) # Test with an absolute path to the logo image req.hdf = HDFWrapper() env.config.set('header_logo', 'src', 'http://www.example.org/foo.png') Chrome(env).populate_hdf(req, None) self.assertEqual('http://www.example.org/foo.png', req.hdf['chrome.logo.src'])
def test_nav_contributor_order(self): class TestNavigationContributor1(Component): implements(INavigationContributor) def get_active_navigation_item(self, req): return None def get_navigation_items(self, req): yield 'metanav', 'test1', 'Test 1' class TestNavigationContributor2(Component): implements(INavigationContributor) def get_active_navigation_item(self, req): return None def get_navigation_items(self, req): yield 'metanav', 'test2', 'Test 2' env = EnvironmentStub( enable=[TestNavigationContributor1, TestNavigationContributor2]) req = Mock(hdf=HDFWrapper(), path_info='/', cgi_location='/trac.cgi') chrome = Chrome(env) # Test with both items set in the order option env.config.set('trac', 'metanav', 'test2, test1') chrome.populate_hdf(req, None) node = req.hdf.getObj('chrome.nav.metanav').child() self.assertEqual('test2', node.name()) self.assertEqual('test1', node.next().name()) # Test with only test1 in the order options req.hdf = HDFWrapper() env.config.set('trac', 'metanav', 'test1') chrome.populate_hdf(req, None) node = req.hdf.getObj('chrome.nav.metanav').child() self.assertEqual('test1', node.name()) self.assertEqual('test2', node.next().name()) # Test with only test2 in the order options req.hdf = HDFWrapper() env.config.set('trac', 'metanav', 'test2') chrome.populate_hdf(req, None) node = req.hdf.getObj('chrome.nav.metanav').child() self.assertEqual('test2', node.name()) self.assertEqual('test1', node.next().name()) # Test with none in the order options (order corresponds to # registration order) req.hdf = HDFWrapper() env.config.set('trac', 'metanav', 'foo, bar') chrome.populate_hdf(req, None) node = req.hdf.getObj('chrome.nav.metanav').child() self.assertEqual('test1', node.name()) self.assertEqual('test2', node.next().name())
def test_nav_contributor_order(self): class TestNavigationContributor1(Component): implements(INavigationContributor) def get_active_navigation_item(self, req): return None def get_navigation_items(self, req): yield 'metanav', 'test1', 'Test 1' class TestNavigationContributor2(Component): implements(INavigationContributor) def get_active_navigation_item(self, req): return None def get_navigation_items(self, req): yield 'metanav', 'test2', 'Test 2' env = EnvironmentStub(enable=[TestNavigationContributor1, TestNavigationContributor2]) req = Mock(hdf=HDFWrapper(), href=Href('/trac.cgi'), path_info='/', base_path='/trac.cgi') chrome = Chrome(env) # Test with both items set in the order option env.config.set('trac', 'metanav', 'test2, test1') chrome.populate_hdf(req, None) node = req.hdf.getObj('chrome.nav.metanav').child() self.assertEqual('test2', node.name()) self.assertEqual('test1', node.next().name()) # Test with only test1 in the order options req.hdf = HDFWrapper() env.config.set('trac', 'metanav', 'test1') chrome.populate_hdf(req, None) node = req.hdf.getObj('chrome.nav.metanav').child() self.assertEqual('test1', node.name()) self.assertEqual('test2', node.next().name()) # Test with only test2 in the order options req.hdf = HDFWrapper() env.config.set('trac', 'metanav', 'test2') chrome.populate_hdf(req, None) node = req.hdf.getObj('chrome.nav.metanav').child() self.assertEqual('test2', node.name()) self.assertEqual('test1', node.next().name()) # Test with none in the order options (order corresponds to # registration order) req.hdf = HDFWrapper() env.config.set('trac', 'metanav', 'foo, bar') chrome.populate_hdf(req, None) node = req.hdf.getObj('chrome.nav.metanav').child() self.assertEqual('test1', node.name()) self.assertEqual('test2', node.next().name())
def test_icon_links(self): env = EnvironmentStub(enable=[]) req = Mock(hdf=HDFWrapper(), href=Href('/trac.cgi'), base_path='/trac.cgi', path_info='') # No icon set in config, so no icon links env.config.set('project', 'icon', '') Chrome(env).populate_hdf(req, None) assert 'chrome.links.icon' not in req.hdf assert 'chrome.links.shortcut icon' not in req.hdf # Relative URL for icon config option env.config.set('project', 'icon', 'trac.ico') Chrome(env).populate_hdf(req, None) self.assertEqual('/trac.cgi/chrome/common/trac.ico', req.hdf['chrome.links.icon.0.href']) self.assertEqual('/trac.cgi/chrome/common/trac.ico', req.hdf['chrome.links.shortcut icon.0.href']) # URL relative to the server root for icon config option req.hdf = HDFWrapper() env.config.set('project', 'icon', '/favicon.ico') Chrome(env).populate_hdf(req, None) self.assertEqual('/favicon.ico', req.hdf['chrome.links.icon.0.href']) self.assertEqual('/favicon.ico', req.hdf['chrome.links.shortcut icon.0.href']) # Absolute URL for icon config option req.hdf = HDFWrapper() env.config.set('project', 'icon', 'http://example.com/favicon.ico') Chrome(env).populate_hdf(req, None) self.assertEqual('http://example.com/favicon.ico', req.hdf['chrome.links.icon.0.href']) self.assertEqual('http://example.com/favicon.ico', req.hdf['chrome.links.shortcut icon.0.href'])