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,41 @@
|
|
|
1
|
+
# == Schema Information
|
|
2
|
+
#
|
|
3
|
+
# Table name: proclaim_comments
|
|
4
|
+
#
|
|
5
|
+
# id :integer not null, primary key
|
|
6
|
+
# post_id :integer
|
|
7
|
+
# parent_id :integer
|
|
8
|
+
# author :string
|
|
9
|
+
# body :text
|
|
10
|
+
# created_at :datetime not null
|
|
11
|
+
# updated_at :datetime not null
|
|
12
|
+
#
|
|
13
|
+
|
|
14
|
+
require 'test_helper'
|
|
15
|
+
|
|
16
|
+
module Proclaim
|
|
17
|
+
class CommentTest < ActiveSupport::TestCase
|
|
18
|
+
test "ensure factory is good" do
|
|
19
|
+
comment = FactoryGirl.build(:comment)
|
|
20
|
+
|
|
21
|
+
assert comment.save, "Factory needs to be updated to save successfully"
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
test "ensure body is required" do
|
|
25
|
+
comment = FactoryGirl.build(:comment, body: "")
|
|
26
|
+
|
|
27
|
+
refute comment.save, "Comment should require a body!"
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
test "ensure post is required" do
|
|
31
|
+
comment = FactoryGirl.build(:comment, post_id: nil)
|
|
32
|
+
|
|
33
|
+
refute comment.save, "Comment should require a post_id!"
|
|
34
|
+
|
|
35
|
+
# Post with 12345 shouldn't exist
|
|
36
|
+
comment = FactoryGirl.build(:comment, post_id: 12345)
|
|
37
|
+
|
|
38
|
+
refute comment.save, "Comment should require a valid post!"
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# == Schema Information
|
|
2
|
+
#
|
|
3
|
+
# Table name: proclaim_images
|
|
4
|
+
#
|
|
5
|
+
# id :integer not null, primary key
|
|
6
|
+
# post_id :integer
|
|
7
|
+
# image :string
|
|
8
|
+
# created_at :datetime not null
|
|
9
|
+
# updated_at :datetime not null
|
|
10
|
+
#
|
|
11
|
+
|
|
12
|
+
require 'test_helper'
|
|
13
|
+
|
|
14
|
+
module Proclaim
|
|
15
|
+
class ImageTest < ActiveSupport::TestCase
|
|
16
|
+
teardown do
|
|
17
|
+
image = Image.new
|
|
18
|
+
FileUtils.rm_rf(File.join(Rails.public_path, image.image.cache_dir))
|
|
19
|
+
FileUtils.rm_rf(File.join(Rails.public_path, image.image.store_dir))
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
test "ensure factory is good" do
|
|
23
|
+
image = FactoryGirl.build(:image)
|
|
24
|
+
|
|
25
|
+
assert image.save, "Factory needs to be updated to save successfully"
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
test "ensure post is required" do
|
|
29
|
+
image = FactoryGirl.build(:image, post_id: nil)
|
|
30
|
+
|
|
31
|
+
refute image.save, "Image should require a post_id!"
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
test "ensure post validity is verified" do
|
|
35
|
+
# Post with 12345 shouldn't exist
|
|
36
|
+
image = FactoryGirl.build(:image, post_id: 12345)
|
|
37
|
+
|
|
38
|
+
refute image.save, "Image should require a valid post!"
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
test "ensure image is required" do
|
|
42
|
+
image = FactoryGirl.build(:image, image: nil)
|
|
43
|
+
|
|
44
|
+
refute image.save, "Image should require an image to be uploaded!"
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
test "ensure image is cached, saved, and removed correctly" do
|
|
48
|
+
image = FactoryGirl.build(:image)
|
|
49
|
+
|
|
50
|
+
cache_file_path = File.join(Rails.public_path, image.image.cache_dir, image.image.cache_name)
|
|
51
|
+
cache_path = File.dirname(cache_file_path)
|
|
52
|
+
|
|
53
|
+
assert File.exist?(cache_file_path), "File should have been cached: #{cache_file_path}"
|
|
54
|
+
|
|
55
|
+
assert image.save, "Image should have saved!"
|
|
56
|
+
|
|
57
|
+
save_path = File.join(Rails.public_path, image.image.store_dir)
|
|
58
|
+
saved_file_path = File.join(save_path, image.image_identifier)
|
|
59
|
+
|
|
60
|
+
assert File.exist?(saved_file_path), "File should be saved: #{saved_file_path}"
|
|
61
|
+
refute File.exist?(cache_file_path), "Should have removed cache file: #{cache_file_path}"
|
|
62
|
+
refute File.exist?(cache_path), "Should have removed cache path: #{cache_path}"
|
|
63
|
+
|
|
64
|
+
assert image.destroy
|
|
65
|
+
|
|
66
|
+
refute File.exist?(saved_file_path), "Should have removed file: #{saved_file_path}"
|
|
67
|
+
refute File.exist?(save_path), "Should have removed saved path: #{save_path}"
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
# == Schema Information
|
|
2
|
+
#
|
|
3
|
+
# Table name: proclaim_posts
|
|
4
|
+
#
|
|
5
|
+
# id :integer not null, primary key
|
|
6
|
+
# author_id :integer
|
|
7
|
+
# title :string default(""), not null
|
|
8
|
+
# body :text default(""), not null
|
|
9
|
+
# published :boolean default("f"), not null
|
|
10
|
+
# publication_date :datetime
|
|
11
|
+
# created_at :datetime not null
|
|
12
|
+
# updated_at :datetime not null
|
|
13
|
+
#
|
|
14
|
+
|
|
15
|
+
require 'test_helper'
|
|
16
|
+
|
|
17
|
+
module Proclaim
|
|
18
|
+
class PostTest < ActiveSupport::TestCase
|
|
19
|
+
test "ensure factory is good" do
|
|
20
|
+
post = FactoryGirl.build(:post)
|
|
21
|
+
|
|
22
|
+
assert post.save, "Factory needs to be updated to save successfully"
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
test "ensure title is required" do
|
|
26
|
+
post = FactoryGirl.build(:post, title: "")
|
|
27
|
+
|
|
28
|
+
refute post.save, "Post should require a title!"
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
test "ensure body is required" do
|
|
32
|
+
post = FactoryGirl.build(:post, body: nil)
|
|
33
|
+
refute post.save, "Post should require a body!"
|
|
34
|
+
|
|
35
|
+
post = FactoryGirl.build(:post, body: "")
|
|
36
|
+
refute post.save, "Post should require a body!"
|
|
37
|
+
|
|
38
|
+
post = FactoryGirl.build(:post, body: "<p></p>")
|
|
39
|
+
refute post.save, "Post should require a body to have text!"
|
|
40
|
+
|
|
41
|
+
post = FactoryGirl.build(:post, body: "\r\n \n \r")
|
|
42
|
+
refute post.save, "Post should require a body to have text!"
|
|
43
|
+
|
|
44
|
+
post = FactoryGirl.build(:post, body: "<p></p>\r\n<p></p>\n<p></p>\r")
|
|
45
|
+
refute post.save, "Post should require a body to have text!"
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
test "ensure author is required" do
|
|
49
|
+
post = FactoryGirl.build(:post, author_id: nil)
|
|
50
|
+
|
|
51
|
+
refute post.save, "Post should require an author_id!"
|
|
52
|
+
|
|
53
|
+
# Author with 12345 shouldn't exist
|
|
54
|
+
post = FactoryGirl.build(:post, author_id: 12345)
|
|
55
|
+
|
|
56
|
+
refute post.save, "Post should require a valid author!"
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
test "verify publication date requirement" do
|
|
60
|
+
post = FactoryGirl.build(:post, published_at: nil)
|
|
61
|
+
assert post.save, "Post should save without a publication date if not published!"
|
|
62
|
+
|
|
63
|
+
post = FactoryGirl.build(:post, published_at: DateTime.now)
|
|
64
|
+
refute post.save, "Post should not save with a publication date if not published!"
|
|
65
|
+
|
|
66
|
+
post = FactoryGirl.build(:published_post)
|
|
67
|
+
post.published_at = nil
|
|
68
|
+
refute post.save, "Post should not save if published without a publication date!"
|
|
69
|
+
|
|
70
|
+
post = FactoryGirl.build(:published_post)
|
|
71
|
+
assert post.save, "Post should save successfully if published with a publication date!"
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
test "ensure publication date when published" do
|
|
75
|
+
post = FactoryGirl.build(:post)
|
|
76
|
+
assert_nil post.published_at
|
|
77
|
+
|
|
78
|
+
post.publish
|
|
79
|
+
assert_not_nil post.published_at
|
|
80
|
+
|
|
81
|
+
assert post.save
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
test "verify publication can't be taken back" do
|
|
85
|
+
post = FactoryGirl.build(:published_post)
|
|
86
|
+
assert post.save
|
|
87
|
+
|
|
88
|
+
assert_raises AASM::NoDirectAssignmentError do
|
|
89
|
+
post.state = "draft"
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
test "verify excerpt" do
|
|
94
|
+
post = FactoryGirl.build(:post, body: "<div><p></p><p></p></div>")
|
|
95
|
+
|
|
96
|
+
assert_equal "", post.excerpt
|
|
97
|
+
|
|
98
|
+
post = FactoryGirl.build(:post, body: "<p>foo bar baz qux</p><p>y</p>")
|
|
99
|
+
|
|
100
|
+
assert_equal "foo bar baz qux", post.excerpt
|
|
101
|
+
|
|
102
|
+
post.excerpt_length = 10
|
|
103
|
+
assert_equal "foo bar", post.excerpt
|
|
104
|
+
|
|
105
|
+
post.excerpt_length = 11
|
|
106
|
+
assert_equal "foo bar baz", post.excerpt
|
|
107
|
+
|
|
108
|
+
post.excerpt_length = 12
|
|
109
|
+
assert_equal "foo bar baz", post.excerpt
|
|
110
|
+
|
|
111
|
+
post.excerpt_length = 15
|
|
112
|
+
assert_equal "foo bar baz qux", post.excerpt
|
|
113
|
+
|
|
114
|
+
post = FactoryGirl.build(:post,
|
|
115
|
+
body: "<p>This is <strong>emphasized</strong>. This is a <a href=\"http://example.com\">link</a>.</p><p>foo</p>")
|
|
116
|
+
assert_equal "This is emphasized. This is a link.", post.excerpt
|
|
117
|
+
|
|
118
|
+
post = FactoryGirl.build(:post,
|
|
119
|
+
body: "<p></p><div></div><p>foo</p>")
|
|
120
|
+
assert_equal "foo", post.excerpt
|
|
121
|
+
|
|
122
|
+
post = FactoryGirl.build(:post,
|
|
123
|
+
body: "This is outside.<p>This is inside.</p>")
|
|
124
|
+
assert_equal "This is outside.", post.excerpt
|
|
125
|
+
end
|
|
126
|
+
end
|
|
127
|
+
end
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# == Schema Information
|
|
2
|
+
#
|
|
3
|
+
# Table name: proclaim_subscriptions
|
|
4
|
+
#
|
|
5
|
+
# id :integer not null, primary key
|
|
6
|
+
# post_id :integer
|
|
7
|
+
# email :string
|
|
8
|
+
# created_at :datetime not null
|
|
9
|
+
# updated_at :datetime not null
|
|
10
|
+
#
|
|
11
|
+
|
|
12
|
+
require 'test_helper'
|
|
13
|
+
|
|
14
|
+
module Proclaim
|
|
15
|
+
class SubscriptionTest < ActiveSupport::TestCase
|
|
16
|
+
test "subscriptions should be unique" do
|
|
17
|
+
FactoryGirl.create(:subscription, email: "foo@bar.com")
|
|
18
|
+
subscription = FactoryGirl.build(:subscription, email: "foo@bar.com")
|
|
19
|
+
refute subscription.save,
|
|
20
|
+
"Blog subscriptions should have unique emails!"
|
|
21
|
+
|
|
22
|
+
subscription = FactoryGirl.create(:post_subscription, email: "foo@bar.com")
|
|
23
|
+
subscription = FactoryGirl.build(:post_subscription,
|
|
24
|
+
post: subscription.post,
|
|
25
|
+
email: subscription.email)
|
|
26
|
+
refute subscription.save,
|
|
27
|
+
"Post subscriptions should have unique emails!"
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
test "should not save without valid email address" do
|
|
31
|
+
subscription = FactoryGirl.build(:subscription, email: nil)
|
|
32
|
+
refute subscription.save,
|
|
33
|
+
"Subscription should require an email address!"
|
|
34
|
+
|
|
35
|
+
subscription = FactoryGirl.build(:subscription, email: "blah")
|
|
36
|
+
refute subscription.save,
|
|
37
|
+
"Subscription should require a valid email address!"
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
test "token should be able to identify subscriptions" do
|
|
41
|
+
subscription1 = FactoryGirl.create(:subscription)
|
|
42
|
+
subscription2 = FactoryGirl.create(:subscription)
|
|
43
|
+
|
|
44
|
+
token1 = subscription1.token
|
|
45
|
+
token2 = subscription2.token
|
|
46
|
+
|
|
47
|
+
assert_equal subscription1, Subscription.from_token(token1)
|
|
48
|
+
assert_equal subscription2, Subscription.from_token(token2)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
test "should require valid post or none at all" do
|
|
52
|
+
# Post 12345 doesn't exist
|
|
53
|
+
subscription = FactoryGirl.build(:subscription, post_id: 12345)
|
|
54
|
+
refute subscription.save,
|
|
55
|
+
"Subscription should require a valid post!"
|
|
56
|
+
|
|
57
|
+
subscription = FactoryGirl.build(:subscription,
|
|
58
|
+
post: FactoryGirl.create(:published_post))
|
|
59
|
+
assert subscription.save
|
|
60
|
+
|
|
61
|
+
subscription = FactoryGirl.build(:subscription, post: nil)
|
|
62
|
+
assert subscription.save,
|
|
63
|
+
"Subscription shouldn't require a post!"
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class CommentPolicyTest < ActiveSupport::TestCase
|
|
4
|
+
test "comment scope" do
|
|
5
|
+
user = FactoryGirl.create(:user)
|
|
6
|
+
comment1 = FactoryGirl.create(:comment)
|
|
7
|
+
comment2 = FactoryGirl.create(:comment)
|
|
8
|
+
|
|
9
|
+
# Verify that a user can view both comments
|
|
10
|
+
comments = Pundit.policy_scope(user, Proclaim::Comment)
|
|
11
|
+
assert_includes comments, comment1
|
|
12
|
+
assert_includes comments, comment2
|
|
13
|
+
|
|
14
|
+
# Verify that even without a user, both comments can still be viewed
|
|
15
|
+
comments = Pundit.policy_scope(nil, Proclaim::Comment)
|
|
16
|
+
assert_includes comments, comment1
|
|
17
|
+
assert_includes comments, comment2
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
test "comment creation" do
|
|
21
|
+
user = FactoryGirl.create(:user)
|
|
22
|
+
publishedComment = FactoryGirl.build(:published_comment)
|
|
23
|
+
unpublishedComment = FactoryGirl.build(:comment)
|
|
24
|
+
|
|
25
|
+
# Verify that a user can create a comment on a published post
|
|
26
|
+
policy = Proclaim::CommentPolicy.new(user, publishedComment)
|
|
27
|
+
assert policy.create?,
|
|
28
|
+
"A user should be able to create comments on published posts!"
|
|
29
|
+
|
|
30
|
+
# Verify that a user can create a comment on an unpublished post
|
|
31
|
+
policy = Proclaim::CommentPolicy.new(user, unpublishedComment)
|
|
32
|
+
assert policy.create?,
|
|
33
|
+
"A user should be able to create comments on unpublished posts!"
|
|
34
|
+
|
|
35
|
+
# Verify that a guest can create a comment on a published post
|
|
36
|
+
policy = Proclaim::CommentPolicy.new(nil, publishedComment)
|
|
37
|
+
assert policy.create?,
|
|
38
|
+
"A guest should be able to create comments on published posts!"
|
|
39
|
+
|
|
40
|
+
# Verify that a guest cannot create a comment on an unpublished post
|
|
41
|
+
policy = Proclaim::CommentPolicy.new(nil, unpublishedComment)
|
|
42
|
+
refute policy.create?,
|
|
43
|
+
"A guest should not be able to create comments on unpublished posts!"
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
test "comment update" do
|
|
47
|
+
user = FactoryGirl.create(:user)
|
|
48
|
+
comment = FactoryGirl.create(:comment)
|
|
49
|
+
|
|
50
|
+
# Verify that a user can update a comment
|
|
51
|
+
policy = Proclaim::CommentPolicy.new(user, comment)
|
|
52
|
+
assert policy.update?, "A user should be able to update comments!"
|
|
53
|
+
|
|
54
|
+
# Verify that a guest cannot update a comment
|
|
55
|
+
policy = Proclaim::CommentPolicy.new(nil, comment)
|
|
56
|
+
refute policy.update?, "A guest should not be able to update comments!"
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
test "comment destroy" do
|
|
60
|
+
user = FactoryGirl.create(:user)
|
|
61
|
+
comment = FactoryGirl.create(:comment)
|
|
62
|
+
|
|
63
|
+
# Verify that a user can destroy a comment
|
|
64
|
+
policy = Proclaim::CommentPolicy.new(user, comment)
|
|
65
|
+
assert policy.destroy?, "A user should be able to destroy comments!"
|
|
66
|
+
|
|
67
|
+
# Verify that a guest cannot destroy a comment
|
|
68
|
+
policy = Proclaim::CommentPolicy.new(nil, comment)
|
|
69
|
+
refute policy.destroy?, "A guest should not be able to destroy comments!"
|
|
70
|
+
end
|
|
71
|
+
end
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class PostPolicyTest < ActiveSupport::TestCase
|
|
4
|
+
test "post scope" do
|
|
5
|
+
user = FactoryGirl.create(:user)
|
|
6
|
+
post1 = FactoryGirl.create(:post)
|
|
7
|
+
post2 = FactoryGirl.create(:published_post)
|
|
8
|
+
|
|
9
|
+
# Verify that a user can see all posts
|
|
10
|
+
posts = Pundit.policy_scope(user, Proclaim::Post)
|
|
11
|
+
assert_includes posts, post1
|
|
12
|
+
assert_includes posts, post2
|
|
13
|
+
|
|
14
|
+
# Verify that guests can only see published posts
|
|
15
|
+
posts = Pundit.policy_scope(nil, Proclaim::Post)
|
|
16
|
+
assert_not_includes posts, post1
|
|
17
|
+
assert_includes posts, post2
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
test "post create" do
|
|
22
|
+
user = FactoryGirl.create(:user)
|
|
23
|
+
post = FactoryGirl.create(:post)
|
|
24
|
+
|
|
25
|
+
# Verify that a user can create posts
|
|
26
|
+
policy = Proclaim::PostPolicy.new(user, post)
|
|
27
|
+
assert policy.create?
|
|
28
|
+
|
|
29
|
+
# Verify that guests can't create posts
|
|
30
|
+
policy = Proclaim::PostPolicy.new(nil, post)
|
|
31
|
+
refute policy.create?
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
test "post show" do
|
|
35
|
+
user = FactoryGirl.create(:user)
|
|
36
|
+
post1 = FactoryGirl.create(:post)
|
|
37
|
+
post2 = FactoryGirl.create(:published_post)
|
|
38
|
+
|
|
39
|
+
# Verify that a user can see both posts
|
|
40
|
+
policy = Proclaim::PostPolicy.new(user, post1)
|
|
41
|
+
assert policy.show?
|
|
42
|
+
policy = Proclaim::PostPolicy.new(user, post2)
|
|
43
|
+
assert policy.show?
|
|
44
|
+
|
|
45
|
+
# Verify that a guest can only see published post
|
|
46
|
+
policy = Proclaim::PostPolicy.new(nil, post1)
|
|
47
|
+
refute policy.show?
|
|
48
|
+
policy = Proclaim::PostPolicy.new(nil, post2)
|
|
49
|
+
assert policy.show?
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
test "post update" do
|
|
53
|
+
user = FactoryGirl.create(:user)
|
|
54
|
+
post1 = FactoryGirl.create(:post)
|
|
55
|
+
post2 = FactoryGirl.create(:published_post)
|
|
56
|
+
|
|
57
|
+
# Verify that a user can update any post
|
|
58
|
+
policy = Proclaim::PostPolicy.new(user, post1)
|
|
59
|
+
assert policy.update?
|
|
60
|
+
policy = Proclaim::PostPolicy.new(user, post2)
|
|
61
|
+
assert policy.update?
|
|
62
|
+
|
|
63
|
+
# Verify that guests can't update post
|
|
64
|
+
policy = Proclaim::PostPolicy.new(nil, post1)
|
|
65
|
+
refute policy.update?
|
|
66
|
+
policy = Proclaim::PostPolicy.new(nil, post2)
|
|
67
|
+
refute policy.update?
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
test "post destroy" do
|
|
71
|
+
user = FactoryGirl.create(:user)
|
|
72
|
+
post1 = FactoryGirl.create(:post)
|
|
73
|
+
post2 = FactoryGirl.create(:published_post)
|
|
74
|
+
|
|
75
|
+
# Verify that a user can destroy any post
|
|
76
|
+
policy = Proclaim::PostPolicy.new(user, post1)
|
|
77
|
+
assert policy.destroy?
|
|
78
|
+
policy = Proclaim::PostPolicy.new(user, post2)
|
|
79
|
+
assert policy.destroy?
|
|
80
|
+
|
|
81
|
+
# Verify that guests can't destroy post
|
|
82
|
+
policy = Proclaim::PostPolicy.new(nil, post1)
|
|
83
|
+
refute policy.destroy?
|
|
84
|
+
policy = Proclaim::PostPolicy.new(nil, post2)
|
|
85
|
+
refute policy.destroy?
|
|
86
|
+
end
|
|
87
|
+
end
|