def test_cached_node(self): with self.assertRaises(NodeDoesNotExist): storage.get(self.uri) content = cache.get(self.uri) self.assertIsNone(content) node, _ = storage.set(self.uri + '#draft', u'e-post') storage.publish(node['uri']) with self.assertCache(calls=2, misses=1, sets=1): node = cio.get('i18n://label/email', lazy=False) cached_node = cache.get('i18n://sv-se@label/email') self.assertIsInstance(cached_node, dict) self.assertKeys(cached_node, 'uri', 'content') _uri, content = cached_node['uri'], cached_node['content'] self.assertEqual(_uri, 'i18n://sv-se@label/email.txt#1') self.assertTrue(content == node.content == u'e-post') with self.assertCache(calls=1, misses=0, hits=1): node = cio.get('i18n://label/email', lazy=False) self.assertEqual(node.uri, 'i18n://sv-se@label/email.txt#1') cio.delete(self.uri) content = cache.get(self.uri) self.assertIsNone(content)
def test_set(self): uri = 'i18n://sv-se@page/title.txt#1' content = u'Title' self.assertIsNone(cache.get(uri)) cache.set(uri, content) node = cache.get(uri) self.assertEqual(node['uri'], uri) self.assertEqual(node['content'], content) cache.delete(uri) self.assertIsNone(cache.get(uri))
def test_delete(self): with self.assertRaises(URI.Invalid): cio.delete('foo/bar') node = cio.set('i18n://sv-se@label/email.txt', u'e-post') uri = node.uri self.assertEqual(cache.get(uri)['content'], u'e-post') uris = cio.delete('sv-se@label/email#1', 'sv-se@foo/bar') self.assertListEqual(uris, ['sv-se@label/email#1']) with self.assertRaises(NodeDoesNotExist): storage.get(uri) self.assertIsNone(cache.get(uri))
def test_uri_redirect(self): cio.set('i18n://sv-se@page/title.txt', u'Title') node = cio.get('i18n://sv-se@page/title', u'Default') self.assertEqual(node.uri, 'i18n://sv-se@page/title.txt#1') self.assertEqual(node.content, u'Title') node = cio.get('i18n://sv-se@page/title.up', u'Default Upper', lazy=False) self.assertEqual(node.uri, 'i18n://sv-se@page/title.up') self.assertEqual( node.content, u'DEFAULT UPPER' ) # Cache still contains 'Title', but plugin diff and skipped cached_node = cache.get(node.uri) self.assertDictEqual(cached_node, { 'uri': node.uri, 'content': u'DEFAULT UPPER' }) cache.clear() node = cio.get('i18n://sv-se@page/title.up', u'Default-Upper', lazy=False) self.assertEqual(node.uri, 'i18n://sv-se@page/title.up') self.assertEqual( node.content, u'DEFAULT-UPPER' ) # Cache cleared, storage plugin mismatch, default fallback
def test_cache_encoding(self): cio.set(self.uri, u'epost') cached_node = cache.get(self.uri) content = cached_node['content'] self.assertIsInstance(content, six.text_type) self.assertEqual(content, u'epost') cache.set('i18n://sv-se@label/email.txt#1', u'epost') nodes = cache.get_many((self.uri, self.uri)) self.assertDictEqual(nodes, {self.uri: {'uri': 'i18n://sv-se@label/email.txt#1', 'content': u'epost'}})
def test_uri_redirect(self): cio.set('i18n://sv-se@page/title.txt', u'Title') node = cio.get('i18n://sv-se@page/title', u'Default') self.assertEqual(node.uri, 'i18n://sv-se@page/title.txt#1') self.assertEqual(node.content, u'Title') node = cio.get('i18n://sv-se@page/title.up', u'Default Upper', lazy=False) self.assertEqual(node.uri, 'i18n://sv-se@page/title.up') self.assertEqual(node.content, u'DEFAULT UPPER') # Cache still contains 'Title', but plugin diff and skipped cached_node = cache.get(node.uri) self.assertDictEqual(cached_node, {'uri': node.uri, 'content': u'DEFAULT UPPER'}) cache.clear() node = cio.get('i18n://sv-se@page/title.up', u'Default-Upper', lazy=False) self.assertEqual(node.uri, 'i18n://sv-se@page/title.up') self.assertEqual(node.content, u'DEFAULT-UPPER') # Cache cleared, storage plugin mismatch, default fallback
def test_uri_redirect(self): cio.set('i18n://sv-se@page/title.txt', u'Title') node = cio.get('i18n://sv-se@page/title', u'Default') self.assertEqual(node.uri, 'i18n://sv-se@page/title.txt#1') self.assertEqual(node.content, u'Title') node = cio.get('i18n://sv-se@page/title.md', u'# Default Markdown', lazy=False) self.assertEqual(node.uri, 'i18n://sv-se@page/title.md') self.assertEqual(node.content, u'<h1>Default Markdown</h1>') # Cache still contains 'Title', but plugin diff and skipped cached_node = cache.get(node.uri) self.assertDictEqual(cached_node, {'uri': node.uri, 'content': u'<h1>Default Markdown</h1>'}) cache.clear() node = cio.get('i18n://sv-se@page/title.md', u'Default Markdown', lazy=False) self.assertEqual(node.uri, 'i18n://sv-se@page/title.md') self.assertEqual(node.content, u'<p>Default Markdown</p>') # Cache cleared, storage plugin mismatch, default fallback
def test_cache_encoding(self): cio.set(self.uri, u'epost') cached_node = cache.get(self.uri) content = cached_node['content'] self.assertIsInstance(content, six.text_type) self.assertEqual(content, u'epost') cache.set('i18n://sv-se@label/email.txt#1', u'epost') nodes = cache.get_many((self.uri, self.uri)) self.assertDictEqual( nodes, { self.uri: { 'uri': 'i18n://sv-se@label/email.txt#1', 'content': u'epost' } })