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 2015/02/02 20:18:24 UTC

[2/2] allura git commit: [#5726] Refactored post_to_feed related functional tests.

[#5726] Refactored post_to_feed related functional tests.


Project: http://git-wip-us.apache.org/repos/asf/allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/allura/commit/c9577b91
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/c9577b91
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/c9577b91

Branch: refs/heads/master
Commit: c9577b91192571e5267fe60f35299ac418b612d2
Parents: ef5610b
Author: Heith Seewald <hs...@slashdotmedia.com>
Authored: Mon Feb 2 12:47:22 2015 -0500
Committer: Dave Brondsema <db...@slashdotmedia.com>
Committed: Mon Feb 2 18:24:52 2015 +0000

----------------------------------------------------------------------
 Allura/allura/templates/widgets/edit_post.html  |  2 +-
 .../templates/widgets/new_topic_post.html       |  2 +-
 .../forgediscussion/controllers/root.py         |  1 +
 .../tests/functional/test_forum.py              | 85 ++++++++------------
 4 files changed, 37 insertions(+), 53 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/allura/blob/c9577b91/Allura/allura/templates/widgets/edit_post.html
----------------------------------------------------------------------
diff --git a/Allura/allura/templates/widgets/edit_post.html b/Allura/allura/templates/widgets/edit_post.html
index a42803e..b3d814c 100644
--- a/Allura/allura/templates/widgets/edit_post.html
+++ b/Allura/allura/templates/widgets/edit_post.html
@@ -18,7 +18,7 @@
 -#}
 {% import 'allura:templates/jinja_master/lib.html' as lib with context %}
 <div>
-  <form method="post" action="{{action}}"
+  <form id="edit_{{ action[-4:] }}" method="post" action="{{action}}"
         enctype="multipart/form-data">
     {% if show_subject %}
     <input name="{{ widget.context_for(widget.fields.subject)['rendered_name'] }}" style="width:97%"

http://git-wip-us.apache.org/repos/asf/allura/blob/c9577b91/Allura/allura/templates/widgets/new_topic_post.html
----------------------------------------------------------------------
diff --git a/Allura/allura/templates/widgets/new_topic_post.html b/Allura/allura/templates/widgets/new_topic_post.html
index 1c03b94..c7f572a 100644
--- a/Allura/allura/templates/widgets/new_topic_post.html
+++ b/Allura/allura/templates/widgets/new_topic_post.html
@@ -17,7 +17,7 @@
        under the License.
 -#}
 {% import 'allura:templates/jinja_master/lib.html' as lib with context %}
-<form method="post" action="{{action}}">
+<form id="create_new_topic" method="post" action="{{action}}">
     {% if show_subject %}
     <div class="grid-19">&nbsp;</div>
     <div class="grid-19">

http://git-wip-us.apache.org/repos/asf/allura/blob/c9577b91/ForgeDiscussion/forgediscussion/controllers/root.py
----------------------------------------------------------------------
diff --git a/ForgeDiscussion/forgediscussion/controllers/root.py b/ForgeDiscussion/forgediscussion/controllers/root.py
index 9174fba..7548cd0 100644
--- a/ForgeDiscussion/forgediscussion/controllers/root.py
+++ b/ForgeDiscussion/forgediscussion/controllers/root.py
@@ -57,6 +57,7 @@ class RootController(BaseController, DispatchIndex, FeedController):
     class W(object):
         forum_subscription_form = FW.ForumSubscriptionForm()
         new_topic = DW.NewTopicPost(submit_text='Post')
+
         announcements_table = FW.AnnouncementsTable()
         add_forum = AddForumShort()
         search_results = SearchResults()

http://git-wip-us.apache.org/repos/asf/allura/blob/c9577b91/ForgeDiscussion/forgediscussion/tests/functional/test_forum.py
----------------------------------------------------------------------
diff --git a/ForgeDiscussion/forgediscussion/tests/functional/test_forum.py b/ForgeDiscussion/forgediscussion/tests/functional/test_forum.py
index 3f45b46..732c5c5 100644
--- a/ForgeDiscussion/forgediscussion/tests/functional/test_forum.py
+++ b/ForgeDiscussion/forgediscussion/tests/functional/test_forum.py
@@ -40,7 +40,6 @@ log = logging.getLogger(__name__)
 
 
 class TestForumEmail(TestController):
-
     def setUp(self):
         TestController.setUp(self)
         c.user = M.User.by_username('test-admin')
@@ -127,7 +126,6 @@ class TestForumEmail(TestController):
 
 
 class TestForumAsync(TestController):
-
     def setUp(self):
         TestController.setUp(self)
         self.app.get('/discussion/')
@@ -269,7 +267,6 @@ class TestForumAsync(TestController):
 
 
 class TestForum(TestController):
-
     def setUp(self):
         TestController.setUp(self)
         self.app.get('/discussion/')
@@ -290,6 +287,33 @@ class TestForum(TestController):
         r = self.app.get('/admin/discussion/forums')
         assert 'childforum' in r
 
+    @staticmethod
+    def fill_thread_reply(r):
+        form = r.forms['edit_post']
+        for field in form.fields.values():
+            field = field[0]
+            if field.id is None:
+                continue
+            if 'text' in field.id:
+                form[field.name] = 'Test_Reply'
+        return form
+
+    @staticmethod
+    def fill_new_topic_form(r):
+        form = r.forms['create_new_topic']
+        for field in form.fields.values():
+            field = field[0]
+            if field.id is None:
+                continue
+            if 'subject' in field.id:
+                form[field.name] = 'Test_Subject'
+            if 'forum' in field.id:
+                form[field.name] = 'testforum'
+            if 'text' in field.id:
+                form[field.name] = 'Test_Description'
+        return form
+
+
     def test_unicode_name(self):
         r = self.app.get('/admin/discussion/forums')
         r.forms[1]['add_forum.shortname'] = u'téstforum'.encode('utf-8')
@@ -559,8 +583,7 @@ class TestForum(TestController):
                     'value') and field['value'] or ''
         params[f.find('textarea')['name']] = 'Post text'
         params[f.find('select')['name']] = 'testforum'
-        params[f.find('input', {'style': 'width: 90%'})
-               ['name']] = 'Post subject'
+        params[f.find('input', {'style': 'width: 90%'})['name']] = 'Post subject'
         thread = self.app.post(
             '/discussion/save_new_topic', params=params).follow()
         assert M.Notification.query.find(
@@ -636,65 +659,26 @@ class TestForum(TestController):
     def test_post_to_feed(self):
         # Create a new topic
         r = self.app.get('/discussion/create_topic/')
-        f = r.html.find(
-            'form', {'action': '/p/test/discussion/save_new_topic'})
-        params = dict()
-        inputs = f.findAll('input')
-        for field in inputs:
-            if field.has_key('name'):
-                params[field['name']] = field.has_key(
-                    'value') and field['value'] or ''
-        params[f.find('textarea')['name']] = 'XYZ'
-        params[f.find('select')['name']] = 'testforum'
-        params[f.find('input', {'style': 'width: 90%'})['name']] = 'AAAA'
-        thread = self.app.post('/discussion/save_new_topic', params=params).follow()
+        form = self.fill_new_topic_form(r)
+        thread = form.submit().follow()
         url = thread.request.url
 
         # Check that the newly created topic is the most recent in the rss feed
         f = self.app.get('/discussion/feed.rss').body
         f = feedparser.parse(f)
         newest_entry = f['entries'][0]['summary_detail']['value'].split("</p>")[0].split("<p>")[-1]
-        assert newest_entry == 'XYZ'
+        assert newest_entry == 'Test_Description'
 
         # Reply to the newly created thread.
         thread = self.app.get(url)
-        t = thread.html.find(
-            'div', {'class': 'row reply_post_form'}).find('form')
-        rep_url = t.get('action')
-        params = dict()
-        inputs = t.findAll('input')
-        for field in inputs:
-            if field.has_key('name'):
-                params[field['name']] = field.has_key(
-                    'value') and field['value'] or ''
-        params[t.find('textarea')['name']] = 'bbb'
-        self.app.post(str(rep_url), params=params)
+        form = self.fill_thread_reply(thread)
+        form.submit()
 
         # Check that reply matches the newest in the rss feed
         f = self.app.get('/discussion/feed.rss').body
         f = feedparser.parse(f)
         newest_reply = f['entries'][0]['summary_detail']['value'].split("</p>")[0].split("<p>")[-1]
-        assert newest_reply == 'bbb'
-
-    def test_post_to_feed(self):
-        r = self.app.get('/discussion/create_topic/')
-        f = r.html.find(
-            'form', {'action': '/p/test/discussion/save_new_topic'})
-        params = dict()
-        inputs = f.findAll('input')
-        for field in inputs:
-            if field.has_key('name'):
-                params[field['name']] = field.has_key(
-                    'value') and field['value'] or ''
-        params[f.find('textarea')['name']] = 'XYZ'
-        params[f.find('select')['name']] = 'testforum'
-        params[f.find('input', {'style': 'width: 90%'})['name']] = 'AAAA'
-        self.app.post('/discussion/save_new_topic', params=params)
-
-        f = self.app.get('/discussion/feed.rss').body
-        f = feedparser.parse(f)
-        newest_entry = f['entries'][0]['summary_detail']['value'].split("</p>")[0].split("<p>")[-1]
-        assert newest_entry == 'XYZ'
+        assert newest_reply == 'Test_Reply'
 
     def test_thread_sticky(self):
         r = self.app.get('/discussion/create_topic/')
@@ -884,7 +868,6 @@ class TestForum(TestController):
 
 
 class TestForumStats(TestController):
-
     def test_stats(self):
         self.app.get('/discussion/stats', status=200)