[silva.core.smi][Sylvain Viollon] Moar tests.

[email protected] Thu, 14 Nov 2013 18:03:21 +0100
Newsgroups gmane.comp.web.zope.silva.cvs
Message-ID <[email protected]>
author:    Sylvain Viollon
date:      Thu Nov 14 18:03:16 2013 +0100
revision:  714:86ba208f0878 in silva.core.smi
branch:    2.4
details:   https://hg.infrae.com/silva.core.smi?cmd=changeset;node=86ba208f0878
modified:  src/silva/core/smi/tests/test_func_file.py src/silva/core/smi/tests/test_func_image.py
added:     src/silva/core/smi/tests/test_func_image.py
removed:   
log:       Moar tests.


diffstat:

 src/silva/core/smi/tests/test_func_file.py  |    3 +-
 src/silva/core/smi/tests/test_func_image.py |  154 ++++++++++++++++++++++++++++
 2 files changed, 155 insertions(+), 2 deletions(-)

diffs (178 lines):

diff -r 2cfab1ce21da -r 86ba208f0878 src/silva/core/smi/tests/test_func_file.py
--- a/src/silva/core/smi/tests/test_func_file.py	Thu Nov 14 17:41:38 2013 +0100
+++ b/src/silva/core/smi/tests/test_func_file.py	Thu Nov 14 18:03:16 2013 +0100
@@ -6,7 +6,6 @@
 
 from Products.Silva.testing import FunctionalLayer, Transaction
 from Products.Silva.ftesting import smi_settings
-from silva.core.references.reference import get_content_id
 
 
 class AuthorFileTestCase(unittest.TestCase):
@@ -33,7 +32,7 @@
             browser.inspect.tabs,
             ['Content', 'Preview', 'Add', 'Properties', 'Settings'])
         self.assertEqual(browser.inspect.tabs['Add'].open.click(), 200)
-        self.assertIn('Silva Ghost', browser.inspect.tabs['Add'].entries)
+        self.assertIn('Silva File', browser.inspect.tabs['Add'].entries)
         self.assertEqual(
             browser.inspect.tabs['Add'].entries['Silva File'].click(),
             200)
diff -r 2cfab1ce21da -r 86ba208f0878 src/silva/core/smi/tests/test_func_image.py
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/silva/core/smi/tests/test_func_image.py	Thu Nov 14 18:03:16 2013 +0100
@@ -0,0 +1,154 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2013 Infrae. All rights reserved.
+# See also LICENSE.txt
+
+import unittest
+
+from Products.Silva.testing import FunctionalLayer, Transaction
+from Products.Silva.ftesting import smi_settings
+
+
+class AuthorImageTestCase(unittest.TestCase):
+    layer = FunctionalLayer
+    user = 'author'
+
+    def setUp(self):
+        self.root = self.layer.get_application()
+        self.layer.login('editor')
+        with Transaction():
+            factory = self.root.manage_addProduct['Silva']
+            with self.layer.open_fixture('silva.png') as stream:
+                factory.manage_addImage('logo', 'Silva Logo', stream)
+
+    def test_image_listing(self):
+        """You can add an image with Selenium (since the upload button
+        doesn't work), however we can check the listing and edit view.
+        """
+        browser = self.layer.get_web_browser(smi_settings)
+        browser.login(self.user)
+
+        self.assertEqual(browser.inspect.title, u"root")
+        self.assertEqual(
+            browser.inspect.tabs,
+            ['Content', 'Preview', 'Add', 'Properties', 'Settings'])
+        self.assertEqual(browser.inspect.tabs['Add'].open.click(), 200)
+        self.assertIn('Silva Image', browser.inspect.tabs['Add'].entries)
+        self.assertEqual(
+            browser.inspect.tabs['Add'].entries['Silva Image'].click(),
+            200)
+        self.assertEqual(browser.inspect.form, ["Add a Silva Image"])
+        self.assertEqual(browser.inspect.toolbar, [])
+
+        form = browser.inspect.form['Add a Silva Image']
+        self.assertIn('Id', form.fields)
+        self.assertIn('Title', form.fields)
+        self.assertEqual(form.actions, ['Cancel', 'Save'])
+        self.assertEqual(form.actions['Cancel'].click(), 200)
+
+        self.assertEqual(
+            browser.inspect.listing_groups,
+            [u'Structural items', u'Assets'])
+        self.assertEqual(browser.inspect.listing_groups['Assets'].click(), 200)
+        self.assertEqual(
+            browser.inspect.listing,
+            [{'title': u'Silva Logo',
+              'identifier': 'logo',
+              'author': u'editor'}])
+        self.assertEqual(browser.inspect.listing[0].identifier.click(), 200)
+        self.assertEqual(browser.inspect.listing[0].goto_dropdown.click(), 200)
+        self.assertEqual(
+            browser.inspect.listing[0].goto_actions,
+            ['Preview', 'Properties'])
+        self.assertEqual(browser.inspect.listing[0].goto.click(), 200)
+
+        # Inspect newly created content
+        self.assertEqual(browser.inspect.title, u'Silva Logo')
+        self.assertEqual(
+            browser.inspect.tabs,
+            ['Edit', 'Preview', 'Properties', 'Settings'])
+        self.assertEqual(browser.inspect.views, ['View...'])
+        # We are on contents
+        self.assertEqual(browser.inspect.activetabs, ['Edit'])
+
+        self.assertEqual(
+            browser.inspect.form,
+            ['Edit', 'Format and scaling'])
+        form = browser.inspect.form['Edit']
+        self.assertIn('Title', form.fields)
+        self.assertIn('Image', form.fields)
+        self.assertEqual(form.actions, ['Back', 'Save changes'])
+
+        form = browser.inspect.form['Format and scaling']
+        self.assertIn('Scaling', form.fields)
+        self.assertIn('Cropping', form.fields)
+        self.assertEqual(form.actions, ['Back', 'Change'])
+
+        # An action let you directly request approval
+        self.assertEqual(browser.inspect.toolbar, [])
+
+        # We go through the tabs.
+        self.assertEqual(browser.inspect.tabs['Preview'].name.click(), 200)
+        self.assertEqual(browser.inspect.activetabs, ['Preview'])
+        self.assertEqual(browser.inspect.tabs['Settings'].name.click(), 200)
+        self.assertEqual(browser.inspect.activetabs, ['Settings'])
+        self.assertEqual(browser.inspect.tabs['Properties'].name.click(), 200)
+        self.assertEqual(browser.inspect.activetabs, ['Properties'])
+        self.assertEqual(browser.inspect.tabs['Edit'].name.click(), 200)
+        self.assertEqual(browser.inspect.activetabs, ['Edit'])
+
+        # Go up a level.
+        self.assertEqual(browser.inspect.parent.click(), 200)
+        self.assertEqual(browser.inspect.title, u"root")
+        self.assertEqual(browser.inspect.activetabs, ['Content'])
+
+        # We should see our ghost and the original document.
+        self.assertEqual(
+            browser.inspect.listing,
+            [{'title': u'Silva Logo',
+              'identifier': 'logo',
+              'author': u'editor'}])
+
+        # Select it
+        self.assertEqual(browser.inspect.listing[0].identifier.click(), 200)
+        self.assertEqual(
+            browser.inspect.toolbar,
+            ['Cut', 'Copy', 'Delete', 'Rename'])
+
+        self.assertEqual(browser.inspect.toolbar['Delete'].click(), 200)
+        # Content is not deleted, you have to confirm the deletion first.
+        self.assertEqual(
+            browser.inspect.listing,
+            [{'title': u'Silva Logo',
+              'identifier': 'logo',
+              'author': u'editor'}])
+        self.assertEqual(browser.inspect.dialog, ['Confirm deletion'])
+        self.assertEqual(
+            browser.inspect.dialog[0].buttons,
+            ['Cancel', 'Continue'])
+        self.assertEqual(
+            browser.inspect.dialog[0].buttons['Continue'].click(),
+            200)
+        self.assertEqual(browser.inspect.listing, [])
+        browser.macros.assertFeedback(u'Deleted "Silva Logo".')
+
+
+class EditorImageTestCase(AuthorImageTestCase):
+    user = 'editor'
+
+
+class ChiefEditorImageTestCase(EditorImageTestCase):
+    user = 'chiefeditor'
+
+
+class ManagerImageTestCase(ChiefEditorImageTestCase):
+    user = 'manager'
+
+
+def test_suite():
+    suite = unittest.TestSuite()
+    suite.addTest(unittest.makeSuite(AuthorImageTestCase))
+    suite.addTest(unittest.makeSuite(EditorImageTestCase))
+    suite.addTest(unittest.makeSuite(ChiefEditorImageTestCase))
+    suite.addTest(unittest.makeSuite(ManagerImageTestCase))
+    return suite
+