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_plugin_mismatch(self): storage.set('i18n://[email protected]#draft', u'A') storage.publish('i18n://[email protected]#draft') with self.assertRaises(NodeDoesNotExist): storage.get('i18n://[email protected]') nodes = storage.get_many(('i18n://[email protected]', )) self.assertDictEqual(nodes, {})
def test_create_update(self): storage.set('i18n://[email protected]#draft', u'first') node = storage.get('i18n://sv-se@a#draft') self.assertEqual(node['content'], u'first') self.assertEqual(node['uri'], 'i18n://[email protected]#draft') storage.set('i18n://[email protected]#draft', u'second') node = storage.get('i18n://sv-se@a#draft') self.assertEqual(node['content'], u'second') self.assertEqual(node['uri'], 'i18n://[email protected]#draft')
def test_plugin_mismatch(self): storage.set('i18n://[email protected]#draft', u'A') storage.publish('i18n://[email protected]#draft') with self.assertRaises(NodeDoesNotExist): storage.get('i18n://[email protected]') nodes = storage.get_many(('i18n://[email protected]',)) self.assertDictEqual(nodes, {})
def test_delete(self): response = self.delete('api', 'i18n://sv-se@page/title') self.assertEqual(response.status_code, 404) node = cio.set('i18n://sv-se@page/title.md', u'# Djedi') response = self.delete('api', node.uri) self.assertEqual(response.status_code, 200) self.assertEqual(response.content, u'') with self.assertRaises(NodeDoesNotExist): storage.get('i18n://sv-se@page/title') node = cio.get('i18n://page/title', lazy=False) self.assertIsNone(node.content)
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_plugin(self): self.assertSetEqual(set(plugins.plugins.keys()), set(['txt', 'md'])) settings.configure(PLUGINS=[ 'cio.plugins.txt.TextPlugin', 'cio.plugins.md.MarkdownPlugin', 'tests.UppercasePlugin' ]) self.assertSetEqual(set(plugins.plugins.keys()), set(['txt', 'md', 'up'])) node = cio.set('sv-se@page/title.up', {'name': u'lundberg'}, publish=False) self.assertListEqual(node._content, [{'name': u'lundberg'}, u'{"name": "lundberg"}', u'LUNDBERG']) cio.publish(node.uri) node = cio.get('page/title') raw_content = storage.get(node.uri) self.assertIsNotNone(raw_content) self.assertEqual(raw_content['uri'], 'i18n://sv-se@page/title.up#1') self.assertEqual(raw_content['content'], u'{"name": "lundberg"}') self.assertEqual(node.content, u'LUNDBERG') self.assertEqual(node.uri.ext, 'up') self.assertSetEqual(set(p for p in plugins), set(('txt', 'md', 'up')))
def test_plugin(self): self.assertSetEqual(set(plugins.plugins.keys()), set(['txt', 'md'])) settings.configure(PLUGINS=[ 'cio.plugins.txt.TextPlugin', 'cio.plugins.md.MarkdownPlugin', 'tests.UppercasePlugin' ]) self.assertSetEqual(set(plugins.plugins.keys()), set(['txt', 'md', 'up'])) node = cio.set('sv-se@page/title.up', {'name': u'lundberg'}, publish=False) self.assertListEqual(node._content, [{ 'name': u'lundberg' }, u'{"name": "lundberg"}', u'LUNDBERG']) cio.publish(node.uri) node = cio.get('page/title') raw_content = storage.get(node.uri) self.assertIsNotNone(raw_content) self.assertEqual(raw_content['uri'], 'i18n://sv-se@page/title.up#1') self.assertEqual(raw_content['content'], u'{"name": "lundberg"}') self.assertEqual(node.content, u'LUNDBERG') self.assertEqual(node.uri.ext, 'up') self.assertSetEqual(set(p for p in plugins), set(('txt', 'md', 'up')))
def test_delete(self): storage.set('i18n://[email protected]#draft', u'A') storage.set('i18n://[email protected]#draft', u'B') node = storage.get('i18n://sv-se@a#draft') self.assertEqual(node['content'], u'A') deleted_node = storage.delete('sv-se@a#draft') deleted_node.pop('meta') self.assertDictEqual(deleted_node, {'uri': 'i18n://[email protected]#draft', 'content': u'A'}) deleted_nodes = storage.delete_many(('sv-se@a#draft', 'sv-se@b#draft')) for node in deleted_nodes.values(): node.pop('meta') self.assertDictEqual(deleted_nodes, { 'i18n://sv-se@b#draft': {'uri': 'i18n://[email protected]#draft', 'content': u'B'} })
def test_get(self): storage.set('i18n://[email protected]#draft', u'A') storage.set('i18n://[email protected]#draft', u'B') node = storage.get('i18n://sv-se@a#draft') self.assertEqual(node['uri'], 'i18n://[email protected]#draft') self.assertEqual(node['content'], u'A') storage.publish('i18n://sv-se@a#draft') storage.publish('i18n://sv-se@b#draft') nodes = storage.get_many(('i18n://sv-se@a', 'i18n://sv-se@b')) for node in nodes.values(): node.pop('meta') self.assertDictEqual(nodes, { 'i18n://sv-se@a': { 'uri': 'i18n://[email protected]#1', 'content': u'A' }, 'i18n://sv-se@b': { 'uri': 'i18n://[email protected]#1', 'content': u'B' } })
def test_get(self): storage.set('i18n://[email protected]#draft', u'A') storage.set('i18n://[email protected]#draft', u'B') node = storage.get('i18n://sv-se@a#draft') self.assertEqual(node['uri'], 'i18n://[email protected]#draft') self.assertEqual(node['content'], u'A') storage.publish('i18n://sv-se@a#draft') storage.publish('i18n://sv-se@b#draft') nodes = storage.get_many(('i18n://sv-se@a', 'i18n://sv-se@b')) for node in nodes.values(): node.pop('meta') self.assertDictEqual( nodes, { 'i18n://sv-se@a': { 'uri': 'i18n://[email protected]#1', 'content': u'A' }, 'i18n://sv-se@b': { 'uri': 'i18n://[email protected]#1', 'content': u'B' } })
def test_delete(self): storage.set('i18n://[email protected]#draft', u'A') storage.set('i18n://[email protected]#draft', u'B') node = storage.get('i18n://sv-se@a#draft') self.assertEqual(node['content'], u'A') deleted_node = storage.delete('sv-se@a#draft') deleted_node.pop('meta') self.assertDictEqual(deleted_node, { 'uri': 'i18n://[email protected]#draft', 'content': u'A' }) deleted_nodes = storage.delete_many(('sv-se@a#draft', 'sv-se@b#draft')) for node in deleted_nodes.values(): node.pop('meta') self.assertDictEqual( deleted_nodes, { 'i18n://sv-se@b#draft': { 'uri': 'i18n://[email protected]#draft', 'content': u'B' } })
def test_nonexisting_node(self): with self.assertRaises(URI.Invalid): storage.get('?') with self.assertRaises(NodeDoesNotExist): storage.get('sv-se@page/title')