[Products.Silva][Sylvain Viollon] Extend and tests API.
[email protected] Wed, 28 Aug 2013 12:00:25 +0200
| Newsgroups | gmane.comp.web.zope.silva.cvs |
|---|---|
| Message-ID | <[email protected]> |
author: Sylvain Viollon
date: Wed Aug 28 12:00:22 2013 +0200
revision: 11853:7c695cc950df in Products.Silva
branch: 2.4
details: https://hg.infrae.com/Products.Silva?cmd=changeset;node=7c695cc950df
modified: Products/Silva/icon.py Products/Silva/tests/test_icon.py
added:
removed:
log: Extend and tests API.
diffstat:
Products/Silva/icon.py | 20 ++++++++++-----
Products/Silva/tests/test_icon.py | 50 +++++++++++++++++++++++++++++++++++++++
2 files changed, 63 insertions(+), 7 deletions(-)
diffs (111 lines):
diff -r 7c450b1e9276 -r 7c695cc950df Products/Silva/icon.py
--- a/Products/Silva/icon.py Tue Aug 27 18:23:30 2013 +0200
+++ b/Products/Silva/icon.py Wed Aug 28 12:00:22 2013 +0200
@@ -191,23 +191,29 @@
site = IVirtualSite(self.request)
return site.get_root_url()
- def get_tag(self, content=None, identifier=None):
+ def get_tag(self, content=None, identifier=None, default=_marker):
if content is not None:
icon = self.get_content(content)
alt = getattr(content, 'meta_type', 'Missing')
else:
- icon = self.get_identifier(identifier)
+ icon = self.get_identifier(identifier, default=_marker)
alt = identifier or 'Missing'
if icon is not None:
return icon.template.format(
url=icon.get_url(self, content), alt=alt)
return u''
- def get_identifier(self, identifier):
+ def get_identifier(self, identifier, default=_marker):
+ if not isinstance(identifier, tuple):
+ identifier = ('meta_type', identifier)
try:
- return self.sprite.get(('meta_type', identifier))
+ return self.sprite.get(identifier)
except ValueError:
- return self.sprite.get(('default', None), default=None)
+ if default is _marker:
+ default = ('default', None)
+ elif not isinstance(default, tuple):
+ default = ('default', default)
+ return self.sprite.get(default, default=None)
def get_content(self, content):
identifier = ('meta_type', None)
@@ -254,10 +260,10 @@
return icon.get_url(self, content)
return None
- def get_identifier_url(self, identifier):
+ def get_identifier_url(self, identifier, default=_marker):
"""Return a URL out of a identifier.
"""
- icon = self.get_identifier(identifier)
+ icon = self.get_identifier(identifier, default=default)
if icon is not None:
return icon.get_url(self, None)
return None
diff -r 7c450b1e9276 -r 7c695cc950df Products/Silva/tests/test_icon.py
--- a/Products/Silva/tests/test_icon.py Tue Aug 27 18:23:30 2013 +0200
+++ b/Products/Silva/tests/test_icon.py Wed Aug 28 12:00:22 2013 +0200
@@ -108,6 +108,56 @@
resolver.get_tag(),
'<img height="16" width="16" src="http://localhost/root/++static++/silva.icons/missing.png" alt="Missing" />')
+ def test_custom_icons(self):
+ """Test registring icons with a custom namespace and looking
+ them up.
+ """
+ registry.register(('test-silva', 'model'), '++custom++foo.png')
+ registry.register(('test-silva', 'page'), '++custom++bar.jpeg')
+ registry.register(('default', 'test-silva'), '++custom++empty.gif')
+
+ resolver = queryAdapter(TestRequest(), IIconResolver)
+ self.assertTrue(verifyObject(IIconResolver, resolver))
+
+ icon = resolver.get_identifier(('test-silva', 'model'))
+ self.assertTrue(verifyObject(IIcon, icon))
+ self.assertEqual(str(icon), '++custom++foo.png')
+ self.assertEqual(
+ resolver.get_identifier_url(('test-silva', 'model')),
+ 'http://localhost/root/++custom++foo.png')
+
+ icon = resolver.get_identifier(('test-silva', 'missing'))
+ self.assertTrue(verifyObject(IIcon, icon))
+ self.assertEqual(str(icon), '++static++/silva.icons/generic.gif')
+ self.assertEqual(
+ resolver.get_identifier_url(('test-silva', 'missing')),
+ 'http://localhost/root/++static++/silva.icons/generic.gif')
+
+ icon = resolver.get_identifier(
+ ('test-silva', 'missing'), default='test-silva')
+ self.assertTrue(verifyObject(IIcon, icon))
+ self.assertEqual(str(icon), '++custom++empty.gif')
+ self.assertEqual(
+ resolver.get_identifier_url(
+ ('test-silva', 'missing'), default='test-silva'),
+ 'http://localhost/root/++custom++empty.gif')
+
+ icon = resolver.get_identifier(
+ ('test-silva', 'missing'), default=('test-silva', 'page'))
+ self.assertTrue(verifyObject(IIcon, icon))
+ self.assertEqual(str(icon), '++custom++bar.jpeg')
+ self.assertEqual(
+ resolver.get_identifier_url(
+ ('test-silva', 'missing'), default=('test-silva', 'page')),
+ 'http://localhost/root/++custom++bar.jpeg')
+
+ icon = resolver.get_identifier(
+ ('test-silva', 'missing'), default=('test-silva', 'metoo'))
+ self.assertIs(icon, None)
+ self.assertIs(
+ resolver.get_identifier_url(
+ ('test-silva', 'missing'), default=('test-silva', 'metoo')),
+ None)
def test_default_icons(self):
"""Test default registered icons.