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
@@ -1,114 +0,0 @@
1
- require 'test_helper'
2
-
3
- class BlogSubscriptionTest < ActionDispatch::IntegrationTest
4
- setup do
5
- ApplicationController.any_instance.stubs(:current_user).returns(nil)
6
- ApplicationController.any_instance.stubs(:authenticate_user).returns(false)
7
-
8
- ActionMailer::Base.deliveries.clear
9
- end
10
-
11
- test "should be able to create new blog subscription while logged in" do
12
- user = FactoryGirl.create(:user)
13
- sign_in user
14
-
15
- visit proclaim.new_subscription_path
16
-
17
- within('#new_subscription') do
18
- fill_in 'Name', with: "example"
19
- fill_in 'Email', with: "example@example.com"
20
- fill_in 'What is', with: antispam_solution
21
- end
22
-
23
- assert_difference('Proclaim::Subscription.count', 1,
24
- "Should have successfully created subscription!") do
25
- find('#new_subscription input[type=submit]').click
26
- end
27
-
28
- assert page.has_text?("example"),
29
- "Should be shown subscription name"
30
- assert page.has_no_text?("example@example.com"),
31
- "Should not be shown email address, in case link is compromised"
32
- end
33
-
34
- test "should be able to create new blog subscription while not logged in" do
35
- visit proclaim.new_subscription_path
36
-
37
- within('#new_subscription') do
38
- fill_in 'Name', with: "example"
39
- fill_in 'Email', with: "example@example.com"
40
- fill_in 'What is', with: antispam_solution
41
- end
42
-
43
- assert_difference('Proclaim::Subscription.count', 1,
44
- "Should have successfully created subscription!") do
45
- find('#new_subscription input[type=submit]').click
46
- end
47
-
48
- assert page.has_text?("example"),
49
- "Should be shown subscription name"
50
- assert page.has_no_text?("example@example.com"),
51
- "Should not be shown email address, in case link is compromised"
52
- end
53
-
54
- test "should not be able to create new blog subscription if spammy" do
55
- user = FactoryGirl.create(:user)
56
- sign_in user
57
-
58
- visit proclaim.new_subscription_path
59
-
60
- within('#new_subscription') do
61
- fill_in 'Name', with: "example"
62
- fill_in 'Email', with: "example@example.com"
63
- fill_in 'What is', with: "wrong answer"
64
- end
65
-
66
- assert_no_difference('Proclaim::Subscription.count',
67
- "Should have failed antispam questions!") do
68
- find('#new_subscription input[type=submit]').click
69
- end
70
-
71
- assert page.has_css?('div#error_explanation'),
72
- "Should be shown errors since the antispam questions failed!"
73
- end
74
-
75
- test "catch missing name" do
76
- visit proclaim.new_subscription_path
77
-
78
- within('#new_subscription') do
79
- # Don't fill in name
80
- fill_in 'Email', with: "example@example.com"
81
- fill_in 'What is', with: antispam_solution
82
- end
83
-
84
- assert_no_difference('Proclaim::Subscription.count',
85
- "Should have caught missing name!") do
86
- find('#new_subscription input[type=submit]').click
87
- end
88
-
89
- assert page.has_css?('div#error_explanation')
90
- end
91
-
92
- test "catch bad email address" do
93
- visit proclaim.new_subscription_path
94
-
95
- within('#new_subscription') do
96
- fill_in 'Name', with: "example"
97
- fill_in 'Email', with: "bad_email_address"
98
- fill_in 'What is', with: antispam_solution
99
- end
100
-
101
- assert_no_difference('Proclaim::Subscription.count',
102
- "Should have caught bad email address!") do
103
- find('#new_subscription input[type=submit]').click
104
- end
105
-
106
- assert page.has_css?('div#error_explanation')
107
- end
108
-
109
- private
110
-
111
- def antispam_solution
112
- find('input#antispam_solution', visible: false).value
113
- end
114
- end
@@ -1,37 +0,0 @@
1
- require 'test_helper'
2
-
3
- class ManageSubscriptionTest < ActionDispatch::IntegrationTest
4
- setup do
5
- ApplicationController.any_instance.stubs(:current_user).returns(nil)
6
- ApplicationController.any_instance.stubs(:authenticate_user).returns(false)
7
-
8
- ActionMailer::Base.deliveries.clear
9
- end
10
-
11
- test "should be able to see subscribers index if logged in" do
12
- user = FactoryGirl.create(:user)
13
- sign_in user
14
-
15
- blog_subscription = FactoryGirl.create(:subscription)
16
- post_subscription = FactoryGirl.create(:published_post_subscription)
17
-
18
- visit proclaim.subscriptions_path
19
-
20
- # Verify that the blog subscription is shown
21
- assert page.has_text?(blog_subscription.name),
22
- "Blog subscription name should be on the index"
23
- assert page.has_text?(blog_subscription.email),
24
- "Blog subscription email should be on the index"
25
-
26
- # Verify that the title of the post to which the post subscription belongs
27
- # is shown as well
28
- assert page.has_text?(post_subscription.post.title),
29
- "Post subscription's post's title should be on the index"
30
-
31
- # Finally, verify that the post subscription is shown
32
- assert page.has_text?(post_subscription.name),
33
- "Post subscription name should be on the index"
34
- assert page.has_text?(post_subscription.email),
35
- "Post subscription email should be on the index"
36
- end
37
- end
@@ -1,234 +0,0 @@
1
- require 'test_helper'
2
-
3
- class PostTest < ActionDispatch::IntegrationTest
4
- setup do
5
- ApplicationController.any_instance.stubs(:current_user).returns(nil)
6
- ApplicationController.any_instance.stubs(:authenticate_user).returns(false)
7
-
8
- @edit_page = EditPage.new
9
- end
10
-
11
- test "index should give option to create new post if logged in" do
12
- user = FactoryGirl.create(:user)
13
- sign_in user
14
-
15
- visit proclaim.posts_path
16
-
17
- assert page.has_css? "a", text: "New Post"
18
- end
19
-
20
- test "index should not give option to create new post if not logged in" do
21
- visit proclaim.posts_path
22
-
23
- assert page.has_no_css? "a", text: "New Post"
24
- end
25
-
26
- test "index should give option to edit post if logged in" do
27
- user = FactoryGirl.create(:user)
28
- sign_in user
29
-
30
- post = FactoryGirl.create(:published_post)
31
-
32
- visit proclaim.posts_path
33
-
34
- assert page.has_css? "a", text: "Edit"
35
- end
36
-
37
- test "index should not give option to edit post if not logged in" do
38
- post = FactoryGirl.create(:published_post)
39
-
40
- visit proclaim.posts_path
41
-
42
- assert page.has_no_css? "a", text: "Edit"
43
- end
44
-
45
- test "index should give option to delete post if logged in" do
46
- user = FactoryGirl.create(:user)
47
- sign_in user
48
-
49
- post = FactoryGirl.create(:published_post)
50
-
51
- visit proclaim.posts_path
52
-
53
- assert page.has_css? "a", text: "Delete"
54
- end
55
-
56
- test "index should not give option to delete post if not logged in" do
57
- post = FactoryGirl.create(:published_post)
58
-
59
- visit proclaim.posts_path
60
-
61
- assert page.has_no_css? "a", text: "Delete"
62
- end
63
-
64
- test "index should show post titles" do
65
- post1 = FactoryGirl.create(:published_post)
66
- post2 = FactoryGirl.create(:published_post)
67
-
68
- visit proclaim.posts_path
69
-
70
- assert page.has_text? post1.title
71
- assert page.has_text? post2.title
72
- end
73
-
74
- test "index should show authors" do
75
- post1 = FactoryGirl.create(:published_post)
76
- post2 = FactoryGirl.create(:published_post)
77
-
78
- visit proclaim.posts_path
79
-
80
- assert page.has_text? post1.author.send(Proclaim.author_name_method)
81
- assert page.has_text? post2.author.send(Proclaim.author_name_method)
82
- end
83
-
84
- test "index should show excerpts" do
85
- post1Body = Faker::Lorem.paragraph(50)
86
-
87
- post1 = FactoryGirl.create(:published_post,
88
- body: post1Body)
89
- post2 = FactoryGirl.create(:published_post,
90
- body: "foo")
91
-
92
- visit proclaim.posts_path
93
-
94
- post1RenderedBody = page.find("#post_#{post1.id} span.excerpt")
95
- post2RenderedBody = page.find("#post_#{post2.id} span.excerpt")
96
-
97
- # Make sure the render text from the post is only the excerpt-- no more
98
- assert_equal post1.excerpt, post1RenderedBody.text
99
- assert_equal post2.body, post2RenderedBody.text
100
- end
101
-
102
- test "index should show more link" do
103
- post1Body = Faker::Lorem.paragraph(50)
104
-
105
- post1 = FactoryGirl.create(:published_post,
106
- body: post1Body)
107
- post2 = FactoryGirl.create(:published_post,
108
- body: "foo")
109
-
110
- visit proclaim.posts_path
111
-
112
- assert page.has_css?("#post_#{post1.id} a", text: "(more)"),
113
- "Post 1 should contain a link to view more"
114
- assert page.has_no_css?("#post_#{post2.id} a", text: "(more)"),
115
- "Post 2 should not contain a link to see more"
116
- end
117
-
118
- test "index should show posts ordered by publication date" do
119
- post1 = FactoryGirl.create(:published_post)
120
- post2 = FactoryGirl.create(:published_post)
121
-
122
- visit proclaim.posts_path
123
-
124
- assert page.body.index(post2.title) < page.body.index(post1.title),
125
- "Post 2 should be shown before post 1!"
126
- end
127
-
128
- test "index should show drafts ordered by modification date" do
129
- user = FactoryGirl.create(:user)
130
- sign_in user
131
-
132
- post1 = FactoryGirl.create(:post)
133
- post2 = FactoryGirl.create(:post)
134
- post3 = FactoryGirl.create(:post)
135
-
136
- # Update post1 so its updated_at is newest
137
- post2.body = "Updated Body"
138
- post2.save
139
-
140
- visit proclaim.posts_path
141
-
142
- assert page.body.index(post2.title) < page.body.index(post3.title),
143
- "Post 2 draft should be shown before post 3 draft!"
144
- assert page.body.index(post3.title) < page.body.index(post1.title),
145
- "Post 3 draft should be shown before post 1 draft!"
146
- end
147
-
148
- test "index should not show comment count for drafts" do
149
- user = FactoryGirl.create(:user)
150
- sign_in user
151
-
152
- comment = FactoryGirl.create(:comment)
153
-
154
- visit proclaim.posts_path
155
-
156
- assert page.has_no_text? "1 comment"
157
- end
158
-
159
- test "index should show comment count for published post" do
160
- user = FactoryGirl.create(:user)
161
- sign_in user
162
-
163
- # Verify no comments
164
- post = FactoryGirl.create(:published_post)
165
- visit proclaim.posts_path
166
- assert page.has_text?("No comments"),
167
- "Comment count should indicate no comments"
168
-
169
- # Verify that single comment count shows up.
170
- comment = FactoryGirl.create(:published_comment, post: post)
171
- visit proclaim.posts_path
172
- assert page.has_text?("1 comment"), "Comment count should be shown"
173
-
174
- # Also verify that the comment count is properly pluralized.
175
- comment = FactoryGirl.create(:published_comment, post: comment.post)
176
- visit proclaim.posts_path
177
- assert page.has_text?("2 comments"),
178
- "Comment count should be shown and pluralized"
179
- end
180
-
181
- test "show should include author name" do
182
- post = FactoryGirl.create(:published_post)
183
-
184
- visit proclaim.post_path(post)
185
-
186
- assert page.has_text? post.author.send(Proclaim.author_name_method)
187
- end
188
-
189
- test "show should work via id" do
190
- post = FactoryGirl.create(:published_post)
191
-
192
- visit proclaim.post_path(post.id)
193
- assert page.has_text? post.title
194
- assert_equal proclaim.post_path(post.friendly_id), current_path,
195
- "Post show via ID should redirect to more friendly URL"
196
- end
197
-
198
- test "show should work via slug" do
199
- post = FactoryGirl.create(:published_post)
200
-
201
- visit proclaim.post_path(post.friendly_id)
202
- assert page.has_text? post.title
203
- end
204
-
205
- test "show should work via old slugs for published posts" do
206
- post = FactoryGirl.create(:published_post, title: "New Post")
207
- old_slug = post.friendly_id
208
-
209
- # Change slug
210
- post.title = "New Post Modified"
211
- post.save
212
-
213
- visit proclaim.post_path(old_slug)
214
- assert page.has_text? post.title
215
- assert_equal proclaim.post_path(post.friendly_id), current_path,
216
- "Post show via ID should redirect to more friendly URL"
217
- end
218
-
219
- test "image should have relative source path" do
220
- user = FactoryGirl.create(:user)
221
- sign_in user
222
-
223
- image = FactoryGirl.create(:image)
224
- image.post.body = @edit_page.medium_inserted_image_html(image)
225
- image.post.save
226
-
227
- image_tags = Nokogiri::HTML.fragment(image.post.body).css("img")
228
-
229
- assert_equal 1, image_tags.length,
230
- "Post body should contain one image tag"
231
- refute_match root_url, image_tags[0].attribute("src"),
232
- "Images should have relative paths"
233
- end
234
- end
@@ -1,95 +0,0 @@
1
- require 'test_helper'
2
-
3
- class SubscriptionEmailTest < ActionDispatch::IntegrationTest
4
- setup do
5
- ApplicationController.any_instance.stubs(:current_user).returns(nil)
6
- ApplicationController.any_instance.stubs(:authenticate_user).returns(false)
7
-
8
- ActionMailer::Base.deliveries.clear
9
- end
10
-
11
- test "should email welcome to post subscriber upon subscription" do
12
- post = FactoryGirl.create(:published_post)
13
- subscription = FactoryGirl.create(:subscription, post: post)
14
-
15
- # Make sure subscriber was sent a welcome email
16
- assert_equal [subscription.email], ActionMailer::Base.deliveries.last.to
17
- assert_match "Welcome", ActionMailer::Base.deliveries.last.subject
18
- end
19
-
20
- test "should email notification to post subscriber when new comment is made" do
21
- post = FactoryGirl.create(:published_post)
22
- subscription = FactoryGirl.create(:subscription, post: post)
23
-
24
- # Clear out emails-- new subscription probably sent a welcome email
25
- ActionMailer::Base.deliveries.clear
26
-
27
- comment = FactoryGirl.create(:comment, post: post)
28
-
29
- # Make sure subscriber was notified of new comment
30
- assert_equal [subscription.email], ActionMailer::Base.deliveries.last.to
31
- assert_equal "New Comment On \"#{post.title}\"", ActionMailer::Base.deliveries.last.subject
32
- end
33
-
34
- test "should not email post subscriber when old comment is edited" do
35
- post = FactoryGirl.create(:published_post)
36
- subscription = FactoryGirl.create(:subscription, post: post)
37
- comment = FactoryGirl.create(:comment, post: post)
38
-
39
- # Clear out emails that were just sent
40
- ActionMailer::Base.deliveries.clear
41
-
42
- comment.author = "Edit Author"
43
- comment.body = "Edit Body"
44
- comment.save
45
-
46
- # Make sure no email was sent after update
47
- assert_empty ActionMailer::Base.deliveries
48
- end
49
-
50
- test "should email notification to blog subscriber when post is published" do
51
- subscription = FactoryGirl.create(:subscription)
52
-
53
- # Clear out emails-- new subscription probably sent a welcome email
54
- ActionMailer::Base.deliveries.clear
55
-
56
- post = FactoryGirl.create(:published_post)
57
-
58
- # Make sure subscriber was notified of new post
59
- assert_equal [subscription.email], ActionMailer::Base.deliveries.last.to
60
- assert_equal "New Post: #{post.title}", ActionMailer::Base.deliveries.last.subject
61
- end
62
-
63
- test "should not email notification to blog subscriber when post is updated" do
64
- subscription = FactoryGirl.create(:subscription)
65
- post = FactoryGirl.create(:published_post)
66
-
67
- # Clear out all emails
68
- ActionMailer::Base.deliveries.clear
69
-
70
- post.title = "Edit Title"
71
- post.body = "Edit Body"
72
-
73
- # Make sure no email was sent after update
74
- assert_empty ActionMailer::Base.deliveries
75
- end
76
-
77
- test "should not email notification to blog subscriber if post is not published" do
78
- subscription = FactoryGirl.create(:subscription)
79
-
80
- # Clear out emails-- new subscription probably sent a welcome email
81
- ActionMailer::Base.deliveries.clear
82
-
83
- post = FactoryGirl.create(:post)
84
-
85
- # Make sure no email was sent after update
86
- assert_empty ActionMailer::Base.deliveries
87
-
88
- post.publish
89
- assert post.save
90
-
91
- # Make sure subscriber was notified of newly published post
92
- assert_equal [subscription.email], ActionMailer::Base.deliveries.last.to
93
- assert_equal "New Post: #{post.title}", ActionMailer::Base.deliveries.last.subject
94
- end
95
- end