You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by br...@apache.org on 2020/04/13 17:43:25 UTC

[allura] 33/50: [#7935] Created tests for the controller

This is an automated email from the ASF dual-hosted git repository.

brondsem pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/allura.git

commit 93600c127d2ab075f30cf043687a921b5bff720f
Author: Fahri Korkmaz <f....@codesys.com>
AuthorDate: Thu Mar 5 14:28:54 2020 +0100

    [#7935] Created tests for the controller
---
 .../forgeimporters/tests/forge/test_discussion.py  | 58 +++++++++++++++++++---
 1 file changed, 50 insertions(+), 8 deletions(-)

diff --git a/ForgeImporters/forgeimporters/tests/forge/test_discussion.py b/ForgeImporters/forgeimporters/tests/forge/test_discussion.py
index 020dadb..bb75321 100644
--- a/ForgeImporters/forgeimporters/tests/forge/test_discussion.py
+++ b/ForgeImporters/forgeimporters/tests/forge/test_discussion.py
@@ -22,9 +22,10 @@ import mock
 from dateutil.parser import parse
 
 from ming.odm import ThreadLocalORMSession
+import webtest
 
 from allura.tests import TestController
-from allura.tests.decorators import with_tracker
+from allura.tests.decorators import with_discussion
 
 from allura import model as M
 from forgeimporters.forge import discussion
@@ -214,7 +215,8 @@ class TestDiscussionImporter(TestCase):
             subject=post["subject"],
             text='aa',
             timestamp=parse(post["timestamp"]),
-            ignore_security=True
+            ignore_security=True,
+            parent_id=None
         )
         importer.annotate_text.assert_called_once_with(post["text"], admin, post["author"])
         p.add_multiple_attachments.assert_called_once_with([])
@@ -695,7 +697,8 @@ class TestDiscussionImporter(TestCase):
                 subject=_json[0]['subject'],
                 text='foo',
                 timestamp=parse(_json[0]['timestamp']),
-                ignore_security=True
+                ignore_security=True,
+                parent_id=None
         )
         post.add_multiple_attachments.assert_called_once_with([])
         
@@ -802,7 +805,8 @@ class TestDiscussionImporter(TestCase):
             subject=_json[0]['subject'],
             text=importer.annotate_text.return_value,
             timestamp=parse(_json[0]['timestamp']),
-            ignore_security=True
+            ignore_security=True,
+            parent_id=None
         )
         post.add_multiple_attachments.assert_called_once_with([])
         
@@ -1189,16 +1193,54 @@ class TestForgeDiscussionController(TestController, TestCase):
     
     def setUp(self):
         super(TestForgeDiscussionController, self).setUp()
-        from forgetracker.tracker_main import TrackerAdminController
-        TrackerAdminController._importer = \
+        from forgediscussion.forum_main import ForumAdminController
+        ForumAdminController._importer = \
                 discussion.ForgeDiscussionImportController(discussion.ForgeDiscussionImporter())
 
     
-    @with_tracker
+    @with_discussion
     def test_index(self):
-        r = self.app.get('/p/test/admin/bugs/_importer/')
+        r = self.app.get('/p/test/admin/ext/import/forge-discussion/')
         self.assertIsNotNone(r.html.find(attrs=dict(name="discussions_json")))
         self.assertIsNotNone(r.html.find(attrs=dict(name="mount_label")))
         self.assertIsNotNone(r.html.find(attrs=dict(name="mount_point")))
 
 
+    @with_discussion
+    @mock.patch('forgeimporters.forge.discussion.save_importer_upload')
+    @mock.patch('forgeimporters.base.import_tool')
+    def test_create(self, import_tool, siu):
+        project = M.Project.query.get(shortname='test')
+        params = {
+            'discussions_json': webtest.Upload('discussions.json', b'{"key": "val"}'),
+            'mount_label': 'mylabel',
+            'mount_point': 'mymount',
+        }
+        r = self.app.post('/p/test/admin/ext/import/forge-discussion/create', params,
+                          status=302)
+        self.assertEqual(r.location, 'http://localhost/p/test/admin/')
+        siu.assert_called_once_with(project, 'discussions.json', '{"key": "val"}')
+        self.assertEqual(
+            'mymount', import_tool.post.call_args[1]['mount_point'])
+        self.assertEqual(
+            'mylabel', import_tool.post.call_args[1]['mount_label'])
+
+
+    @with_discussion
+    @mock.patch('forgeimporters.forge.discussion.save_importer_upload')
+    @mock.patch('forgeimporters.base.import_tool')
+    def test_create_limit(self, import_tool, siu):
+        project = M.Project.query.get(shortname='test')
+        project.set_tool_data('ForgeDiscussionImporter', pending=1)
+        ThreadLocalORMSession.flush_all()
+        params = {
+            'discussions_json': webtest.Upload('discussions.json', b'{"key": "val"}'),
+            'mount_label': 'mylabel',
+            'mount_point': 'mymount',
+        }
+        r = self.app.post('/p/test/admin/ext/import/forge-discussion/create', params,
+                          status=302).follow()
+        self.assertIn('Please wait and try again', r)
+        self.assertEqual(import_tool.post.call_count, 0)
+
+