activity_notification 1.4.4 → 2.2.4

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 (271) hide show
  1. checksums.yaml +5 -5
  2. data/.github/ISSUE_TEMPLATE/bug_report.md +22 -0
  3. data/.github/ISSUE_TEMPLATE/feature_request.md +17 -0
  4. data/.github/pull_request_template.md +13 -0
  5. data/.github/workflows/build.yml +116 -0
  6. data/.gitignore +15 -3
  7. data/CHANGELOG.md +200 -1
  8. data/Gemfile +17 -2
  9. data/Procfile +2 -0
  10. data/README.md +168 -1033
  11. data/Rakefile +19 -10
  12. data/activity_notification.gemspec +14 -9
  13. data/app/channels/activity_notification/notification_api_channel.rb +12 -0
  14. data/app/channels/activity_notification/notification_api_with_devise_channel.rb +46 -0
  15. data/app/channels/activity_notification/notification_channel.rb +37 -0
  16. data/app/channels/activity_notification/notification_with_devise_channel.rb +51 -0
  17. data/app/controllers/activity_notification/apidocs_controller.rb +75 -0
  18. data/app/controllers/activity_notification/notifications_api_controller.rb +143 -0
  19. data/app/controllers/activity_notification/notifications_api_with_devise_controller.rb +7 -0
  20. data/app/controllers/activity_notification/notifications_controller.rb +60 -54
  21. data/app/controllers/activity_notification/subscriptions_api_controller.rb +197 -0
  22. data/app/controllers/activity_notification/subscriptions_api_with_devise_controller.rb +7 -0
  23. data/app/controllers/activity_notification/subscriptions_controller.rb +83 -73
  24. data/app/jobs/activity_notification/notify_all_job.rb +25 -0
  25. data/app/jobs/activity_notification/notify_job.rb +26 -0
  26. data/app/jobs/activity_notification/notify_to_job.rb +25 -0
  27. data/app/views/activity_notification/notifications/default/_default.html.erb +23 -23
  28. data/app/views/activity_notification/notifications/default/_default_without_grouping.html.erb +19 -19
  29. data/app/views/activity_notification/notifications/default/_index.html.erb +3 -3
  30. data/app/views/activity_notification/notifications/default/index.html.erb +60 -7
  31. data/app/views/activity_notification/notifications/default/open.js.erb +2 -2
  32. data/app/views/activity_notification/notifications/default/open_all.js.erb +2 -2
  33. data/app/views/activity_notification/notifications/default/show.html.erb +2 -2
  34. data/app/views/activity_notification/optional_targets/default/action_cable_channel/_default.html.erb +176 -0
  35. data/app/views/activity_notification/optional_targets/default/base/_default.text.erb +1 -1
  36. data/app/views/activity_notification/optional_targets/default/slack/_default.text.erb +1 -1
  37. data/app/views/activity_notification/subscriptions/default/_form.html.erb +2 -2
  38. data/app/views/activity_notification/subscriptions/default/_notification_keys.html.erb +5 -33
  39. data/app/views/activity_notification/subscriptions/default/_subscription.html.erb +8 -8
  40. data/app/views/activity_notification/subscriptions/default/index.html.erb +13 -9
  41. data/app/views/activity_notification/subscriptions/default/show.html.erb +3 -3
  42. data/app/views/activity_notification/subscriptions/default/subscribe.js.erb +1 -1
  43. data/app/views/activity_notification/subscriptions/default/subscribe_to_email.js.erb +1 -1
  44. data/app/views/activity_notification/subscriptions/default/subscribe_to_optional_target.js.erb +1 -1
  45. data/app/views/activity_notification/subscriptions/default/unsubscribe.js.erb +1 -1
  46. data/app/views/activity_notification/subscriptions/default/unsubscribe_to_email.js.erb +1 -1
  47. data/app/views/activity_notification/subscriptions/default/unsubscribe_to_optional_target.js.erb +1 -1
  48. data/bin/_dynamodblocal +4 -0
  49. data/bin/bundle_update.sh +7 -0
  50. data/bin/deploy_on_heroku.sh +16 -0
  51. data/bin/install_dynamodblocal.sh +5 -0
  52. data/bin/start_dynamodblocal.sh +47 -0
  53. data/bin/stop_dynamodblocal.sh +34 -0
  54. data/docs/CODE_OF_CONDUCT.md +76 -0
  55. data/docs/CONTRIBUTING.md +36 -0
  56. data/docs/Functions.md +1146 -0
  57. data/docs/Setup.md +817 -0
  58. data/docs/Testing.md +148 -0
  59. data/gemfiles/Gemfile.rails-5.0 +8 -1
  60. data/gemfiles/Gemfile.rails-5.1 +7 -1
  61. data/gemfiles/Gemfile.rails-5.2 +24 -0
  62. data/gemfiles/Gemfile.rails-6.0 +23 -0
  63. data/gemfiles/Gemfile.rails-6.1 +22 -0
  64. data/gemfiles/Gemfile.rails-7.0 +25 -0
  65. data/lib/activity_notification/apis/notification_api.rb +356 -159
  66. data/lib/activity_notification/apis/subscription_api.rb +98 -59
  67. data/lib/activity_notification/apis/swagger.rb +6 -0
  68. data/lib/activity_notification/common.rb +18 -7
  69. data/lib/activity_notification/config.rb +176 -30
  70. data/lib/activity_notification/controllers/common_api_controller.rb +30 -0
  71. data/lib/activity_notification/controllers/common_controller.rb +47 -27
  72. data/lib/activity_notification/controllers/concerns/swagger/error_responses.rb +55 -0
  73. data/lib/activity_notification/controllers/concerns/swagger/notifications_api.rb +273 -0
  74. data/lib/activity_notification/controllers/concerns/swagger/notifications_parameters.rb +92 -0
  75. data/lib/activity_notification/controllers/concerns/swagger/subscriptions_api.rb +405 -0
  76. data/lib/activity_notification/controllers/concerns/swagger/subscriptions_parameters.rb +50 -0
  77. data/lib/activity_notification/controllers/devise_authentication_controller.rb +22 -5
  78. data/lib/activity_notification/gem_version.rb +14 -0
  79. data/lib/activity_notification/helpers/errors.rb +6 -0
  80. data/lib/activity_notification/helpers/view_helpers.rb +118 -28
  81. data/lib/activity_notification/mailers/helpers.rb +19 -12
  82. data/lib/activity_notification/models/concerns/notifiable.rb +142 -55
  83. data/lib/activity_notification/models/concerns/subscriber.rb +28 -13
  84. data/lib/activity_notification/models/concerns/swagger/error_schema.rb +36 -0
  85. data/lib/activity_notification/models/concerns/swagger/notification_schema.rb +209 -0
  86. data/lib/activity_notification/models/concerns/swagger/subscription_schema.rb +162 -0
  87. data/lib/activity_notification/models/concerns/target.rb +131 -32
  88. data/lib/activity_notification/models/notification.rb +1 -0
  89. data/lib/activity_notification/models/subscription.rb +1 -0
  90. data/lib/activity_notification/models.rb +23 -1
  91. data/lib/activity_notification/optional_targets/action_cable_api_channel.rb +69 -0
  92. data/lib/activity_notification/optional_targets/action_cable_channel.rb +68 -0
  93. data/lib/activity_notification/optional_targets/base.rb +9 -15
  94. data/lib/activity_notification/orm/active_record/notification.rb +23 -34
  95. data/lib/activity_notification/orm/active_record/subscription.rb +1 -1
  96. data/lib/activity_notification/orm/active_record.rb +1 -1
  97. data/lib/activity_notification/orm/dynamoid/extension.rb +262 -0
  98. data/lib/activity_notification/orm/dynamoid/notification.rb +224 -0
  99. data/lib/activity_notification/orm/dynamoid/subscription.rb +82 -0
  100. data/lib/activity_notification/orm/dynamoid.rb +530 -0
  101. data/lib/activity_notification/orm/mongoid/notification.rb +29 -28
  102. data/lib/activity_notification/orm/mongoid/subscription.rb +3 -3
  103. data/lib/activity_notification/orm/mongoid.rb +33 -1
  104. data/lib/activity_notification/rails/routes.rb +273 -60
  105. data/lib/activity_notification/renderable.rb +22 -7
  106. data/lib/activity_notification/roles/acts_as_notifiable.rb +64 -1
  107. data/lib/activity_notification/roles/acts_as_target.rb +99 -9
  108. data/lib/activity_notification/version.rb +1 -1
  109. data/lib/activity_notification.rb +14 -0
  110. data/lib/generators/activity_notification/controllers_generator.rb +2 -1
  111. data/lib/generators/templates/activity_notification.rb +61 -7
  112. data/lib/generators/templates/controllers/README +2 -2
  113. data/lib/generators/templates/controllers/notifications_api_controller.rb +31 -0
  114. data/lib/generators/templates/controllers/notifications_api_with_devise_controller.rb +31 -0
  115. data/lib/generators/templates/controllers/notifications_controller.rb +1 -37
  116. data/lib/generators/templates/controllers/notifications_with_devise_controller.rb +1 -45
  117. data/lib/generators/templates/controllers/subscriptions_api_controller.rb +61 -0
  118. data/lib/generators/templates/controllers/subscriptions_api_with_devise_controller.rb +61 -0
  119. data/lib/generators/templates/controllers/subscriptions_controller.rb +14 -37
  120. data/lib/generators/templates/controllers/subscriptions_with_devise_controller.rb +14 -45
  121. data/lib/generators/templates/migrations/migration.rb +5 -5
  122. data/lib/generators/templates/models/README +8 -4
  123. data/lib/generators/templates/models/notification.rb +1 -1
  124. data/lib/generators/templates/models/subscription.rb +1 -1
  125. data/lib/tasks/activity_notification_tasks.rake +14 -4
  126. data/package.json +8 -0
  127. data/spec/channels/notification_api_channel_shared_examples.rb +59 -0
  128. data/spec/channels/notification_api_channel_spec.rb +49 -0
  129. data/spec/channels/notification_api_with_devise_channel_spec.rb +76 -0
  130. data/spec/channels/notification_channel_shared_examples.rb +59 -0
  131. data/spec/channels/notification_channel_spec.rb +48 -0
  132. data/spec/channels/notification_with_devise_channel_spec.rb +97 -0
  133. data/spec/concerns/apis/notification_api_spec.rb +177 -12
  134. data/spec/concerns/apis/subscription_api_spec.rb +146 -4
  135. data/spec/concerns/common_spec.rb +25 -3
  136. data/spec/concerns/models/notifiable_spec.rb +161 -11
  137. data/spec/concerns/models/subscriber_spec.rb +253 -79
  138. data/spec/concerns/models/target_spec.rb +180 -47
  139. data/spec/concerns/renderable_spec.rb +35 -16
  140. data/spec/config_spec.rb +52 -1
  141. data/spec/controllers/controller_spec_utility.rb +100 -0
  142. data/spec/controllers/notifications_api_controller_shared_examples.rb +506 -0
  143. data/spec/controllers/notifications_api_controller_spec.rb +19 -0
  144. data/spec/controllers/notifications_api_with_devise_controller_spec.rb +60 -0
  145. data/spec/controllers/notifications_controller_shared_examples.rb +55 -76
  146. data/spec/controllers/notifications_controller_spec.rb +1 -2
  147. data/spec/controllers/notifications_with_devise_controller_spec.rb +14 -8
  148. data/spec/controllers/subscriptions_api_controller_shared_examples.rb +750 -0
  149. data/spec/controllers/subscriptions_api_controller_spec.rb +19 -0
  150. data/spec/controllers/subscriptions_api_with_devise_controller_spec.rb +60 -0
  151. data/spec/controllers/subscriptions_controller_shared_examples.rb +99 -121
  152. data/spec/controllers/subscriptions_controller_spec.rb +1 -2
  153. data/spec/controllers/subscriptions_with_devise_controller_spec.rb +14 -8
  154. data/spec/factories/notifications.rb +1 -1
  155. data/spec/factories/subscriptions.rb +3 -3
  156. data/spec/factories/users.rb +3 -3
  157. data/spec/generators/migration/migration_generator_spec.rb +29 -4
  158. data/spec/helpers/view_helpers_spec.rb +31 -21
  159. data/spec/jobs/notify_all_job_spec.rb +23 -0
  160. data/spec/jobs/notify_job_spec.rb +23 -0
  161. data/spec/jobs/notify_to_job_spec.rb +23 -0
  162. data/spec/mailers/mailer_spec.rb +42 -1
  163. data/spec/models/dummy/dummy_group_spec.rb +4 -0
  164. data/spec/models/dummy/dummy_notifiable_spec.rb +4 -0
  165. data/spec/models/dummy/dummy_notifier_spec.rb +4 -0
  166. data/spec/models/dummy/dummy_subscriber_spec.rb +3 -0
  167. data/spec/models/dummy/dummy_target_spec.rb +4 -0
  168. data/spec/models/notification_spec.rb +181 -45
  169. data/spec/models/subscription_spec.rb +77 -27
  170. data/spec/optional_targets/action_cable_api_channel_spec.rb +34 -0
  171. data/spec/optional_targets/action_cable_channel_spec.rb +41 -0
  172. data/spec/optional_targets/amazon_sns_spec.rb +0 -2
  173. data/spec/optional_targets/slack_spec.rb +0 -2
  174. data/spec/orm/dynamoid_spec.rb +115 -0
  175. data/spec/rails_app/Rakefile +9 -0
  176. data/spec/rails_app/app/assets/config/manifest.js +3 -0
  177. data/spec/rails_app/app/assets/javascripts/application.js +2 -1
  178. data/spec/rails_app/app/assets/javascripts/cable.js +12 -0
  179. data/spec/rails_app/app/controllers/admins_controller.rb +21 -0
  180. data/spec/rails_app/app/controllers/application_controller.rb +1 -1
  181. data/spec/rails_app/app/controllers/articles_controller.rb +6 -1
  182. data/spec/rails_app/app/controllers/comments_controller.rb +3 -1
  183. data/spec/rails_app/app/controllers/spa_controller.rb +7 -0
  184. data/spec/rails_app/app/controllers/users/notifications_controller.rb +0 -65
  185. data/spec/rails_app/app/controllers/users/notifications_with_devise_controller.rb +0 -73
  186. data/spec/rails_app/app/controllers/users/subscriptions_controller.rb +0 -77
  187. data/spec/rails_app/app/controllers/users/subscriptions_with_devise_controller.rb +0 -85
  188. data/spec/rails_app/app/controllers/users_controller.rb +26 -0
  189. data/spec/rails_app/app/javascript/App.vue +40 -0
  190. data/spec/rails_app/app/javascript/components/DeviseTokenAuth.vue +82 -0
  191. data/spec/rails_app/app/javascript/components/Top.vue +98 -0
  192. data/spec/rails_app/app/javascript/components/notifications/Index.vue +200 -0
  193. data/spec/rails_app/app/javascript/components/notifications/Notification.vue +133 -0
  194. data/spec/rails_app/app/javascript/components/notifications/NotificationContent.vue +122 -0
  195. data/spec/rails_app/app/javascript/components/subscriptions/Index.vue +279 -0
  196. data/spec/rails_app/app/javascript/components/subscriptions/NewSubscription.vue +112 -0
  197. data/spec/rails_app/app/javascript/components/subscriptions/NotificationKey.vue +141 -0
  198. data/spec/rails_app/app/javascript/components/subscriptions/Subscription.vue +226 -0
  199. data/spec/rails_app/app/javascript/config/development.js +5 -0
  200. data/spec/rails_app/app/javascript/config/environment.js +7 -0
  201. data/spec/rails_app/app/javascript/config/production.js +5 -0
  202. data/spec/rails_app/app/javascript/config/test.js +5 -0
  203. data/spec/rails_app/app/javascript/packs/application.js +18 -0
  204. data/spec/rails_app/app/javascript/packs/spa.js +14 -0
  205. data/spec/rails_app/app/javascript/router/index.js +73 -0
  206. data/spec/rails_app/app/javascript/store/index.js +37 -0
  207. data/spec/rails_app/app/models/admin.rb +15 -10
  208. data/spec/rails_app/app/models/article.rb +25 -20
  209. data/spec/rails_app/app/models/comment.rb +27 -62
  210. data/spec/rails_app/app/models/dummy/dummy_base.rb +1 -0
  211. data/spec/rails_app/app/models/dummy/dummy_group.rb +9 -0
  212. data/spec/rails_app/app/models/dummy/dummy_notifiable.rb +1 -0
  213. data/spec/rails_app/app/models/dummy/dummy_notifiable_target.rb +27 -0
  214. data/spec/rails_app/app/models/dummy/dummy_notifier.rb +1 -0
  215. data/spec/rails_app/app/models/dummy/dummy_subscriber.rb +1 -0
  216. data/spec/rails_app/app/models/dummy/dummy_target.rb +1 -0
  217. data/spec/rails_app/app/models/user.rb +44 -18
  218. data/spec/rails_app/app/views/activity_notification/notifications/default/article/_update.html.erb +146 -0
  219. data/spec/rails_app/app/views/activity_notification/notifications/users/overridden/custom/_test.html.erb +1 -0
  220. data/spec/rails_app/app/views/activity_notification/optional_targets/admins/amazon_sns/comment/_default.text.erb +1 -1
  221. data/spec/rails_app/app/views/articles/index.html.erb +68 -20
  222. data/spec/rails_app/app/views/articles/show.html.erb +1 -1
  223. data/spec/rails_app/app/views/layouts/_header.html.erb +9 -3
  224. data/spec/rails_app/app/views/spa/index.html.erb +2 -0
  225. data/spec/rails_app/babel.config.js +72 -0
  226. data/spec/rails_app/bin/webpack +18 -0
  227. data/spec/rails_app/bin/webpack-dev-server +18 -0
  228. data/spec/rails_app/config/application.rb +26 -6
  229. data/spec/rails_app/config/cable.yml +8 -0
  230. data/spec/rails_app/config/database.yml +1 -1
  231. data/spec/rails_app/config/dynamoid.rb +13 -0
  232. data/spec/rails_app/config/environment.rb +5 -1
  233. data/spec/rails_app/config/environments/development.rb +5 -0
  234. data/spec/rails_app/config/environments/production.rb +7 -1
  235. data/spec/rails_app/config/environments/test.rb +7 -11
  236. data/spec/rails_app/config/initializers/activity_notification.rb +63 -9
  237. data/spec/rails_app/config/initializers/copy_it.aws.rb.template +6 -0
  238. data/spec/rails_app/config/initializers/devise_token_auth.rb +55 -0
  239. data/spec/rails_app/config/initializers/mysql.rb +9 -0
  240. data/spec/rails_app/config/locales/activity_notification.en.yml +10 -4
  241. data/spec/rails_app/config/routes.rb +42 -1
  242. data/spec/rails_app/config/webpack/development.js +5 -0
  243. data/spec/rails_app/config/webpack/environment.js +7 -0
  244. data/spec/rails_app/config/webpack/loaders/vue.js +6 -0
  245. data/spec/rails_app/config/webpack/production.js +5 -0
  246. data/spec/rails_app/config/webpack/test.js +5 -0
  247. data/spec/rails_app/config/webpacker.yml +97 -0
  248. data/spec/rails_app/db/migrate/{20160715050433_create_test_tables.rb → 20160716000000_create_test_tables.rb} +1 -1
  249. data/spec/rails_app/db/migrate/{20160715050420_create_activity_notification_tables.rb → 20181209000000_create_activity_notification_tables.rb} +3 -3
  250. data/spec/rails_app/db/migrate/20191201000000_add_tokens_to_users.rb +10 -0
  251. data/spec/rails_app/db/schema.rb +46 -43
  252. data/spec/rails_app/db/seeds.rb +28 -4
  253. data/spec/rails_app/lib/custom_optional_targets/raise_error.rb +14 -0
  254. data/spec/rails_app/lib/mailer_previews/mailer_preview.rb +14 -4
  255. data/spec/rails_app/package.json +23 -0
  256. data/spec/rails_app/postcss.config.js +12 -0
  257. data/spec/roles/acts_as_group_spec.rb +0 -2
  258. data/spec/roles/acts_as_notifiable_spec.rb +80 -20
  259. data/spec/roles/acts_as_notifier_spec.rb +0 -2
  260. data/spec/roles/acts_as_target_spec.rb +1 -5
  261. data/spec/spec_helper.rb +13 -11
  262. data/spec/version_spec.rb +31 -0
  263. metadata +306 -53
  264. data/.travis.yml +0 -85
  265. data/Gemfile.lock +0 -234
  266. data/gemfiles/Gemfile.rails-4.2 +0 -17
  267. data/gemfiles/Gemfile.rails-4.2.lock +0 -225
  268. data/gemfiles/Gemfile.rails-5.0.lock +0 -234
  269. data/gemfiles/Gemfile.rails-5.1.lock +0 -234
  270. data/spec/rails_app/app/views/activity_notification/notifications/users/overriden/custom/_test.html.erb +0 -1
  271. /data/spec/rails_app/app/{models → assets/images}/.keep +0 -0
data/docs/Testing.md ADDED
@@ -0,0 +1,148 @@
1
+ ## Testing
2
+
3
+ ### Testing your application
4
+
5
+ First, you need to configure ActivityNotification as described above.
6
+
7
+ #### Testing notifications with RSpec
8
+ Prepare target and notifiable model instances to test generating notifications (e.g. `@user` and `@comment`).
9
+ Then, you can call notify API and test if notifications of the target are generated.
10
+ ```ruby
11
+ # Prepare
12
+ @article_author = create(:user)
13
+ @comment = @article_author.articles.create.comments.create
14
+ expect(@article_author.notifications.unopened_only.count).to eq(0)
15
+
16
+ # Call notify API
17
+ @comment.notify :users
18
+
19
+ # Test generated notifications
20
+ expect(@article_author_user.notifications.unopened_only.count).to eq(1)
21
+ expect(@article_author_user.notifications.unopened_only.latest.notifiable).to eq(@comment)
22
+ ```
23
+
24
+ #### Testing email notifications with RSpec
25
+ Prepare target and notifiable model instances to test sending notification email.
26
+ Then, you can call notify API and test if notification email is sent.
27
+ ```ruby
28
+ # Prepare
29
+ @article_author = create(:user)
30
+ @comment = @article_author.articles.create.comments.create
31
+ expect(ActivityNotification::Mailer.deliveries.size).to eq(0)
32
+
33
+ # Call notify API and send email now
34
+ @comment.notify :users, send_later: false
35
+
36
+ # Test sent notification email
37
+ expect(ActivityNotification::Mailer.deliveries.size).to eq(1)
38
+ expect(ActivityNotification::Mailer.deliveries.first.to[0]).to eq(@article_author.email)
39
+ ```
40
+ Note that notification email will be sent asynchronously without false as *:send_later* option.
41
+ ```ruby
42
+ # Prepare
43
+ include ActiveJob::TestHelper
44
+ @article_author = create(:user)
45
+ @comment = @article_author.articles.create.comments.create
46
+ expect(ActivityNotification::Mailer.deliveries.size).to eq(0)
47
+
48
+ # Call notify API and send email asynchronously as default
49
+ # Test sent notification email with ActiveJob queue
50
+ expect {
51
+ perform_enqueued_jobs do
52
+ @comment.notify :users
53
+ end
54
+ }.to change { ActivityNotification::Mailer.deliveries.size }.by(1)
55
+ expect(ActivityNotification::Mailer.deliveries.first.to[0]).to eq(@article_author.email)
56
+ ```
57
+
58
+ ### Testing gem alone
59
+
60
+ #### Testing with RSpec
61
+ Pull git repository and execute RSpec.
62
+ ```console
63
+ $ git pull https://github.com/simukappu/activity_notification.git
64
+ $ cd activity_notification
65
+ $ bundle install —path vendor/bundle
66
+ $ bundle exec rspec
67
+ - or -
68
+ $ bundle exec rake
69
+ ```
70
+
71
+ ##### Testing with DynamoDB Local
72
+ You can use [DynamoDB Local](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBLocal.html) to test Amazon DynamoDB integration in your local environment.
73
+
74
+ At first, set up DynamoDB Local by install script:
75
+ ```console
76
+ $ bin/install_dynamodblocal.sh
77
+ ```
78
+ Then, start DynamoDB Local by start script:
79
+ ```console
80
+ $ bin/start_dynamodblocal.sh
81
+ ```
82
+ And you can stop DynamoDB Local by stop script:
83
+ ```console
84
+ $ bin/stop_dynamodblocal.sh
85
+ ```
86
+
87
+ In short, you can test DynamoDB integration by the following step:
88
+ ```console
89
+ $ git pull https://github.com/simukappu/activity_notification.git
90
+ $ cd activity_notification
91
+ $ bundle install —path vendor/bundle
92
+ $ bin/install_dynamodblocal.sh
93
+ $ bin/start_dynamodblocal.sh
94
+ $ AN_ORM=dynamoid bundle exec rspec
95
+ ```
96
+
97
+ #### Example Rails application
98
+ Test module includes example Rails application in *[spec/rails_app](/spec/rails_app)*. You can run the example application as common Rails application.
99
+ ```console
100
+ $ cd spec/rails_app
101
+ $ bin/rake db:migrate
102
+ $ bin/rake db:seed
103
+ $ bin/rails server
104
+ ```
105
+ Then, you can access <http://localhost:3000> for the example application.
106
+
107
+ ##### Run with your local database
108
+ As default, example Rails application runs with local SQLite database in *spec/rails_app/db/development.sqlite3*.
109
+ This application supports to run with your local MySQL, PostgreSQL, MongoDB.
110
+ Set **AN_TEST_DB** environment variable as follows.
111
+
112
+ To use MySQL:
113
+ ```console
114
+ $ export AN_TEST_DB=mysql
115
+ ```
116
+ To use PostgreSQL:
117
+ ```console
118
+ $ export AN_TEST_DB=postgresql
119
+ ```
120
+ To use MongoDB:
121
+ ```console
122
+ $ export AN_TEST_DB=mongodb
123
+ ```
124
+ When you set **mongodb** as *AN_TEST_DB*, you have to use *activity_notification* with MongoDB. Also set **AN_ORM** like:
125
+ ```console
126
+ $ export AN_ORM=mongoid
127
+ ```
128
+
129
+ You can also run this Rails application in cross database environment like these:
130
+
131
+ To use MySQL for your application and use MongoDB for *activity_notification*:
132
+ ```console
133
+ $ export AN_ORM=mongoid AN_TEST_DB=mysql
134
+ ```
135
+ To use PostgreSQL for your application and use Amazon DynamoDB for *activity_notification*:
136
+ ```console
137
+ $ export AN_ORM=dynamoid AN_TEST_DB=postgresql
138
+ ```
139
+
140
+ Then, configure *spec/rails_app/config/database.yml* or *spec/rails_app/config/mongoid.yml*, *spec/rails_app/config/dynamoid.rb* as your local database.
141
+ Finally, run database migration, seed data script and the example appliation.
142
+ ```console
143
+ $ cd spec/rails_app
144
+ $ # You don't need migration when you use MongoDB only (AN_ORM=mongoid and AN_TEST_DB=mongodb)
145
+ $ bin/rake db:migrate
146
+ $ bin/rake db:seed
147
+ $ bin/rails server Puma
148
+ ```
@@ -3,16 +3,23 @@ source 'https://rubygems.org'
3
3
  gemspec path: '../'
4
4
 
5
5
  gem 'rails', '~> 5.0.0'
6
+ gem 'sqlite3', '~> 1.3.13'
6
7
 
7
8
  group :development do
8
9
  gem 'bullet'
10
+ gem 'rack-cors'
9
11
  end
10
12
 
11
13
  group :test do
14
+ gem 'rspec-rails', '< 4.0.0'
12
15
  gem 'rails-controller-testing'
16
+ gem 'action-cable-testing'
13
17
  gem 'ammeter'
14
18
  gem 'timecop'
15
- gem 'coveralls', require: false
19
+ gem 'committee'
20
+ gem 'committee-rails', '< 0.6'
21
+ # gem 'coveralls', require: false
22
+ gem 'coveralls_reborn', require: false
16
23
  end
17
24
 
18
25
  gem 'dotenv-rails', groups: [:development, :test]
@@ -6,13 +6,19 @@ gem 'rails', '~> 5.1.0'
6
6
 
7
7
  group :development do
8
8
  gem 'bullet'
9
+ gem 'rack-cors'
9
10
  end
10
11
 
11
12
  group :test do
13
+ gem 'rspec-rails', '< 4.0.0'
12
14
  gem 'rails-controller-testing'
15
+ gem 'action-cable-testing'
13
16
  gem 'ammeter'
14
17
  gem 'timecop'
15
- gem 'coveralls', require: false
18
+ gem 'committee'
19
+ gem 'committee-rails', '< 0.6'
20
+ # gem 'coveralls', require: false
21
+ gem 'coveralls_reborn', require: false
16
22
  end
17
23
 
18
24
  gem 'dotenv-rails', groups: [:development, :test]
@@ -0,0 +1,24 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec path: '../'
4
+
5
+ gem 'rails', '~> 5.2.0'
6
+
7
+ group :development do
8
+ gem 'bullet'
9
+ gem 'rack-cors'
10
+ end
11
+
12
+ group :test do
13
+ gem 'rspec-rails', '< 4.0.0'
14
+ gem 'rails-controller-testing'
15
+ gem 'action-cable-testing'
16
+ gem 'ammeter'
17
+ gem 'timecop'
18
+ gem 'committee'
19
+ gem 'committee-rails', '< 0.6'
20
+ # gem 'coveralls', require: false
21
+ gem 'coveralls_reborn', require: false
22
+ end
23
+
24
+ gem 'dotenv-rails', groups: [:development, :test]
@@ -0,0 +1,23 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec path: '../'
4
+
5
+ gem 'rails', '~> 6.0.0'
6
+ gem 'psych', '< 4'
7
+
8
+ group :development do
9
+ gem 'bullet'
10
+ gem 'rack-cors'
11
+ end
12
+
13
+ group :test do
14
+ gem 'rails-controller-testing'
15
+ gem 'ammeter'
16
+ gem 'timecop'
17
+ gem 'committee'
18
+ gem 'committee-rails', '< 0.6'
19
+ # gem 'coveralls', require: false
20
+ gem 'coveralls_reborn', require: false
21
+ end
22
+
23
+ gem 'dotenv-rails', groups: [:development, :test]
@@ -0,0 +1,22 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec path: '../'
4
+
5
+ gem 'rails', '~> 6.1.0'
6
+
7
+ group :development do
8
+ gem 'bullet'
9
+ gem 'rack-cors'
10
+ end
11
+
12
+ group :test do
13
+ gem 'rails-controller-testing'
14
+ gem 'ammeter'
15
+ gem 'timecop'
16
+ gem 'committee'
17
+ gem 'committee-rails', '< 0.6'
18
+ # gem 'coveralls', require: false
19
+ gem 'coveralls_reborn', require: false
20
+ end
21
+
22
+ gem 'dotenv-rails', groups: [:development, :test]
@@ -0,0 +1,25 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec path: '../'
4
+
5
+ gem 'rails', '~> 7.0.0'
6
+ gem 'sprockets-rails'
7
+ # https://github.com/lynndylanhurley/devise_token_auth/pull/1517
8
+ gem 'devise_token_auth', git: 'https://github.com/lynndylanhurley/devise_token_auth.git'
9
+
10
+ group :development do
11
+ gem 'bullet'
12
+ gem 'rack-cors'
13
+ end
14
+
15
+ group :test do
16
+ gem 'rails-controller-testing'
17
+ gem 'ammeter'
18
+ gem 'timecop'
19
+ gem 'committee'
20
+ gem 'committee-rails', '< 0.6'
21
+ # gem 'coveralls', require: false
22
+ gem 'coveralls_reborn', require: false
23
+ end
24
+
25
+ gem 'dotenv-rails', groups: [:development, :test]