proclaim 0.1.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.
- checksums.yaml +7 -0
- data/CHANGELOG +6 -0
- data/Gemfile +14 -0
- data/LICENSE +674 -0
- data/README.md +137 -0
- data/Rakefile +65 -0
- data/VERSION +1 -0
- data/app/assets/images/ajax_loader.gif +0 -0
- data/app/assets/javascripts/proclaim.js +18 -0
- data/app/assets/javascripts/proclaim/comments_handler.js.coffee +192 -0
- data/app/assets/javascripts/proclaim/editor.js.coffee +50 -0
- data/app/assets/javascripts/proclaim/images.js.coffee +3 -0
- data/app/assets/javascripts/proclaim/subscriptions.js.coffee +3 -0
- data/app/assets/stylesheets/proclaim.css.scss +28 -0
- data/app/assets/stylesheets/proclaim/comments.css.scss +14 -0
- data/app/assets/stylesheets/proclaim/images.scss +3 -0
- data/app/assets/stylesheets/proclaim/posts.css.scss +77 -0
- data/app/assets/stylesheets/proclaim/subscriptions.css.scss +3 -0
- data/app/controllers/proclaim/application_controller.rb +44 -0
- data/app/controllers/proclaim/comments_controller.rb +128 -0
- data/app/controllers/proclaim/images_controller.rb +108 -0
- data/app/controllers/proclaim/posts_controller.rb +131 -0
- data/app/controllers/proclaim/subscriptions_controller.rb +67 -0
- data/app/helpers/proclaim/application_helper.rb +34 -0
- data/app/helpers/proclaim/comments_helper.rb +4 -0
- data/app/helpers/proclaim/images_helper.rb +4 -0
- data/app/helpers/proclaim/posts_helper.rb +4 -0
- data/app/helpers/proclaim/subscriptions_helper.rb +4 -0
- data/app/mailers/proclaim/subscription_mailer.rb +43 -0
- data/app/models/proclaim/comment.rb +35 -0
- data/app/models/proclaim/image.rb +19 -0
- data/app/models/proclaim/post.rb +133 -0
- data/app/models/proclaim/subscription.rb +63 -0
- data/app/policies/application_policy.rb +53 -0
- data/app/policies/proclaim/comment_policy.rb +27 -0
- data/app/policies/proclaim/image_policy.rb +29 -0
- data/app/policies/proclaim/post_policy.rb +38 -0
- data/app/policies/proclaim/subscription_policy.rb +32 -0
- data/app/uploaders/proclaim/image_uploader.rb +82 -0
- data/app/views/layouts/proclaim/subscription_mailer.html.erb +133 -0
- data/app/views/proclaim/comments/_comment.html.erb +33 -0
- data/app/views/proclaim/comments/_form.html.erb +51 -0
- data/app/views/proclaim/posts/_form.html.erb +67 -0
- data/app/views/proclaim/posts/edit.html.erb +3 -0
- data/app/views/proclaim/posts/index.html.erb +30 -0
- data/app/views/proclaim/posts/new.html.erb +3 -0
- data/app/views/proclaim/posts/show.html.erb +46 -0
- data/app/views/proclaim/subscription_mailer/new_comment_notification_email.html.erb +11 -0
- data/app/views/proclaim/subscription_mailer/new_post_notification_email.html.erb +15 -0
- data/app/views/proclaim/subscription_mailer/welcome_email.html.erb +25 -0
- data/app/views/proclaim/subscriptions/_form.html.erb +32 -0
- data/app/views/proclaim/subscriptions/new.html.erb +8 -0
- data/app/views/proclaim/subscriptions/subscribed.html.erb +7 -0
- data/app/views/proclaim/subscriptions/unsubscribe.html.erb +7 -0
- data/app/views/proclaim/subscriptions/unsubscribed.html.erb +3 -0
- data/config/routes.rb +18 -0
- data/db/migrate/20141108222616_create_proclaim_posts.rb +15 -0
- data/db/migrate/20141114235359_create_proclaim_comments.rb +15 -0
- data/db/migrate/20141115022230_create_proclaim_comment_hierarchies.rb +26 -0
- data/db/migrate/20141210234057_create_proclaim_subscriptions.rb +17 -0
- data/db/migrate/20141222224905_create_proclaim_images.rb +12 -0
- data/lib/generators/proclaim/install_generator.rb +23 -0
- data/lib/generators/proclaim/templates/README +27 -0
- data/lib/generators/proclaim/templates/initialize_proclaim.rb +22 -0
- data/lib/generators/proclaim/views_generator.rb +24 -0
- data/lib/proclaim.rb +22 -0
- data/lib/proclaim/engine.rb +39 -0
- data/lib/proclaim/version.rb +3 -0
- data/lib/tasks/proclaim_tasks.rake +4 -0
- data/proclaim.gemspec +46 -0
- data/test/controllers/proclaim/comments_controller_test.rb +228 -0
- data/test/controllers/proclaim/images_controller_test.rb +123 -0
- data/test/controllers/proclaim/posts_controller_test.rb +303 -0
- data/test/controllers/proclaim/subscriptions_controller_test.rb +93 -0
- data/test/dummy/README.rdoc +28 -0
- data/test/dummy/Rakefile +6 -0
- data/test/dummy/app/assets/javascripts/application.js +14 -0
- data/test/dummy/app/assets/stylesheets/application.css +16 -0
- data/test/dummy/app/controllers/application_controller.rb +15 -0
- data/test/dummy/app/helpers/application_helper.rb +28 -0
- data/test/dummy/app/models/user.rb +7 -0
- data/test/dummy/app/views/layouts/application.html.erb +16 -0
- data/test/dummy/bin/bundle +3 -0
- data/test/dummy/bin/rails +4 -0
- data/test/dummy/bin/rake +4 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +24 -0
- data/test/dummy/config/boot.rb +5 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +45 -0
- data/test/dummy/config/environments/production.rb +80 -0
- data/test/dummy/config/environments/test.rb +49 -0
- data/test/dummy/config/initializers/assets.rb +8 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
- data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/test/dummy/config/initializers/inflections.rb +16 -0
- data/test/dummy/config/initializers/mime_types.rb +4 -0
- data/test/dummy/config/initializers/session_store.rb +3 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +23 -0
- data/test/dummy/config/routes.rb +5 -0
- data/test/dummy/config/secrets.yml +22 -0
- data/test/dummy/db/migrate/20141117214323_create_users.rb +10 -0
- data/test/dummy/db/schema.rb +75 -0
- data/test/dummy/log/development.log +131 -0
- data/test/dummy/log/test.log +25961 -0
- data/test/dummy/public/404.html +67 -0
- data/test/dummy/public/422.html +67 -0
- data/test/dummy/public/500.html +66 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/0b69f7cc441d56def3a51688e6a7a8474dc476d1/proclaim.css.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/12a97df611d5fb0e395afda829edf8b9372acde7/comments.css.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/12a97df611d5fb0e395afda829edf8b9372acde7/images.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/12a97df611d5fb0e395afda829edf8b9372acde7/posts.css.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/12a97df611d5fb0e395afda829edf8b9372acde7/subscriptions.css.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/04adcece63bc645379e6de797e7998f8 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/06620fc450f0a9b4a482a7bc08387711 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/076dd0d567a92c34163b3b98af1d48ba +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/09fc2eadf6d6062b2cc135a44e4e73db +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/09fe8c62e8ae706e01058b4b4d056c8e +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/142fd040033525acb73ad2ccf1406aea +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/1762aeeaf38da3b8d989a5b66b088004 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/194ac1a695334e303516614579b3926d +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/197ea008934db3e7ea8045302d206b92 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/19eba2635fec0895379c3e38f81ada84 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/1c2ebe72fcd7ff1379a561552ca30f85 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/1f42c80faacb651f670ec2b0998e49dc +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/2243230e778a749ecbf0415a52e75be0 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/23ad87e715c70312aa61dde4fbb4bfe1 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/245b8735db4ea90bcaa91c011a1f447e +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/26a42dac0cec64483f4126d2de4b0c9e +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/30151c8f6d93717f06fa12774612ddf4 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/3c623d200214a5334aaf170537db087f +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/3ec36650a50759fd4b75794cb253936f +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/40431cdcc10c75ba1f275ecfe42623d3 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/4226218a4b06608115b21063353370ea +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/437901953eb8707af6c27ca59cf65d91 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/461885b8ad31ef6a94c9a4f2e332b7eb +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/4792f46317cda92ccd5b278ec61f9ac5 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/4dcb3434b91b1c62f897a1741c6d398b +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/5101cda93cf70f0fc0837713be587780 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/52d8c61de0703e0d7cf97d0f7b0cca7a +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/57f3d19a9bd484ac68c46f962a8684b2 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/587e7c1332c8d8b69746dd85164e2cef +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/5934d5d0d1ac6657842708e85c73cf51 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/5af081799d7da2f04ead6a516c6015ad +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/69ee5af8d9a655898a67bc538ca1c7e7 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/6d1c56259648b0383bc438c875a448c3 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/6e7de35055967df848aa490830043e51 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/70bc59560ee544af7bb2f727247db307 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/728cb566999910549092ff0a98e2853b +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/72b5f0d35e9d69b744a156edad98f983 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/72ffa34d552e3fd02f28a6f845a5ac5b +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/7369d324e84bc872c42b3e717ff4ad6c +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/749a8b0e45b11df748a256dd04ceb1f7 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/77fb9f62552d9b786f9407ef11cc9a09 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/797823842565e01fc989ad8df0bd4254 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/7c139afa2296ac17483520109aecd449 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/7fb99e2b35af65c4f58bfb92dd4185b4 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/819de31c63b704f9ddf4865587a91d41 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/8604b464bf846e5223da37ef2f29b524 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/88fc815613b473e98e9307b1d423918d +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/8bc4341aa4060b8646e8134722cf3b11 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/8cf8fd5ff8eae12211a88f971af30236 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/8da3b4a9f17aafff49eb263bdb758f44 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/9168e513bae02f041dbb806d6dbe94ac +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/920c1322be1212a54b7c4f2751d5e7bf +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/92205679a36afd387a2ba5c585a5a62c +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/940566ebcae2d4e5c56a881ab66f2cf0 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/976967e07e2944a7ecc7403667f1f96b +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/99bdde70cefa71745279232be575f14e +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/9a8e402a7e32063e46647403b43553a5 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/9b09ad72f8cc33503878b01c713d92d0 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/a20dbdfebf37fe50e832a6273c972553 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/a3c6189fad6cb9ae955f6d5a43a61d51 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/abb54e11ff057a3e22a5a97d27cc4fa3 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/ad18e3875541d4298b1df133d494b93f +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/b9b7c575c22943d49734d52381c5ee16 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/ba269a52f100d3d6cffda81e82e1ed49 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/bc7a0846b4881b0832d41de2b1724dba +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/bcb2df87f9611d3cc3ef8a5575e54fb8 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/bcf33791d3286af3ba2cdf6a6756c89e +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/be32d0a530ce861537d6abfa41333df9 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/c8270a6f07dccc5f00e6b2b43f10efd2 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/cd82cd410a50bffcfb6e21e3c49a85c9 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/ce4ccaa06bdee6426486224bc7e54187 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/d0bdb8592e4eed80aa2341e37f20dbc9 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/d4b784b16fa1b1dfcca6590689a8c157 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/d968bd38a69bbf5c0065e2df3d30cfd3 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/daa4d4b8a5ce46d6c4ecf031e0c61cfe +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/dc2effd195334219a7e4acfdc7ec7974 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/de36ab6c3b1a9b62a586d98373dd569c +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/e3aec457d5c753090d6521f2bb2d91b6 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/e8d6158b1fed2f574242b55856a3953d +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/ea82f6aececcf81eef3e2e15a9225e66 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/ed9f5c17f71ec75de10b1bb029ebd7a2 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/f2984adaeaa5322e3a040705c6d40622 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/f62fd0cf9f5e7e077ec9c4daeccb06ae +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/f78ea69bdbba5738c052e9eb04e6c208 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/f864e553f706456dbdf168319970ec2e +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/fb0f641bfcbb0101c040da9ff736447b +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/fe426a44cf23cf82032091cbffff898c +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/ff732ea47a86c449582b2a81ef2930da +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/ffc4980851addaacf12abeebfa63e07f +0 -0
- data/test/dummy/tmp/generators/config/initializers/proclaim.rb +22 -0
- data/test/factories/proclaim/comment.rb +11 -0
- data/test/factories/proclaim/image.rb +6 -0
- data/test/factories/proclaim/post.rb +14 -0
- data/test/factories/proclaim/subscription.rb +13 -0
- data/test/factories/user.rb +6 -0
- data/test/helpers/proclaim/comments_helper_test.rb +6 -0
- data/test/helpers/proclaim/posts_helper_test.rb +6 -0
- data/test/helpers/proclaim/subscriptions_helper_test.rb +6 -0
- data/test/integration/with_javascript/comment_test.rb +353 -0
- data/test/integration/with_javascript/post_form_test.rb +179 -0
- data/test/integration/with_javascript/post_subscription_test.rb +273 -0
- data/test/integration/without_javascript/blog_subscription_test.rb +87 -0
- data/test/integration/without_javascript/post_test.rb +140 -0
- data/test/integration/without_javascript/subscription_email_test.rb +95 -0
- data/test/integration/without_javascript/unsubscribe_test.rb +32 -0
- data/test/mailers/previews/proclaim/subscription_mailer_preview.rb +22 -0
- data/test/mailers/proclaim/subscription_mailer_test.rb +87 -0
- data/test/models/proclaim/comment_test.rb +41 -0
- data/test/models/proclaim/image_test.rb +70 -0
- data/test/models/proclaim/post_test.rb +127 -0
- data/test/models/proclaim/subscription_test.rb +66 -0
- data/test/policies/proclaim/comment_policy_test.rb +71 -0
- data/test/policies/proclaim/post_policy_test.rb +87 -0
- data/test/policies/proclaim/subscription_policy_test.rb +91 -0
- data/test/proclaim_test.rb +7 -0
- data/test/support/images/test.jpg +0 -0
- data/test/support/pages/posts/edit_page.rb +5 -0
- data/test/support/pages/posts/show_page.rb +47 -0
- data/test/support/wait_for_ajax.rb +11 -0
- data/test/test_helper.rb +56 -0
- data/vendor/assets/images/link.png +0 -0
- data/vendor/assets/images/remove.png +0 -0
- data/vendor/assets/images/resize-bigger.png +0 -0
- data/vendor/assets/images/resize-smaller.png +0 -0
- data/vendor/assets/images/unlink.png +0 -0
- data/vendor/assets/javascripts/addons/medium-editor-insert-embeds.js +197 -0
- data/vendor/assets/javascripts/addons/medium-editor-insert-embeds.min.js +10 -0
- data/vendor/assets/javascripts/addons/medium-editor-insert-images.js +572 -0
- data/vendor/assets/javascripts/addons/medium-editor-insert-images.min.js +10 -0
- data/vendor/assets/javascripts/addons/medium-editor-insert-maps.js +50 -0
- data/vendor/assets/javascripts/addons/medium-editor-insert-maps.min.js +10 -0
- data/vendor/assets/javascripts/addons/medium-editor-insert-plugin.js +496 -0
- data/vendor/assets/javascripts/addons/medium-editor-insert-plugin.min.js +10 -0
- data/vendor/assets/javascripts/addons/medium-editor-insert-tables.js +132 -0
- data/vendor/assets/javascripts/addons/medium-editor-insert-tables.min.js +10 -0
- data/vendor/assets/javascripts/medium-editor-insert-plugin.all.js +1415 -0
- data/vendor/assets/javascripts/medium-editor-insert-plugin.all.min.js +10 -0
- data/vendor/assets/stylesheets/medium-editor-insert-plugin-frontend.css +55 -0
- data/vendor/assets/stylesheets/medium-editor-insert-plugin-frontend.min.css +10 -0
- data/vendor/assets/stylesheets/medium-editor-insert-plugin.css +277 -0
- data/vendor/assets/stylesheets/medium-editor-insert-plugin.min.css +10 -0
- metadata +791 -0
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class PostFormTest < ActionDispatch::IntegrationTest
|
|
4
|
+
include WaitForAjax
|
|
5
|
+
self.use_transactional_fixtures = false
|
|
6
|
+
|
|
7
|
+
setup do
|
|
8
|
+
ApplicationController.any_instance.stubs(:current_user).returns(nil)
|
|
9
|
+
ApplicationController.any_instance.stubs(:authenticate_user).returns(false)
|
|
10
|
+
|
|
11
|
+
DatabaseCleaner.strategy = :truncation
|
|
12
|
+
DatabaseCleaner.start
|
|
13
|
+
|
|
14
|
+
Capybara.current_driver = :selenium
|
|
15
|
+
|
|
16
|
+
@edit_page = EditPage.new
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
teardown do
|
|
20
|
+
DatabaseCleaner.clean
|
|
21
|
+
Capybara.use_default_driver
|
|
22
|
+
|
|
23
|
+
image = Proclaim::Image.new
|
|
24
|
+
FileUtils.rm_rf(File.join(Rails.public_path, image.image.cache_dir))
|
|
25
|
+
FileUtils.rm_rf(File.join(Rails.public_path, image.image.store_dir))
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
test "should create post" do
|
|
29
|
+
user = FactoryGirl.create(:user)
|
|
30
|
+
sign_in user
|
|
31
|
+
|
|
32
|
+
visit proclaim.new_post_path
|
|
33
|
+
|
|
34
|
+
within('#new_post') do
|
|
35
|
+
element = find('h1.editable')
|
|
36
|
+
element.click()
|
|
37
|
+
element.set("Post Title") # Set the title text
|
|
38
|
+
element = find('div.editable')
|
|
39
|
+
element.click() # Select the element
|
|
40
|
+
element.set("Paragraph 1\nParagraph 2") # Set the body text
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
assert_difference('Proclaim::Post.count') do
|
|
44
|
+
click_button "Create"
|
|
45
|
+
assert page.has_text? "Post Title"
|
|
46
|
+
assert page.has_text? "Paragraph 1\nParagraph 2"
|
|
47
|
+
wait_for_ajax
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
test "should delete cached image" do
|
|
52
|
+
user = FactoryGirl.create(:user)
|
|
53
|
+
sign_in user
|
|
54
|
+
|
|
55
|
+
image = FactoryGirl.build(:image, post: nil)
|
|
56
|
+
post = FactoryGirl.create(:post, body: @edit_page.medium_inserted_image_html(image))
|
|
57
|
+
|
|
58
|
+
cache_file_path = File.join(Rails.public_path, image.image.cache_dir, image.image.cache_name)
|
|
59
|
+
cache_path = File.dirname(cache_file_path)
|
|
60
|
+
|
|
61
|
+
assert File.exist?(cache_file_path), "File should have been cached: #{cache_file_path}"
|
|
62
|
+
|
|
63
|
+
visit proclaim.edit_post_path(post)
|
|
64
|
+
|
|
65
|
+
find("img[src='#{image.image.url}']").hover
|
|
66
|
+
find("a.mediumInsert-imageRemove").click
|
|
67
|
+
|
|
68
|
+
assert page.has_no_css?("img[src='#{image.image.url}']"), "Image should have been removed!"
|
|
69
|
+
|
|
70
|
+
wait_for_ajax
|
|
71
|
+
|
|
72
|
+
refute File.exist?(cache_file_path), "Should have removed cache file: #{cache_file_path}"
|
|
73
|
+
refute File.exist?(cache_path), "Should have removed cache path: #{cache_path}"
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
test "should delete saved image" do
|
|
77
|
+
user = FactoryGirl.create(:user)
|
|
78
|
+
sign_in user
|
|
79
|
+
|
|
80
|
+
image = FactoryGirl.create(:image)
|
|
81
|
+
image.post.body = "<p>test</p>" + @edit_page.medium_inserted_image_html(image)
|
|
82
|
+
image.post.save
|
|
83
|
+
|
|
84
|
+
save_path = File.join(Rails.public_path, image.image.store_dir)
|
|
85
|
+
saved_file_path = File.join(save_path, image.image_identifier)
|
|
86
|
+
|
|
87
|
+
assert File.exist?(saved_file_path), "File should be saved: #{saved_file_path}"
|
|
88
|
+
|
|
89
|
+
visit proclaim.edit_post_path(image.post)
|
|
90
|
+
|
|
91
|
+
find("img[src='#{image.image.url}']").hover
|
|
92
|
+
find("a.mediumInsert-imageRemove").click
|
|
93
|
+
|
|
94
|
+
assert page.has_no_css?("img[src='#{image.image.url}']"), "Image should have been removed!"
|
|
95
|
+
|
|
96
|
+
wait_for_ajax
|
|
97
|
+
|
|
98
|
+
assert File.exist?(saved_file_path), "File should still be saved: #{saved_file_path}"
|
|
99
|
+
|
|
100
|
+
click_button "Update Post"
|
|
101
|
+
assert page.has_no_css?("div#error_explanation"), "This update should have succeeded!"
|
|
102
|
+
|
|
103
|
+
assert page.has_no_css?("img[src='#{image.image.url}']"), "Image should still be removed!"
|
|
104
|
+
|
|
105
|
+
refute File.exist?(saved_file_path), "Should have removed file: #{saved_file_path}"
|
|
106
|
+
refute File.exist?(save_path), "Should have removed saved path: #{save_path}"
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
test "delete saved image but not save should still show image" do
|
|
110
|
+
user = FactoryGirl.create(:user)
|
|
111
|
+
sign_in user
|
|
112
|
+
|
|
113
|
+
image = FactoryGirl.create(:image)
|
|
114
|
+
image.post.body = @edit_page.medium_inserted_image_html(image)
|
|
115
|
+
image.post.save
|
|
116
|
+
|
|
117
|
+
save_path = File.join(Rails.public_path, image.image.store_dir)
|
|
118
|
+
saved_file_path = File.join(save_path, image.image_identifier)
|
|
119
|
+
|
|
120
|
+
assert File.exist?(saved_file_path), "File should be saved: #{saved_file_path}"
|
|
121
|
+
|
|
122
|
+
visit proclaim.edit_post_path(image.post)
|
|
123
|
+
|
|
124
|
+
find("img[src='#{image.image.url}']").hover
|
|
125
|
+
find("a.mediumInsert-imageRemove").click
|
|
126
|
+
|
|
127
|
+
assert page.has_no_css?("img[src='#{image.image.url}']"), "Image should have been removed!"
|
|
128
|
+
|
|
129
|
+
wait_for_ajax
|
|
130
|
+
|
|
131
|
+
assert File.exist?(saved_file_path), "File should still be saved: #{saved_file_path}"
|
|
132
|
+
|
|
133
|
+
# Don't save. Just visit the post's show page
|
|
134
|
+
visit proclaim.post_path(image.post)
|
|
135
|
+
|
|
136
|
+
assert page.has_css?("img[src='#{image.image.url}']"), "Image should still be present!"
|
|
137
|
+
assert File.exist?(saved_file_path), "File should still be saved: #{saved_file_path}"
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
test "should show error without title" do
|
|
141
|
+
user = FactoryGirl.create(:user)
|
|
142
|
+
sign_in user
|
|
143
|
+
|
|
144
|
+
visit proclaim.new_post_path
|
|
145
|
+
|
|
146
|
+
within('#new_post') do
|
|
147
|
+
# Don't fill in title
|
|
148
|
+
element = find('div.editable')
|
|
149
|
+
element.click() # Select the element
|
|
150
|
+
element.set("Paragraph 1\nParagraph 2") # Set the text
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
assert_no_difference('Proclaim::Post.count') do
|
|
154
|
+
click_button "Create"
|
|
155
|
+
assert page.has_css? "div#error_explanation"
|
|
156
|
+
wait_for_ajax
|
|
157
|
+
end
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
test "should show error without body" do
|
|
161
|
+
user = FactoryGirl.create(:user)
|
|
162
|
+
sign_in user
|
|
163
|
+
|
|
164
|
+
visit proclaim.new_post_path
|
|
165
|
+
|
|
166
|
+
within('#new_post') do
|
|
167
|
+
element = find('h1.editable')
|
|
168
|
+
element.click()
|
|
169
|
+
element.set("Post Title") # Set the title text
|
|
170
|
+
# Don't fill in the body
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
assert_no_difference('Proclaim::Post.count') do
|
|
174
|
+
click_button "Create"
|
|
175
|
+
assert page.has_css? "div#error_explanation"
|
|
176
|
+
wait_for_ajax
|
|
177
|
+
end
|
|
178
|
+
end
|
|
179
|
+
end
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class PostSubscriptionTest < ActionDispatch::IntegrationTest
|
|
4
|
+
include WaitForAjax
|
|
5
|
+
self.use_transactional_fixtures = false
|
|
6
|
+
|
|
7
|
+
setup do
|
|
8
|
+
ApplicationController.any_instance.stubs(:current_user).returns(nil)
|
|
9
|
+
ApplicationController.any_instance.stubs(:authenticate_user).returns(false)
|
|
10
|
+
|
|
11
|
+
DatabaseCleaner.strategy = :truncation
|
|
12
|
+
DatabaseCleaner.start
|
|
13
|
+
|
|
14
|
+
Capybara.current_driver = :selenium
|
|
15
|
+
|
|
16
|
+
ActionMailer::Base.deliveries.clear
|
|
17
|
+
|
|
18
|
+
@show_page = ShowPage.new
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
teardown do
|
|
22
|
+
DatabaseCleaner.clean
|
|
23
|
+
Capybara.use_default_driver
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
test "should be able to create new root comment with subscription while logged in" do
|
|
27
|
+
user = FactoryGirl.create(:user)
|
|
28
|
+
sign_in user
|
|
29
|
+
|
|
30
|
+
post = FactoryGirl.create(:published_post)
|
|
31
|
+
|
|
32
|
+
visit proclaim.post_path(post)
|
|
33
|
+
|
|
34
|
+
within('#new_comment') do
|
|
35
|
+
fill_in 'Author', with: "Comment Author"
|
|
36
|
+
fill_in 'Body', with: "Comment Body"
|
|
37
|
+
fill_in 'What is', with: @show_page.antispam_solution
|
|
38
|
+
check 'Notify me of other comments on this post'
|
|
39
|
+
fill_in 'Email', with: "example@example.com"
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
assert_difference('Proclaim::Subscription.count', 1, "A new subscription should have been added!") do
|
|
43
|
+
@show_page.new_comment_submit_button.click
|
|
44
|
+
wait_for_ajax
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# Make sure a welcome email was sent
|
|
48
|
+
assert_equal ["example@example.com"], ActionMailer::Base.deliveries.last.to
|
|
49
|
+
|
|
50
|
+
post.reload # Refresh post to pull in new associations
|
|
51
|
+
|
|
52
|
+
assert 1, post.subscriptions.count
|
|
53
|
+
assert_equal "example@example.com", post.subscriptions.first.email
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
test "should be able to create new root comment with subscription while not logged in" do
|
|
57
|
+
post = FactoryGirl.create(:published_post)
|
|
58
|
+
|
|
59
|
+
visit proclaim.post_path(post)
|
|
60
|
+
|
|
61
|
+
within('#new_comment') do
|
|
62
|
+
fill_in 'Author', with: "Comment Author"
|
|
63
|
+
fill_in 'Body', with: "Comment Body"
|
|
64
|
+
fill_in 'What is', with: @show_page.antispam_solution
|
|
65
|
+
check 'Notify me of other comments on this post'
|
|
66
|
+
fill_in 'Email', with: "example@example.com"
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
assert_difference('Proclaim::Subscription.count', 1, "A new subscription should have been added!") do
|
|
70
|
+
@show_page.new_comment_submit_button.click
|
|
71
|
+
wait_for_ajax
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
# Make sure a welcome email was sent
|
|
75
|
+
assert_equal ["example@example.com"], ActionMailer::Base.deliveries.last.to
|
|
76
|
+
|
|
77
|
+
post.reload # Refresh post to pull in new associations
|
|
78
|
+
|
|
79
|
+
assert 1, post.subscriptions.count
|
|
80
|
+
assert_equal "example@example.com", post.subscriptions.first.email
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
test "should be able to create new reply with subscription while logged in" do
|
|
84
|
+
user = FactoryGirl.create(:user)
|
|
85
|
+
sign_in user
|
|
86
|
+
|
|
87
|
+
comment = FactoryGirl.create(:published_comment)
|
|
88
|
+
|
|
89
|
+
visit proclaim.post_path(comment.post)
|
|
90
|
+
|
|
91
|
+
click_link "Reply"
|
|
92
|
+
within("#reply_to_#{comment.id}_new_comment") do
|
|
93
|
+
fill_in 'Author', with: "Reply Author"
|
|
94
|
+
fill_in 'Body', with: "Reply Body"
|
|
95
|
+
fill_in 'What is', with: @show_page.antispam_solution(comment)
|
|
96
|
+
check 'Notify me of other comments on this post'
|
|
97
|
+
fill_in 'Email', with: "example@example.com"
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
assert_difference('Proclaim::Subscription.count', 1, "A new subscription should have been added!") do
|
|
101
|
+
@show_page.new_comment_submit_button(comment).click
|
|
102
|
+
wait_for_ajax
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
# Make sure a welcome email was sent
|
|
106
|
+
assert_equal ["example@example.com"], ActionMailer::Base.deliveries.last.to
|
|
107
|
+
comment.reload # Refresh comment to pull in new associations
|
|
108
|
+
|
|
109
|
+
assert 1, comment.post.subscriptions.count
|
|
110
|
+
assert_equal "example@example.com", comment.post.subscriptions.first.email
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
test "should be able to create new reply with subscription while not logged in" do
|
|
114
|
+
comment = FactoryGirl.create(:published_comment)
|
|
115
|
+
|
|
116
|
+
visit proclaim.post_path(comment.post)
|
|
117
|
+
|
|
118
|
+
click_link "Reply"
|
|
119
|
+
within("#reply_to_#{comment.id}_new_comment") do
|
|
120
|
+
fill_in 'Author', with: "Reply Author"
|
|
121
|
+
fill_in 'Body', with: "Reply Body"
|
|
122
|
+
fill_in 'What is', with: @show_page.antispam_solution(comment)
|
|
123
|
+
check 'Notify me of other comments on this post'
|
|
124
|
+
fill_in 'Email', with: "example@example.com"
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
assert_difference('Proclaim::Subscription.count', 1, "A new subscription should have been added!") do
|
|
128
|
+
@show_page.new_comment_submit_button(comment).click
|
|
129
|
+
wait_for_ajax
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
# Make sure a welcome email was sent
|
|
133
|
+
assert_equal ["example@example.com"], ActionMailer::Base.deliveries.last.to
|
|
134
|
+
|
|
135
|
+
comment.reload # Refresh comment to pull in new associations
|
|
136
|
+
|
|
137
|
+
assert 1, comment.post.subscriptions.count
|
|
138
|
+
assert_equal "example@example.com", comment.post.subscriptions.first.email
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
test "should not send new comment notification email containing own comment" do
|
|
142
|
+
post = FactoryGirl.create(:published_post)
|
|
143
|
+
|
|
144
|
+
visit proclaim.post_path(post)
|
|
145
|
+
|
|
146
|
+
within('#new_comment') do
|
|
147
|
+
fill_in 'Author', with: "Comment Author"
|
|
148
|
+
fill_in 'Body', with: "Comment Body"
|
|
149
|
+
fill_in 'What is', with: @show_page.antispam_solution
|
|
150
|
+
check 'Notify me of other comments on this post'
|
|
151
|
+
fill_in 'Email', with: "example@example.com"
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
assert_difference('Proclaim::Subscription.count', 1, "A new subscription should have been added!") do
|
|
155
|
+
@show_page.new_comment_submit_button.click
|
|
156
|
+
wait_for_ajax
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
# Make sure only a single email was sent
|
|
160
|
+
assert_equal 1, ActionMailer::Base.deliveries.count,
|
|
161
|
+
"Only a welcome email should have been sent!"
|
|
162
|
+
assert_match "Welcome", ActionMailer::Base.deliveries.last.subject
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
test "should not create new root comment with subscription if spammy" do
|
|
166
|
+
comment = FactoryGirl.create(:published_comment)
|
|
167
|
+
|
|
168
|
+
visit proclaim.post_path(comment.post)
|
|
169
|
+
|
|
170
|
+
within('#new_comment') do
|
|
171
|
+
fill_in 'Author', with: "Comment Author"
|
|
172
|
+
fill_in 'Body', with: "Comment Body"
|
|
173
|
+
fill_in 'What is', with: "wrong answer"
|
|
174
|
+
check 'Notify me of other comments on this post'
|
|
175
|
+
fill_in 'Email', with: "example@example.com"
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
assert_no_difference('Proclaim::Comment.count',
|
|
179
|
+
"A new comment should not have been added!") do
|
|
180
|
+
assert_no_difference('Proclaim::Subscription.count',
|
|
181
|
+
"A new subscription should not have been added!") do
|
|
182
|
+
@show_page.new_comment_submit_button.click
|
|
183
|
+
assert page.has_css?('div.error'), "Failed antispam question-- errors should show!"
|
|
184
|
+
wait_for_ajax
|
|
185
|
+
end
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
# Make sure no email was sent
|
|
189
|
+
assert_empty ActionMailer::Base.deliveries
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
test "should not create new reply with subscription if spammy" do
|
|
193
|
+
comment = FactoryGirl.create(:published_comment)
|
|
194
|
+
|
|
195
|
+
visit proclaim.post_path(comment.post)
|
|
196
|
+
|
|
197
|
+
click_link "Reply"
|
|
198
|
+
within("#reply_to_#{comment.id}_new_comment") do
|
|
199
|
+
fill_in 'Author', with: "Reply Author"
|
|
200
|
+
fill_in 'Body', with: "Reply Body"
|
|
201
|
+
fill_in 'What is', with: "wrong answer"
|
|
202
|
+
check 'Notify me of other comments on this post'
|
|
203
|
+
fill_in 'Email', with: "example@example.com"
|
|
204
|
+
end
|
|
205
|
+
|
|
206
|
+
assert_no_difference('Proclaim::Comment.count',
|
|
207
|
+
"A new comment should not have been added!") do
|
|
208
|
+
assert_no_difference('Proclaim::Subscription.count',
|
|
209
|
+
"A new subscription should not have been added!") do
|
|
210
|
+
@show_page.new_comment_submit_button(comment).click
|
|
211
|
+
assert page.has_css?('div.error'), "Failed antispam question-- errors should show!"
|
|
212
|
+
wait_for_ajax
|
|
213
|
+
end
|
|
214
|
+
end
|
|
215
|
+
|
|
216
|
+
# Make sure no email was sent
|
|
217
|
+
assert_empty ActionMailer::Base.deliveries
|
|
218
|
+
end
|
|
219
|
+
|
|
220
|
+
test "catch lack of email address" do
|
|
221
|
+
post = FactoryGirl.create(:published_post)
|
|
222
|
+
visit proclaim.post_path(post)
|
|
223
|
+
|
|
224
|
+
# Create a new comment and say "notify me," but don't provide email
|
|
225
|
+
within('#new_comment') do
|
|
226
|
+
fill_in 'Author', with: "Comment Author"
|
|
227
|
+
fill_in 'Body', with: "Comment Body"
|
|
228
|
+
fill_in 'What is', with: @show_page.antispam_solution
|
|
229
|
+
check 'Notify me of other comments on this post'
|
|
230
|
+
end
|
|
231
|
+
|
|
232
|
+
assert_no_difference('Proclaim::Comment.count',
|
|
233
|
+
"A new comment should not have been added!") do
|
|
234
|
+
assert_no_difference('Proclaim::Subscription.count',
|
|
235
|
+
"A new subscription should not have been added!") do
|
|
236
|
+
@show_page.new_comment_submit_button.click
|
|
237
|
+
assert page.has_css?('div.error')
|
|
238
|
+
wait_for_ajax
|
|
239
|
+
end
|
|
240
|
+
end
|
|
241
|
+
|
|
242
|
+
# Make sure no email was sent
|
|
243
|
+
assert_empty ActionMailer::Base.deliveries
|
|
244
|
+
end
|
|
245
|
+
|
|
246
|
+
test "catch bad email address" do
|
|
247
|
+
post = FactoryGirl.create(:published_post)
|
|
248
|
+
|
|
249
|
+
visit proclaim.post_path(post)
|
|
250
|
+
|
|
251
|
+
# Create a new comment and say "notify me," but provide invalid email
|
|
252
|
+
within('#new_comment') do
|
|
253
|
+
fill_in 'Author', with: "Comment Author"
|
|
254
|
+
fill_in 'Body', with: "Comment Body"
|
|
255
|
+
fill_in 'What is', with: @show_page.antispam_solution
|
|
256
|
+
check 'Notify me of other comments on this post'
|
|
257
|
+
fill_in 'Email', with: "bad_email"
|
|
258
|
+
end
|
|
259
|
+
|
|
260
|
+
assert_no_difference('Proclaim::Comment.count',
|
|
261
|
+
"A new comment should not have been added!") do
|
|
262
|
+
assert_no_difference('Proclaim::Subscription.count',
|
|
263
|
+
"A new subscription should not have been added!") do
|
|
264
|
+
@show_page.new_comment_submit_button.click
|
|
265
|
+
assert page.has_css?('div.error')
|
|
266
|
+
wait_for_ajax
|
|
267
|
+
end
|
|
268
|
+
end
|
|
269
|
+
|
|
270
|
+
# Make sure no email was sent
|
|
271
|
+
assert_empty ActionMailer::Base.deliveries
|
|
272
|
+
end
|
|
273
|
+
end
|