proclaim 0.5.6 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (236) hide show
  1. checksums.yaml +5 -5
  2. data/Rakefile +5 -38
  3. data/app/assets/config/proclaim_manifest.js +2 -0
  4. data/app/assets/images/{ajax_loader.gif → proclaim/ajax_loader.gif} +0 -0
  5. data/app/assets/javascripts/proclaim.js +7 -7
  6. data/app/assets/javascripts/proclaim/{comments_handler.js.coffee → comments_handler.coffee} +16 -10
  7. data/app/assets/javascripts/proclaim/editor.coffee +55 -0
  8. data/app/assets/stylesheets/{proclaim.css.scss → proclaim.scss} +7 -8
  9. data/app/assets/stylesheets/proclaim/{comments.css.scss → comments.scss} +0 -0
  10. data/app/assets/stylesheets/proclaim/{posts.css.scss → posts.scss} +60 -25
  11. data/app/assets/stylesheets/proclaim/{subscriptions.css.scss → subscriptions.scss} +0 -0
  12. data/app/controllers/proclaim/application_controller.rb +60 -56
  13. data/app/controllers/proclaim/comments_controller.rb +13 -42
  14. data/app/controllers/proclaim/posts_controller.rb +25 -57
  15. data/app/controllers/proclaim/subscriptions_controller.rb +3 -3
  16. data/app/jobs/proclaim/application_job.rb +4 -0
  17. data/app/mailers/proclaim/application_mailer.rb +5 -0
  18. data/app/mailers/proclaim/subscription_mailer.rb +19 -17
  19. data/app/models/proclaim/application_record.rb +5 -0
  20. data/app/models/proclaim/comment.rb +6 -1
  21. data/app/models/proclaim/post.rb +20 -28
  22. data/app/models/proclaim/subscription.rb +33 -11
  23. data/app/views/layouts/proclaim/subscription_mailer.html.erb +15 -36
  24. data/app/views/proclaim/comments/_comment.html.erb +7 -7
  25. data/app/views/proclaim/comments/_form.html.erb +7 -5
  26. data/app/views/proclaim/posts/_form.html.erb +34 -21
  27. data/app/views/proclaim/posts/show.html.erb +16 -3
  28. data/app/views/proclaim/subscription_mailer/welcome_email.html.erb +2 -6
  29. data/config/initializers/friendly_id.rb +20 -1
  30. data/config/routes.rb +1 -5
  31. data/db/migrate/20141108222616_create_proclaim_posts.rb +8 -1
  32. data/db/migrate/20141114235359_create_proclaim_comments.rb +1 -1
  33. data/db/migrate/20141115022230_create_proclaim_comment_hierarchies.rb +1 -1
  34. data/db/migrate/20141210234057_create_proclaim_subscriptions.rb +5 -4
  35. data/db/migrate/20150213015321_create_friendly_id_slugs.rb +1 -1
  36. data/lib/generators/proclaim/install_generator.rb +1 -1
  37. data/lib/generators/proclaim/templates/initialize_proclaim.rb +31 -29
  38. data/lib/generators/proclaim/views_generator.rb +1 -1
  39. data/lib/proclaim.rb +15 -15
  40. data/lib/proclaim/engine.rb +21 -19
  41. data/lib/proclaim/version.rb +1 -1
  42. data/vendor/assets/fonts/KaTeX_AMS-Regular.ttf +0 -0
  43. data/vendor/assets/fonts/KaTeX_AMS-Regular.woff +0 -0
  44. data/vendor/assets/fonts/KaTeX_AMS-Regular.woff2 +0 -0
  45. data/vendor/assets/fonts/KaTeX_Caligraphic-Bold.ttf +0 -0
  46. data/vendor/assets/fonts/KaTeX_Caligraphic-Bold.woff +0 -0
  47. data/vendor/assets/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
  48. data/vendor/assets/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
  49. data/vendor/assets/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
  50. data/vendor/assets/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
  51. data/vendor/assets/fonts/KaTeX_Fraktur-Bold.ttf +0 -0
  52. data/vendor/assets/fonts/KaTeX_Fraktur-Bold.woff +0 -0
  53. data/vendor/assets/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
  54. data/vendor/assets/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
  55. data/vendor/assets/fonts/KaTeX_Fraktur-Regular.woff +0 -0
  56. data/vendor/assets/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
  57. data/vendor/assets/fonts/KaTeX_Main-Bold.ttf +0 -0
  58. data/vendor/assets/fonts/KaTeX_Main-Bold.woff +0 -0
  59. data/vendor/assets/fonts/KaTeX_Main-Bold.woff2 +0 -0
  60. data/vendor/assets/fonts/KaTeX_Main-BoldItalic.ttf +0 -0
  61. data/vendor/assets/fonts/KaTeX_Main-BoldItalic.woff +0 -0
  62. data/vendor/assets/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
  63. data/vendor/assets/fonts/KaTeX_Main-Italic.ttf +0 -0
  64. data/vendor/assets/fonts/KaTeX_Main-Italic.woff +0 -0
  65. data/vendor/assets/fonts/KaTeX_Main-Italic.woff2 +0 -0
  66. data/vendor/assets/fonts/KaTeX_Main-Regular.ttf +0 -0
  67. data/vendor/assets/fonts/KaTeX_Main-Regular.woff +0 -0
  68. data/vendor/assets/fonts/KaTeX_Main-Regular.woff2 +0 -0
  69. data/vendor/assets/fonts/KaTeX_Math-BoldItalic.ttf +0 -0
  70. data/vendor/assets/fonts/KaTeX_Math-BoldItalic.woff +0 -0
  71. data/vendor/assets/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
  72. data/vendor/assets/fonts/KaTeX_Math-Italic.ttf +0 -0
  73. data/vendor/assets/fonts/KaTeX_Math-Italic.woff +0 -0
  74. data/vendor/assets/fonts/KaTeX_Math-Italic.woff2 +0 -0
  75. data/vendor/assets/fonts/KaTeX_SansSerif-Bold.ttf +0 -0
  76. data/vendor/assets/fonts/KaTeX_SansSerif-Bold.woff +0 -0
  77. data/vendor/assets/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
  78. data/vendor/assets/fonts/KaTeX_SansSerif-Italic.ttf +0 -0
  79. data/vendor/assets/fonts/KaTeX_SansSerif-Italic.woff +0 -0
  80. data/vendor/assets/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
  81. data/vendor/assets/fonts/KaTeX_SansSerif-Regular.ttf +0 -0
  82. data/vendor/assets/fonts/KaTeX_SansSerif-Regular.woff +0 -0
  83. data/vendor/assets/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
  84. data/vendor/assets/fonts/KaTeX_Script-Regular.ttf +0 -0
  85. data/vendor/assets/fonts/KaTeX_Script-Regular.woff +0 -0
  86. data/vendor/assets/fonts/KaTeX_Script-Regular.woff2 +0 -0
  87. data/vendor/assets/fonts/KaTeX_Size1-Regular.ttf +0 -0
  88. data/vendor/assets/fonts/KaTeX_Size1-Regular.woff +0 -0
  89. data/vendor/assets/fonts/KaTeX_Size1-Regular.woff2 +0 -0
  90. data/vendor/assets/fonts/KaTeX_Size2-Regular.ttf +0 -0
  91. data/vendor/assets/fonts/KaTeX_Size2-Regular.woff +0 -0
  92. data/vendor/assets/fonts/KaTeX_Size2-Regular.woff2 +0 -0
  93. data/vendor/assets/fonts/KaTeX_Size3-Regular.ttf +0 -0
  94. data/vendor/assets/fonts/KaTeX_Size3-Regular.woff +0 -0
  95. data/vendor/assets/fonts/KaTeX_Size3-Regular.woff2 +0 -0
  96. data/vendor/assets/fonts/KaTeX_Size4-Regular.ttf +0 -0
  97. data/vendor/assets/fonts/KaTeX_Size4-Regular.woff +0 -0
  98. data/vendor/assets/fonts/KaTeX_Size4-Regular.woff2 +0 -0
  99. data/vendor/assets/fonts/KaTeX_Typewriter-Regular.ttf +0 -0
  100. data/vendor/assets/fonts/KaTeX_Typewriter-Regular.woff +0 -0
  101. data/vendor/assets/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
  102. data/vendor/assets/javascripts/contrib/auto-render.js +339 -0
  103. data/vendor/assets/javascripts/contrib/auto-render.min.js +1 -0
  104. data/vendor/assets/javascripts/contrib/auto-render.mjs +215 -0
  105. data/vendor/assets/javascripts/contrib/copy-tex.css +14 -0
  106. data/vendor/assets/javascripts/contrib/copy-tex.js +213 -0
  107. data/vendor/assets/javascripts/contrib/copy-tex.min.css +1 -0
  108. data/vendor/assets/javascripts/contrib/copy-tex.min.js +1 -0
  109. data/vendor/assets/javascripts/contrib/copy-tex.mjs +85 -0
  110. data/vendor/assets/javascripts/contrib/mathtex-script-type.js +137 -0
  111. data/vendor/assets/javascripts/contrib/mathtex-script-type.min.js +1 -0
  112. data/vendor/assets/javascripts/contrib/mathtex-script-type.mjs +24 -0
  113. data/vendor/assets/javascripts/contrib/mhchem.js +3241 -0
  114. data/vendor/assets/javascripts/contrib/mhchem.min.js +1 -0
  115. data/vendor/assets/javascripts/contrib/mhchem.mjs +3109 -0
  116. data/vendor/assets/javascripts/katex.js +16517 -0
  117. data/vendor/assets/javascripts/katex.min.js +1 -0
  118. data/vendor/assets/javascripts/katex.mjs +16122 -0
  119. data/vendor/assets/javascripts/quill.core.js +8522 -0
  120. data/vendor/assets/javascripts/quill.js +11489 -0
  121. data/vendor/assets/javascripts/quill.min.js +8 -0
  122. data/vendor/assets/javascripts/quill.min.js.map +1 -0
  123. data/vendor/assets/stylesheets/katex.css +1011 -0
  124. data/vendor/assets/stylesheets/katex.min.css +1 -0
  125. data/vendor/assets/stylesheets/quill.bubble.css +952 -0
  126. data/vendor/assets/stylesheets/quill.core.css +397 -0
  127. data/vendor/assets/stylesheets/quill.snow.css +945 -0
  128. metadata +169 -278
  129. data/CHANGELOG +0 -77
  130. data/Gemfile +0 -14
  131. data/VERSION +0 -1
  132. data/app/assets/javascripts/proclaim/editor.js.coffee +0 -52
  133. data/app/assets/javascripts/proclaim/images.js.coffee +0 -3
  134. data/app/assets/javascripts/proclaim/subscriptions.js.coffee +0 -3
  135. data/app/assets/stylesheets/proclaim/images.scss +0 -3
  136. data/app/controllers/proclaim/images_controller.rb +0 -67
  137. data/app/helpers/proclaim/comments_helper.rb +0 -4
  138. data/app/helpers/proclaim/images_helper.rb +0 -4
  139. data/app/helpers/proclaim/subscriptions_helper.rb +0 -4
  140. data/app/models/proclaim/image.rb +0 -19
  141. data/app/policies/proclaim/image_policy.rb +0 -29
  142. data/app/uploaders/proclaim/image_uploader.rb +0 -82
  143. data/db/migrate/20141222224905_create_proclaim_images.rb +0 -12
  144. data/db/migrate/20150123115226_add_name_to_subscriptions.rb +0 -7
  145. data/db/migrate/20150213015850_add_slug_to_posts.rb +0 -20
  146. data/proclaim.gemspec +0 -51
  147. data/test/controllers/proclaim/comments_controller_test.rb +0 -228
  148. data/test/controllers/proclaim/images_controller_test.rb +0 -166
  149. data/test/controllers/proclaim/posts_controller_test.rb +0 -465
  150. data/test/controllers/proclaim/subscriptions_controller_test.rb +0 -154
  151. data/test/dummy/README.rdoc +0 -28
  152. data/test/dummy/Rakefile +0 -6
  153. data/test/dummy/app/assets/javascripts/application.js +0 -14
  154. data/test/dummy/app/assets/stylesheets/application.css +0 -16
  155. data/test/dummy/app/controllers/application_controller.rb +0 -15
  156. data/test/dummy/app/helpers/application_helper.rb +0 -28
  157. data/test/dummy/app/models/user.rb +0 -7
  158. data/test/dummy/app/views/layouts/application.html.erb +0 -16
  159. data/test/dummy/bin/bundle +0 -3
  160. data/test/dummy/bin/rails +0 -4
  161. data/test/dummy/bin/rake +0 -4
  162. data/test/dummy/config.ru +0 -4
  163. data/test/dummy/config/application.rb +0 -24
  164. data/test/dummy/config/boot.rb +0 -5
  165. data/test/dummy/config/database.yml +0 -25
  166. data/test/dummy/config/environment.rb +0 -5
  167. data/test/dummy/config/environments/development.rb +0 -45
  168. data/test/dummy/config/environments/production.rb +0 -80
  169. data/test/dummy/config/environments/test.rb +0 -49
  170. data/test/dummy/config/initializers/assets.rb +0 -8
  171. data/test/dummy/config/initializers/backtrace_silencers.rb +0 -7
  172. data/test/dummy/config/initializers/cookies_serializer.rb +0 -3
  173. data/test/dummy/config/initializers/filter_parameter_logging.rb +0 -4
  174. data/test/dummy/config/initializers/inflections.rb +0 -16
  175. data/test/dummy/config/initializers/mime_types.rb +0 -4
  176. data/test/dummy/config/initializers/session_store.rb +0 -3
  177. data/test/dummy/config/initializers/wrap_parameters.rb +0 -14
  178. data/test/dummy/config/locales/en.yml +0 -23
  179. data/test/dummy/config/routes.rb +0 -5
  180. data/test/dummy/config/secrets.yml +0 -22
  181. data/test/dummy/db/migrate/20141117214323_create_users.rb +0 -10
  182. data/test/dummy/db/schema.rb +0 -91
  183. data/test/dummy/public/404.html +0 -67
  184. data/test/dummy/public/422.html +0 -67
  185. data/test/dummy/public/500.html +0 -66
  186. data/test/dummy/public/favicon.ico +0 -0
  187. data/test/factories/proclaim/comment.rb +0 -11
  188. data/test/factories/proclaim/image.rb +0 -6
  189. data/test/factories/proclaim/post.rb +0 -14
  190. data/test/factories/proclaim/subscription.rb +0 -14
  191. data/test/factories/user.rb +0 -6
  192. data/test/helpers/proclaim/comments_helper_test.rb +0 -6
  193. data/test/helpers/proclaim/posts_helper_test.rb +0 -6
  194. data/test/helpers/proclaim/subscriptions_helper_test.rb +0 -6
  195. data/test/integration/with_javascript/comment_test.rb +0 -391
  196. data/test/integration/with_javascript/post_form_test.rb +0 -225
  197. data/test/integration/with_javascript/post_show_test.rb +0 -47
  198. data/test/integration/with_javascript/post_subscription_test.rb +0 -302
  199. data/test/integration/without_javascript/blog_subscription_test.rb +0 -114
  200. data/test/integration/without_javascript/manage_subscriptions_test.rb +0 -37
  201. data/test/integration/without_javascript/post_test.rb +0 -234
  202. data/test/integration/without_javascript/subscription_email_test.rb +0 -95
  203. data/test/integration/without_javascript/unsubscribe_test.rb +0 -32
  204. data/test/mailers/previews/proclaim/subscription_mailer_preview.rb +0 -22
  205. data/test/mailers/proclaim/subscription_mailer_test.rb +0 -91
  206. data/test/models/proclaim/comment_test.rb +0 -41
  207. data/test/models/proclaim/image_test.rb +0 -70
  208. data/test/models/proclaim/post_test.rb +0 -193
  209. data/test/models/proclaim/subscription_test.rb +0 -77
  210. data/test/policies/application_policy_test.rb +0 -87
  211. data/test/policies/proclaim/comment_policy_test.rb +0 -71
  212. data/test/policies/proclaim/image_policy_test.rb +0 -83
  213. data/test/policies/proclaim/post_policy_test.rb +0 -98
  214. data/test/policies/proclaim/subscription_policy_test.rb +0 -103
  215. data/test/proclaim_test.rb +0 -7
  216. data/test/support/images/test.jpg +0 -0
  217. data/test/support/pages/posts/edit_page.rb +0 -5
  218. data/test/support/pages/posts/show_page.rb +0 -47
  219. data/test/support/wait_for_ajax.rb +0 -11
  220. data/test/test_helper.rb +0 -71
  221. data/test/unit/proclaim/new_comment_callback_test.rb +0 -62
  222. data/test/unit/proclaim/new_subscription_callback_test.rb +0 -62
  223. data/test/unit/proclaim/post_published_callback_test.rb +0 -74
  224. data/vendor/assets/images/link.png +0 -0
  225. data/vendor/assets/images/remove.png +0 -0
  226. data/vendor/assets/images/resize-bigger.png +0 -0
  227. data/vendor/assets/images/resize-smaller.png +0 -0
  228. data/vendor/assets/images/unlink.png +0 -0
  229. data/vendor/assets/javascripts/addons/medium-editor-insert-embeds.js +0 -197
  230. data/vendor/assets/javascripts/addons/medium-editor-insert-images.js +0 -572
  231. data/vendor/assets/javascripts/addons/medium-editor-insert-maps.js +0 -50
  232. data/vendor/assets/javascripts/addons/medium-editor-insert-plugin.js +0 -496
  233. data/vendor/assets/javascripts/addons/medium-editor-insert-tables.js +0 -132
  234. data/vendor/assets/javascripts/medium-editor-insert-plugin.all.js +0 -1415
  235. data/vendor/assets/stylesheets/medium-editor-insert-plugin-frontend.css.scss +0 -55
  236. data/vendor/assets/stylesheets/medium-editor-insert-plugin.css.scss +0 -277
File without changes
@@ -1,11 +0,0 @@
1
- FactoryGirl.define do
2
- factory :comment, class: Proclaim::Comment do
3
- sequence(:author) {|n| "comment#{n} author"}
4
- sequence(:body) {|n| "comment#{n} body"}
5
- post
6
-
7
- factory :published_comment do
8
- association :post, factory: :published_post
9
- end
10
- end
11
- end
@@ -1,6 +0,0 @@
1
- FactoryGirl.define do
2
- factory :image, class: Proclaim::Image do
3
- post
4
- image { Rack::Test::UploadedFile.new(test_image_file_path) }
5
- end
6
- end
@@ -1,14 +0,0 @@
1
- FactoryGirl.define do
2
- factory :post, class: Proclaim::Post do
3
- sequence(:title) {|n| "post#{n} title"}
4
- sequence(:body) {|n| "post#{n} body"}
5
- association :author, factory: :user
6
-
7
- factory :published_post do
8
- # Also called upon create
9
- after(:build) do |post, evaluator|
10
- post.publish
11
- end
12
- end
13
- end
14
- end
@@ -1,14 +0,0 @@
1
- FactoryGirl.define do
2
- factory :subscription, class: Proclaim::Subscription do
3
- sequence(:name) {|n| "name#{n}"}
4
- sequence(:email) {|n| "email#{n}@example.com"}
5
-
6
- factory :post_subscription do
7
- post
8
- end
9
-
10
- factory :published_post_subscription do
11
- association :post, factory: :published_post
12
- end
13
- end
14
- end
@@ -1,6 +0,0 @@
1
- FactoryGirl.define do
2
- factory :user do
3
- sequence(:first_name) {|n| "first_name#{n}"}
4
- sequence(:last_name) {|n| "last_name#{n}"}
5
- end
6
- end
@@ -1,6 +0,0 @@
1
- require 'test_helper'
2
-
3
- module Proclaim
4
- class CommentsHelperTest < ActionView::TestCase
5
- end
6
- end
@@ -1,6 +0,0 @@
1
- require 'test_helper'
2
-
3
- module Proclaim
4
- class PostsHelperTest < ActionView::TestCase
5
- end
6
- end
@@ -1,6 +0,0 @@
1
- require 'test_helper'
2
-
3
- module Proclaim
4
- class SubscriptionsHelperTest < ActionView::TestCase
5
- end
6
- end
@@ -1,391 +0,0 @@
1
- require 'test_helper'
2
-
3
- class CommentTest < ActionDispatch::IntegrationTest
4
- self.use_transactional_fixtures = false
5
-
6
- setup do
7
- ApplicationController.any_instance.stubs(:current_user).returns(nil)
8
- ApplicationController.any_instance.stubs(:authenticate_user).returns(false)
9
-
10
- DatabaseCleaner.strategy = :truncation
11
- DatabaseCleaner.start
12
-
13
- Capybara.current_driver = :selenium
14
-
15
- @show_page = ShowPage.new
16
- end
17
-
18
- teardown do
19
- DatabaseCleaner.clean
20
- Capybara.use_default_driver
21
- end
22
-
23
- test "leave root comment" do
24
- post = FactoryGirl.create(:published_post)
25
-
26
- visit proclaim.post_path(post)
27
-
28
- # Test leaving a root comment
29
- within('#new_comment') do
30
- fill_in 'Author', with: "Comment Author"
31
- fill_in 'Body', with: "Comment Body"
32
- fill_in 'What is', with: @show_page.antispam_solution
33
- end
34
-
35
- @show_page.new_comment_submit_button.click
36
-
37
- assert page.has_no_css?('div.error')
38
- assert page.has_text? "Comment Author"
39
- assert page.has_text? "Comment Body"
40
- end
41
-
42
- test "leave two replies" do
43
- comment = FactoryGirl.create(:published_comment)
44
- post = comment.post
45
-
46
- visit proclaim.post_path(post)
47
-
48
- # Leave first reply
49
- @show_page.comment_reply_link(comment).click
50
- within("#reply_to_#{comment.id}_new_comment") do
51
- fill_in 'Author', with: "Reply Author 1"
52
- fill_in 'Body', with: "Reply Body 1"
53
- fill_in 'What is', with: @show_page.antispam_solution(comment)
54
- end
55
-
56
- @show_page.new_comment_submit_button(comment).click
57
-
58
- assert page.has_no_css?('div.error')
59
- assert page.has_text? "Reply Author 1"
60
- assert page.has_text? "Reply Body 1"
61
-
62
- # Leave second reply
63
- @show_page.comment_reply_link(comment).click
64
- within("#reply_to_#{comment.id}_new_comment") do
65
- fill_in 'Author', with: "Reply Author 2"
66
- fill_in 'Body', with: "Reply Body 2"
67
- fill_in 'What is', with: @show_page.antispam_solution(comment)
68
- end
69
-
70
- @show_page.new_comment_submit_button(comment).click
71
-
72
- assert page.has_no_css?('div.error')
73
- assert page.has_text? "Reply Author 2"
74
- assert page.has_text? "Reply Body 2"
75
- end
76
-
77
- test "root comment should fail if spammy" do
78
- post = FactoryGirl.create(:published_post)
79
-
80
- visit proclaim.post_path(post)
81
-
82
- # Test leaving a root comment
83
- within('#new_comment') do
84
- fill_in 'Author', with: "Comment Author"
85
- fill_in 'Body', with: "Comment Body"
86
- fill_in 'What is', with: "wrong answer"
87
- end
88
-
89
- @show_page.new_comment_submit_button.click
90
-
91
- assert page.has_css?('div.error')
92
- end
93
-
94
- test "reply should fail if spammy" do
95
- comment = FactoryGirl.create(:published_comment)
96
- post = comment.post
97
-
98
- visit proclaim.post_path(post)
99
-
100
- @show_page.comment_reply_link(comment).click
101
- within("#reply_to_#{comment.id}_new_comment") do
102
- fill_in 'Author', with: "Reply Author 1"
103
- fill_in 'Body', with: "Reply Body 1"
104
- fill_in 'What is', with: "wrong answer"
105
- end
106
-
107
- @show_page.new_comment_submit_button(comment).click
108
-
109
- assert page.has_css?('div.error')
110
- end
111
-
112
- test "reply forms should be exclusive" do
113
- comment1 = FactoryGirl.create(:published_comment)
114
- comment2 = FactoryGirl.create(:published_comment, post: comment1.post)
115
-
116
- visit proclaim.post_path(comment1.post)
117
-
118
- # Check that a form shows up to reply to comment1
119
- @show_page.comment_reply_link(comment1).click
120
- assert page.has_css? "form#reply_to_#{comment1.id}_new_comment"
121
-
122
- # Now, without closing that form manually, assert that it is closed
123
- # automatically when we try to reply to comment2
124
- @show_page.comment_reply_link(comment2).click
125
- assert page.has_css? "form#reply_to_#{comment2.id}_new_comment"
126
- assert page.has_no_css?("form#reply_to_#{comment1.id}_new_comment"),
127
- "The form from comment1 should be removed when replying to comment2!"
128
- end
129
-
130
- test "should not have option to edit if not logged in" do
131
- comment = FactoryGirl.create(:published_comment)
132
-
133
- visit proclaim.post_path(comment.post)
134
-
135
- assert page.has_no_css?("#comment_#{comment.id} .edit"),
136
- "A guest should not be given the option to edit a comment!"
137
- end
138
-
139
- test "edit root comment" do
140
- user = FactoryGirl.create(:user)
141
- sign_in user
142
-
143
- comment = FactoryGirl.create(:published_comment)
144
-
145
- visit proclaim.post_path(comment.post)
146
-
147
- @show_page.comment_edit_link(comment).click
148
- assert page.has_no_css?("p.comment_author", text: comment.author),
149
- "The comment author should have been completely replaced by the edit form!"
150
- assert page.has_no_css?("div.comment_body", text: comment.body),
151
- "The comment body should have been completely replaced by the edit form!"
152
-
153
- within("#edit_comment_#{comment.id}") do
154
- fill_in 'Author', with: "Edit Author"
155
- fill_in 'Body', with: "Edit Body"
156
- end
157
- @show_page.edit_comment_submit_button(comment).click
158
- assert page.has_css? "p.comment_author", text: "Edit Author"
159
- assert page.has_css? "div.comment_body", text: "Edit Body"
160
- assert page.has_no_css?("p.comment_author", text: comment.author),
161
- "The old comment author should be gone!"
162
- assert page.has_no_css?("div.comment_body", text: comment.body),
163
- "The old comment body should be gone!"
164
- end
165
-
166
- test "edit parent comment" do
167
- user = FactoryGirl.create(:user)
168
- sign_in user
169
-
170
- parent = FactoryGirl.create(:published_comment)
171
- child = FactoryGirl.create(:published_comment,
172
- post: parent.post,
173
- parent: parent)
174
-
175
- visit proclaim.post_path(parent.post)
176
-
177
- @show_page.comment_edit_link(parent).click
178
- assert page.has_no_css?("p.comment_author", text: parent.author),
179
- "The parent comment author should have been completely replaced by the edit form!"
180
- assert page.has_no_css?("div.comment_body", text: parent.body),
181
- "The parent comment body should have been completely replaced by the edit form!"
182
- assert page.has_css?("p.comment_author", text: child.author),
183
- "The child comment author should still be on the page!"
184
- assert page.has_css?("div.comment_body", text: child.body),
185
- "The child comment body should still be on the page!"
186
-
187
- within("#edit_comment_#{parent.id}") do
188
- fill_in 'Author', with: "Edit Author"
189
- fill_in 'Body', with: "Edit Body"
190
- end
191
- @show_page.edit_comment_submit_button(parent).click
192
- assert page.has_css?("p.comment_author", text: "Edit Author"),
193
- "The parent comment author should now be edited!"
194
- assert page.has_css?("div.comment_body", text: "Edit Body"),
195
- "The parent comment body should now be edited!"
196
- assert page.has_css?("p.comment_author", text: child.author),
197
- "The child comment author should still be on the page!"
198
- assert page.has_css?("div.comment_body", text: child.body),
199
- "The child comment body should still be on the page!"
200
- assert page.has_no_css?("p.comment_author", text: parent.author),
201
- "The old parent comment author should be gone!"
202
- assert page.has_no_css?("div.comment_body", text: parent.body),
203
- "The old parent comment body should be gone!"
204
- end
205
-
206
- test "edit child comment" do
207
- user = FactoryGirl.create(:user)
208
- sign_in user
209
-
210
- parent = FactoryGirl.create(:published_comment)
211
- child = FactoryGirl.create(:published_comment,
212
- post: parent.post,
213
- parent: parent)
214
-
215
- visit proclaim.post_path(parent.post)
216
-
217
- @show_page.comment_edit_link(child).click
218
- assert page.has_no_css?("p.comment_author", text: child.author),
219
- "The child comment author should have been completely replaced by the edit form!"
220
- assert page.has_no_css?("div.comment_body", text: child.body),
221
- "The chid comment body should have been completely replaced by the edit form!"
222
- assert page.has_css?("p.comment_author", text: parent.author),
223
- "The parent comment author should still be on the page!"
224
- assert page.has_css?("div.comment_body", text: parent.body),
225
- "The parent comment body should still be on the page!"
226
-
227
- within("#edit_comment_#{child.id}") do
228
- fill_in 'Author', with: "Edit Author"
229
- fill_in 'Body', with: "Edit Body"
230
- end
231
- @show_page.edit_comment_submit_button(child).click
232
- assert page.has_css? "p.comment_author", text: 'Edit Author'
233
- assert page.has_css? "div.comment_body", text: 'Edit Body'
234
- assert page.has_css? "p.comment_author", text: parent.author
235
- assert page.has_css? "div.comment_body", text: parent.body
236
-
237
- assert page.has_no_css?("p.comment_author", text: child.author),
238
- "The old child comment author should be gone!"
239
- assert page.has_no_css?("div.comment_body", text: child.body),
240
- "The old child comment body should be gone!"
241
- end
242
-
243
- test "edit should show error without author" do
244
- user = FactoryGirl.create(:user)
245
- sign_in user
246
-
247
- comment = FactoryGirl.create(:published_comment)
248
-
249
- visit proclaim.post_path(comment.post)
250
-
251
- @show_page.comment_edit_link(comment).click
252
-
253
- within("#edit_comment_#{comment.id}") do
254
- fill_in 'Author', with: "" # An empty author should result in an error
255
- end
256
-
257
- @show_page.edit_comment_submit_button(comment).click
258
-
259
- assert page.has_css?('div.error')
260
- end
261
-
262
- test "edit should show error without body" do
263
- user = FactoryGirl.create(:user)
264
- sign_in user
265
-
266
- comment = FactoryGirl.create(:published_comment)
267
-
268
- visit proclaim.post_path(comment.post)
269
-
270
- @show_page.comment_edit_link(comment).click
271
-
272
- within("#edit_comment_#{comment.id}") do
273
- fill_in 'Body', with: "" # An empty body should result in an error
274
- end
275
-
276
- @show_page.edit_comment_submit_button(comment).click
277
-
278
- assert page.has_css?('div.error')
279
- end
280
-
281
- test "should not have option to delete if not logged in" do
282
- comment = FactoryGirl.create(:published_comment)
283
-
284
- visit proclaim.post_path(comment.post)
285
-
286
- assert page.has_no_css?("#comment_#{comment.id} .delete"),
287
- "A guest should not be given the option to delete a comment!"
288
- end
289
-
290
- test "delete root comment" do
291
- user = FactoryGirl.create(:user)
292
- sign_in user
293
-
294
- comment = FactoryGirl.create(:published_comment)
295
-
296
- visit proclaim.post_path(comment.post)
297
-
298
- assert page.has_text? comment.author
299
- assert page.has_text? comment.body
300
-
301
- current_count = Proclaim::Comment.count
302
-
303
- @show_page.comment_delete_link(comment).click
304
- page.accept_alert
305
-
306
- assert page.has_no_text?(comment.author), "Comment author should be gone!"
307
- assert page.has_no_text?(comment.body), "Comment body should be gone!"
308
-
309
- assert(wait_until { Proclaim::Comment.count == current_count - 1 },
310
- "Root comment should have been deleted!")
311
- end
312
-
313
- test "delete parent comment" do
314
- user = FactoryGirl.create(:user)
315
- sign_in user
316
-
317
- parent = FactoryGirl.create(:published_comment)
318
- child = FactoryGirl.create(:published_comment,
319
- post: parent.post,
320
- parent: parent)
321
-
322
- visit proclaim.post_path(parent.post)
323
-
324
- assert page.has_text? parent.author
325
- assert page.has_text? parent.body
326
- assert page.has_text? child.author
327
- assert page.has_text? child.body
328
-
329
- current_count = Proclaim::Comment.count
330
-
331
- @show_page.comment_delete_link(parent).click
332
- page.accept_alert
333
-
334
- assert page.has_no_text?(parent.author), "Parent author should be gone!"
335
- assert page.has_no_text?(parent.body), "Parent body should be gone!"
336
- assert page.has_no_text?(child.author), "Child author should be gone!"
337
- assert page.has_no_text?(child.body), "Child body should be gone!"
338
-
339
- assert(wait_until { Proclaim::Comment.count == current_count - 2 },
340
- "Both parent and child should have been deleted!")
341
- end
342
-
343
- test "delete child comment" do
344
- user = FactoryGirl.create(:user)
345
- sign_in user
346
-
347
- parent = FactoryGirl.create(:published_comment)
348
- child = FactoryGirl.create(:published_comment,
349
- post: parent.post,
350
- parent: parent)
351
-
352
- visit proclaim.post_path(parent.post)
353
-
354
- assert page.has_text? child.author
355
- assert page.has_text? child.body
356
-
357
- current_count = Proclaim::Comment.count
358
-
359
- @show_page.comment_delete_link(child).click
360
- page.accept_alert
361
-
362
- assert page.has_no_text?(child.author), "Child author should be gone!"
363
- assert page.has_no_text?(child.body), "Child body should be gone!"
364
- assert page.has_text?(parent.author), "Parent author should not be gone!"
365
- assert page.has_text?(parent.body), "Parent body should not be gone!"
366
-
367
- assert(wait_until { Proclaim::Comment.count == current_count - 1 },
368
- "Child comment should have been deleted!")
369
- end
370
-
371
- test "cancel button should remove errors" do
372
- post = FactoryGirl.create(:published_post)
373
-
374
- visit proclaim.post_path(post)
375
-
376
- within('#new_comment') do
377
- fill_in 'Author', with: "Comment Author"
378
- # Make a mistake-- leave out the body
379
- end
380
- @show_page.new_comment_submit_button.click
381
-
382
- # Errors should be on the page
383
- assert page.has_css?('div.error')
384
-
385
- # Now click cancel
386
- @show_page.new_comment_cancel_button.click
387
-
388
- # Now errors should be cleared
389
- assert page.has_no_css?('div.error')
390
- end
391
- end