activity_notification 1.6.1 → 1.7.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 +4 -4
 - data/CHANGELOG.md +15 -0
 - data/README.md +41 -3
 - data/app/jobs/activity_notification/notify_all_job.rb +9 -0
 - data/app/jobs/activity_notification/notify_job.rb +9 -0
 - data/app/jobs/activity_notification/notify_to_job.rb +9 -0
 - data/lib/activity_notification/apis/notification_api.rb +114 -18
 - data/lib/activity_notification/config.rb +20 -0
 - data/lib/activity_notification/models/concerns/notifiable.rb +63 -0
 - data/lib/activity_notification/models/concerns/target.rb +23 -2
 - data/lib/activity_notification/roles/acts_as_notifiable.rb +8 -0
 - data/lib/activity_notification/version.rb +1 -1
 - data/lib/generators/templates/activity_notification.rb +6 -0
 - data/lib/generators/templates/migrations/migration.rb +5 -5
 - data/spec/concerns/apis/notification_api_spec.rb +107 -0
 - data/spec/concerns/models/notifiable_spec.rb +25 -4
 - data/spec/concerns/models/subscriber_spec.rb +11 -11
 - data/spec/concerns/models/target_spec.rb +9 -2
 - data/spec/generators/migration/migration_generator_spec.rb +37 -4
 - data/spec/jobs/notify_all_job_spec.rb +23 -0
 - data/spec/jobs/notify_job_spec.rb +23 -0
 - data/spec/jobs/notify_to_job_spec.rb +23 -0
 - data/spec/rails_app/app/controllers/comments_controller.rb +4 -1
 - data/spec/rails_app/app/models/dummy/dummy_base.rb +1 -0
 - data/spec/rails_app/app/models/dummy/dummy_group.rb +1 -0
 - data/spec/rails_app/app/models/dummy/dummy_notifiable.rb +1 -0
 - data/spec/rails_app/app/models/dummy/dummy_notifiable_target.rb +1 -0
 - data/spec/rails_app/app/models/dummy/dummy_notifier.rb +1 -0
 - data/spec/rails_app/app/models/dummy/dummy_subscriber.rb +1 -0
 - data/spec/rails_app/app/models/dummy/dummy_target.rb +1 -0
 - data/spec/rails_app/config/initializers/activity_notification.rb +6 -0
 - data/spec/rails_app/db/migrate/{20160715050433_create_test_tables.rb → 20160716000000_create_test_tables.rb} +1 -1
 - data/spec/rails_app/db/migrate/{20160715050420_create_activity_notification_tables.rb → 20181209000000_create_activity_notification_tables.rb} +3 -3
 - data/spec/rails_app/db/schema.rb +43 -43
 - data/spec/roles/acts_as_notifiable_spec.rb +45 -0
 - metadata +15 -6
 
| 
         @@ -0,0 +1,23 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            describe ActivityNotification::NotifyAllJob, type: :job do
         
     | 
| 
      
 2 
     | 
    
         
            +
              before do
         
     | 
| 
      
 3 
     | 
    
         
            +
                ActiveJob::Base.queue_adapter = :test
         
     | 
| 
      
 4 
     | 
    
         
            +
                ActiveJob::Base.queue_adapter.enqueued_jobs.clear
         
     | 
| 
      
 5 
     | 
    
         
            +
                @author_user = create(:confirmed_user)
         
     | 
| 
      
 6 
     | 
    
         
            +
                @user        = create(:confirmed_user)
         
     | 
| 
      
 7 
     | 
    
         
            +
                @article     = create(:article, user: @author_user)
         
     | 
| 
      
 8 
     | 
    
         
            +
                @comment     = create(:comment, article: @article, user: @user)
         
     | 
| 
      
 9 
     | 
    
         
            +
              end
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
              describe "#perform_later" do
         
     | 
| 
      
 12 
     | 
    
         
            +
                it "generates notifications" do
         
     | 
| 
      
 13 
     | 
    
         
            +
                  expect {
         
     | 
| 
      
 14 
     | 
    
         
            +
                    ActivityNotification::NotifyAllJob.perform_later([@author_user, @user], @comment)
         
     | 
| 
      
 15 
     | 
    
         
            +
                  }.to have_enqueued_job
         
     | 
| 
      
 16 
     | 
    
         
            +
                end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                it "generates notifications once" do
         
     | 
| 
      
 19 
     | 
    
         
            +
                  ActivityNotification::NotifyAllJob.perform_later([@author_user, @user], @comment)
         
     | 
| 
      
 20 
     | 
    
         
            +
                  expect(ActivityNotification::NotifyAllJob).to have_been_enqueued.exactly(:once)
         
     | 
| 
      
 21 
     | 
    
         
            +
                end
         
     | 
| 
      
 22 
     | 
    
         
            +
              end
         
     | 
| 
      
 23 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,23 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            describe ActivityNotification::NotifyJob, type: :job do
         
     | 
| 
      
 2 
     | 
    
         
            +
              before do
         
     | 
| 
      
 3 
     | 
    
         
            +
                ActiveJob::Base.queue_adapter = :test
         
     | 
| 
      
 4 
     | 
    
         
            +
                ActiveJob::Base.queue_adapter.enqueued_jobs.clear
         
     | 
| 
      
 5 
     | 
    
         
            +
                @author_user = create(:confirmed_user)
         
     | 
| 
      
 6 
     | 
    
         
            +
                @user        = create(:confirmed_user)
         
     | 
| 
      
 7 
     | 
    
         
            +
                @article     = create(:article, user: @author_user)
         
     | 
| 
      
 8 
     | 
    
         
            +
                @comment     = create(:comment, article: @article, user: @user)
         
     | 
| 
      
 9 
     | 
    
         
            +
              end
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
              describe "#perform_later" do
         
     | 
| 
      
 12 
     | 
    
         
            +
                it "generates notifications" do
         
     | 
| 
      
 13 
     | 
    
         
            +
                  expect {
         
     | 
| 
      
 14 
     | 
    
         
            +
                    ActivityNotification::NotifyJob.perform_later('users', @comment)
         
     | 
| 
      
 15 
     | 
    
         
            +
                  }.to have_enqueued_job
         
     | 
| 
      
 16 
     | 
    
         
            +
                end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                it "generates notifications once" do
         
     | 
| 
      
 19 
     | 
    
         
            +
                  ActivityNotification::NotifyJob.perform_later('users', @comment)
         
     | 
| 
      
 20 
     | 
    
         
            +
                  expect(ActivityNotification::NotifyJob).to have_been_enqueued.exactly(:once)
         
     | 
| 
      
 21 
     | 
    
         
            +
                end
         
     | 
| 
      
 22 
     | 
    
         
            +
              end
         
     | 
| 
      
 23 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,23 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            describe ActivityNotification::NotifyToJob, type: :job do
         
     | 
| 
      
 2 
     | 
    
         
            +
              before do
         
     | 
| 
      
 3 
     | 
    
         
            +
                ActiveJob::Base.queue_adapter = :test
         
     | 
| 
      
 4 
     | 
    
         
            +
                ActiveJob::Base.queue_adapter.enqueued_jobs.clear
         
     | 
| 
      
 5 
     | 
    
         
            +
                @author_user = create(:confirmed_user)
         
     | 
| 
      
 6 
     | 
    
         
            +
                @user        = create(:confirmed_user)
         
     | 
| 
      
 7 
     | 
    
         
            +
                @article     = create(:article, user: @author_user)
         
     | 
| 
      
 8 
     | 
    
         
            +
                @comment     = create(:comment, article: @article, user: @user)
         
     | 
| 
      
 9 
     | 
    
         
            +
              end
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
              describe "#perform_later" do
         
     | 
| 
      
 12 
     | 
    
         
            +
                it "generates notification" do
         
     | 
| 
      
 13 
     | 
    
         
            +
                  expect {
         
     | 
| 
      
 14 
     | 
    
         
            +
                    ActivityNotification::NotifyToJob.perform_later(@user, @comment)
         
     | 
| 
      
 15 
     | 
    
         
            +
                  }.to have_enqueued_job
         
     | 
| 
      
 16 
     | 
    
         
            +
                end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                it "generates notification once" do
         
     | 
| 
      
 19 
     | 
    
         
            +
                  ActivityNotification::NotifyToJob.perform_later(@user, @comment)
         
     | 
| 
      
 20 
     | 
    
         
            +
                  expect(ActivityNotification::NotifyToJob).to have_been_enqueued.exactly(:once)
         
     | 
| 
      
 21 
     | 
    
         
            +
                end
         
     | 
| 
      
 22 
     | 
    
         
            +
              end
         
     | 
| 
      
 23 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -7,7 +7,10 @@ class CommentsController < ApplicationController 
     | 
|
| 
       7 
7 
     | 
    
         
             
                @comment.user = current_user
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
       9 
9 
     | 
    
         
             
                if @comment.save
         
     | 
| 
       10 
     | 
    
         
            -
                  @comment. 
     | 
| 
      
 10 
     | 
    
         
            +
                  @comment.notify_later :users, key: 'comment.create.later'
         
     | 
| 
      
 11 
     | 
    
         
            +
                  # @comment.notify       :users, key: 'comment.create.later', notify_later: true
         
     | 
| 
      
 12 
     | 
    
         
            +
                  @comment.notify_now   :users, key: 'comment.create.now'
         
     | 
| 
      
 13 
     | 
    
         
            +
                  # @comment.notify       :users, key: 'comment.create.now'
         
     | 
| 
       11 
14 
     | 
    
         
             
                  redirect_to @comment.article, notice: 'Comment was successfully created.'
         
     | 
| 
       12 
15 
     | 
    
         
             
                else
         
     | 
| 
       13 
16 
     | 
    
         
             
                  redirect_to @comment.article
         
     | 
| 
         @@ -7,6 +7,7 @@ else 
     | 
|
| 
       7 
7 
     | 
    
         
             
              class Dummy::DummySubscriber
         
     | 
| 
       8 
8 
     | 
    
         
             
                include Mongoid::Document
         
     | 
| 
       9 
9 
     | 
    
         
             
                include Mongoid::Timestamps
         
     | 
| 
      
 10 
     | 
    
         
            +
                include GlobalID::Identification
         
     | 
| 
       10 
11 
     | 
    
         
             
                include ActivityNotification::Models
         
     | 
| 
       11 
12 
     | 
    
         
             
                acts_as_target email: 'dummy@example.com', email_allowed: true, batch_email_allowed: true, subscription_allowed: true
         
     | 
| 
       12 
13 
     | 
    
         
             
              end
         
     | 
| 
         @@ -41,6 +41,9 @@ ActivityNotification.configure do |config| 
     | 
|
| 
       41 
41 
     | 
    
         
             
              # Configure the parent class responsible to send e-mails.
         
     | 
| 
       42 
42 
     | 
    
         
             
              # config.parent_mailer = 'ActionMailer::Base'
         
     | 
| 
       43 
43 
     | 
    
         | 
| 
      
 44 
     | 
    
         
            +
              # Configure the parent job class for delayed notifications.
         
     | 
| 
      
 45 
     | 
    
         
            +
              # config.parent_job = 'ActiveJob::Base'
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
       44 
47 
     | 
    
         
             
              # Configure the parent class for activity_notification controllers.
         
     | 
| 
       45 
48 
     | 
    
         
             
              # config.parent_controller = 'ApplicationController'
         
     | 
| 
       46 
49 
     | 
    
         | 
| 
         @@ -50,4 +53,7 @@ ActivityNotification.configure do |config| 
     | 
|
| 
       50 
53 
     | 
    
         
             
              # Configure default limit number of opened notifications you can get from opened* scope
         
     | 
| 
       51 
54 
     | 
    
         
             
              config.opened_index_limit = 10
         
     | 
| 
       52 
55 
     | 
    
         | 
| 
      
 56 
     | 
    
         
            +
              # Configure ActiveJob queue name for delayed notifications.
         
     | 
| 
      
 57 
     | 
    
         
            +
              config.active_job_queue = :activity_notification
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
       53 
59 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,5 +1,5 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # Migration responsible for creating a table with notifications
         
     | 
| 
       2 
     | 
    
         
            -
            class CreateActivityNotificationTables < ActiveRecord::Migration[5. 
     | 
| 
      
 2 
     | 
    
         
            +
            class CreateActivityNotificationTables < ActiveRecord::Migration[5.2]
         
     | 
| 
       3 
3 
     | 
    
         
             
              # Create tables
         
     | 
| 
       4 
4 
     | 
    
         
             
              def change
         
     | 
| 
       5 
5 
     | 
    
         
             
                create_table :notifications do |t|
         
     | 
| 
         @@ -12,7 +12,7 @@ class CreateActivityNotificationTables < ActiveRecord::Migration[5.1] 
     | 
|
| 
       12 
12 
     | 
    
         
             
                  t.text       :parameters
         
     | 
| 
       13 
13 
     | 
    
         
             
                  t.datetime   :opened_at
         
     | 
| 
       14 
14 
     | 
    
         | 
| 
       15 
     | 
    
         
            -
                  t.timestamps
         
     | 
| 
      
 15 
     | 
    
         
            +
                  t.timestamps null: false
         
     | 
| 
       16 
16 
     | 
    
         
             
                end
         
     | 
| 
       17 
17 
     | 
    
         | 
| 
       18 
18 
     | 
    
         
             
                create_table :subscriptions do |t|
         
     | 
| 
         @@ -26,7 +26,7 @@ class CreateActivityNotificationTables < ActiveRecord::Migration[5.1] 
     | 
|
| 
       26 
26 
     | 
    
         
             
                  t.datetime   :unsubscribed_to_email_at
         
     | 
| 
       27 
27 
     | 
    
         
             
                  t.text       :optional_targets
         
     | 
| 
       28 
28 
     | 
    
         | 
| 
       29 
     | 
    
         
            -
                  t.timestamps
         
     | 
| 
      
 29 
     | 
    
         
            +
                  t.timestamps null: false
         
     | 
| 
       30 
30 
     | 
    
         
             
                end
         
     | 
| 
       31 
31 
     | 
    
         
             
                add_index :subscriptions, [:target_type, :target_id, :key], unique: true
         
     | 
| 
       32 
32 
     | 
    
         
             
              end
         
     | 
    
        data/spec/rails_app/db/schema.rb
    CHANGED
    
    | 
         @@ -10,51 +10,51 @@ 
     | 
|
| 
       10 
10 
     | 
    
         
             
            #
         
     | 
| 
       11 
11 
     | 
    
         
             
            # It's strongly recommended that you check this file into your version control system.
         
     | 
| 
       12 
12 
     | 
    
         | 
| 
       13 
     | 
    
         
            -
            ActiveRecord::Schema.define(version:  
     | 
| 
      
 13 
     | 
    
         
            +
            ActiveRecord::Schema.define(version: 2018_12_09_000000) do
         
     | 
| 
       14 
14 
     | 
    
         | 
| 
       15 
15 
     | 
    
         
             
              create_table "admins", force: :cascade do |t|
         
     | 
| 
       16 
     | 
    
         
            -
                t.integer 
     | 
| 
       17 
     | 
    
         
            -
                t.string 
     | 
| 
       18 
     | 
    
         
            -
                t.string 
     | 
| 
       19 
     | 
    
         
            -
                t.datetime "created_at"
         
     | 
| 
       20 
     | 
    
         
            -
                t.datetime "updated_at"
         
     | 
| 
      
 16 
     | 
    
         
            +
                t.integer "user_id"
         
     | 
| 
      
 17 
     | 
    
         
            +
                t.string "phone_number"
         
     | 
| 
      
 18 
     | 
    
         
            +
                t.string "slack_username"
         
     | 
| 
      
 19 
     | 
    
         
            +
                t.datetime "created_at", null: false
         
     | 
| 
      
 20 
     | 
    
         
            +
                t.datetime "updated_at", null: false
         
     | 
| 
       21 
21 
     | 
    
         
             
                t.index ["user_id"], name: "index_admins_on_user_id"
         
     | 
| 
       22 
22 
     | 
    
         
             
              end
         
     | 
| 
       23 
23 
     | 
    
         | 
| 
       24 
24 
     | 
    
         
             
              create_table "articles", force: :cascade do |t|
         
     | 
| 
       25 
     | 
    
         
            -
                t.integer 
     | 
| 
       26 
     | 
    
         
            -
                t.string 
     | 
| 
       27 
     | 
    
         
            -
                t.string 
     | 
| 
       28 
     | 
    
         
            -
                t.datetime "created_at"
         
     | 
| 
       29 
     | 
    
         
            -
                t.datetime "updated_at"
         
     | 
| 
      
 25 
     | 
    
         
            +
                t.integer "user_id"
         
     | 
| 
      
 26 
     | 
    
         
            +
                t.string "title"
         
     | 
| 
      
 27 
     | 
    
         
            +
                t.string "body"
         
     | 
| 
      
 28 
     | 
    
         
            +
                t.datetime "created_at", null: false
         
     | 
| 
      
 29 
     | 
    
         
            +
                t.datetime "updated_at", null: false
         
     | 
| 
       30 
30 
     | 
    
         
             
                t.index ["user_id"], name: "index_articles_on_user_id"
         
     | 
| 
       31 
31 
     | 
    
         
             
              end
         
     | 
| 
       32 
32 
     | 
    
         | 
| 
       33 
33 
     | 
    
         
             
              create_table "comments", force: :cascade do |t|
         
     | 
| 
       34 
     | 
    
         
            -
                t.integer 
     | 
| 
       35 
     | 
    
         
            -
                t.integer 
     | 
| 
       36 
     | 
    
         
            -
                t.string 
     | 
| 
       37 
     | 
    
         
            -
                t.datetime "created_at"
         
     | 
| 
       38 
     | 
    
         
            -
                t.datetime "updated_at"
         
     | 
| 
      
 34 
     | 
    
         
            +
                t.integer "user_id"
         
     | 
| 
      
 35 
     | 
    
         
            +
                t.integer "article_id"
         
     | 
| 
      
 36 
     | 
    
         
            +
                t.string "body"
         
     | 
| 
      
 37 
     | 
    
         
            +
                t.datetime "created_at", null: false
         
     | 
| 
      
 38 
     | 
    
         
            +
                t.datetime "updated_at", null: false
         
     | 
| 
       39 
39 
     | 
    
         
             
                t.index ["article_id"], name: "index_comments_on_article_id"
         
     | 
| 
       40 
40 
     | 
    
         
             
                t.index ["user_id"], name: "index_comments_on_user_id"
         
     | 
| 
       41 
41 
     | 
    
         
             
              end
         
     | 
| 
       42 
42 
     | 
    
         | 
| 
       43 
43 
     | 
    
         
             
              create_table "notifications", force: :cascade do |t|
         
     | 
| 
       44 
     | 
    
         
            -
                t.string 
     | 
| 
       45 
     | 
    
         
            -
                t.integer 
     | 
| 
       46 
     | 
    
         
            -
                t.string 
     | 
| 
       47 
     | 
    
         
            -
                t.integer 
     | 
| 
       48 
     | 
    
         
            -
                t.string 
     | 
| 
       49 
     | 
    
         
            -
                t.string 
     | 
| 
       50 
     | 
    
         
            -
                t.integer 
     | 
| 
       51 
     | 
    
         
            -
                t.integer 
     | 
| 
       52 
     | 
    
         
            -
                t.string 
     | 
| 
       53 
     | 
    
         
            -
                t.integer 
     | 
| 
       54 
     | 
    
         
            -
                t.text 
     | 
| 
      
 44 
     | 
    
         
            +
                t.string "target_type", null: false
         
     | 
| 
      
 45 
     | 
    
         
            +
                t.integer "target_id", null: false
         
     | 
| 
      
 46 
     | 
    
         
            +
                t.string "notifiable_type", null: false
         
     | 
| 
      
 47 
     | 
    
         
            +
                t.integer "notifiable_id", null: false
         
     | 
| 
      
 48 
     | 
    
         
            +
                t.string "key", null: false
         
     | 
| 
      
 49 
     | 
    
         
            +
                t.string "group_type"
         
     | 
| 
      
 50 
     | 
    
         
            +
                t.integer "group_id"
         
     | 
| 
      
 51 
     | 
    
         
            +
                t.integer "group_owner_id"
         
     | 
| 
      
 52 
     | 
    
         
            +
                t.string "notifier_type"
         
     | 
| 
      
 53 
     | 
    
         
            +
                t.integer "notifier_id"
         
     | 
| 
      
 54 
     | 
    
         
            +
                t.text "parameters"
         
     | 
| 
       55 
55 
     | 
    
         
             
                t.datetime "opened_at"
         
     | 
| 
       56 
     | 
    
         
            -
                t.datetime "created_at"
         
     | 
| 
       57 
     | 
    
         
            -
                t.datetime "updated_at"
         
     | 
| 
      
 56 
     | 
    
         
            +
                t.datetime "created_at", null: false
         
     | 
| 
      
 57 
     | 
    
         
            +
                t.datetime "updated_at", null: false
         
     | 
| 
       58 
58 
     | 
    
         
             
                t.index ["group_owner_id"], name: "index_notifications_on_group_owner_id"
         
     | 
| 
       59 
59 
     | 
    
         
             
                t.index ["group_type", "group_id"], name: "index_notifications_on_group_type_and_group_id"
         
     | 
| 
       60 
60 
     | 
    
         
             
                t.index ["notifiable_type", "notifiable_id"], name: "index_notifications_on_notifiable_type_and_notifiable_id"
         
     | 
| 
         @@ -63,32 +63,32 @@ ActiveRecord::Schema.define(version: 20160715050433) do 
     | 
|
| 
       63 
63 
     | 
    
         
             
              end
         
     | 
| 
       64 
64 
     | 
    
         | 
| 
       65 
65 
     | 
    
         
             
              create_table "subscriptions", force: :cascade do |t|
         
     | 
| 
       66 
     | 
    
         
            -
                t.string 
     | 
| 
       67 
     | 
    
         
            -
                t.integer 
     | 
| 
       68 
     | 
    
         
            -
                t.string 
     | 
| 
       69 
     | 
    
         
            -
                t.boolean 
     | 
| 
       70 
     | 
    
         
            -
                t.boolean 
     | 
| 
      
 66 
     | 
    
         
            +
                t.string "target_type", null: false
         
     | 
| 
      
 67 
     | 
    
         
            +
                t.integer "target_id", null: false
         
     | 
| 
      
 68 
     | 
    
         
            +
                t.string "key", null: false
         
     | 
| 
      
 69 
     | 
    
         
            +
                t.boolean "subscribing", default: true, null: false
         
     | 
| 
      
 70 
     | 
    
         
            +
                t.boolean "subscribing_to_email", default: true, null: false
         
     | 
| 
       71 
71 
     | 
    
         
             
                t.datetime "subscribed_at"
         
     | 
| 
       72 
72 
     | 
    
         
             
                t.datetime "unsubscribed_at"
         
     | 
| 
       73 
73 
     | 
    
         
             
                t.datetime "subscribed_to_email_at"
         
     | 
| 
       74 
74 
     | 
    
         
             
                t.datetime "unsubscribed_to_email_at"
         
     | 
| 
       75 
     | 
    
         
            -
                t.text 
     | 
| 
       76 
     | 
    
         
            -
                t.datetime "created_at"
         
     | 
| 
       77 
     | 
    
         
            -
                t.datetime "updated_at"
         
     | 
| 
      
 75 
     | 
    
         
            +
                t.text "optional_targets"
         
     | 
| 
      
 76 
     | 
    
         
            +
                t.datetime "created_at", null: false
         
     | 
| 
      
 77 
     | 
    
         
            +
                t.datetime "updated_at", null: false
         
     | 
| 
       78 
78 
     | 
    
         
             
                t.index ["key"], name: "index_subscriptions_on_key"
         
     | 
| 
       79 
79 
     | 
    
         
             
                t.index ["target_type", "target_id", "key"], name: "index_subscriptions_on_target_type_and_target_id_and_key", unique: true
         
     | 
| 
       80 
80 
     | 
    
         
             
                t.index ["target_type", "target_id"], name: "index_subscriptions_on_target_type_and_target_id"
         
     | 
| 
       81 
81 
     | 
    
         
             
              end
         
     | 
| 
       82 
82 
     | 
    
         | 
| 
       83 
83 
     | 
    
         
             
              create_table "users", force: :cascade do |t|
         
     | 
| 
       84 
     | 
    
         
            -
                t.string 
     | 
| 
       85 
     | 
    
         
            -
                t.string 
     | 
| 
       86 
     | 
    
         
            -
                t.string 
     | 
| 
      
 84 
     | 
    
         
            +
                t.string "email", default: "", null: false
         
     | 
| 
      
 85 
     | 
    
         
            +
                t.string "encrypted_password", default: "", null: false
         
     | 
| 
      
 86 
     | 
    
         
            +
                t.string "confirmation_token"
         
     | 
| 
       87 
87 
     | 
    
         
             
                t.datetime "confirmed_at"
         
     | 
| 
       88 
88 
     | 
    
         
             
                t.datetime "confirmation_sent_at"
         
     | 
| 
       89 
     | 
    
         
            -
                t.string 
     | 
| 
       90 
     | 
    
         
            -
                t.datetime "created_at"
         
     | 
| 
       91 
     | 
    
         
            -
                t.datetime "updated_at"
         
     | 
| 
      
 89 
     | 
    
         
            +
                t.string "name"
         
     | 
| 
      
 90 
     | 
    
         
            +
                t.datetime "created_at", null: false
         
     | 
| 
      
 91 
     | 
    
         
            +
                t.datetime "updated_at", null: false
         
     | 
| 
       92 
92 
     | 
    
         
             
                t.index ["email"], name: "index_users_on_email"
         
     | 
| 
       93 
93 
     | 
    
         
             
              end
         
     | 
| 
       94 
94 
     | 
    
         | 
| 
         @@ -1,4 +1,5 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            describe ActivityNotification::ActsAsNotifiable do
         
     | 
| 
      
 2 
     | 
    
         
            +
              include ActiveJob::TestHelper
         
     | 
| 
       2 
3 
     | 
    
         
             
              let(:dummy_model_class)      { Dummy::DummyBase }
         
     | 
| 
       3 
4 
     | 
    
         
             
              let(:dummy_notifiable_class) { Dummy::DummyNotifiable }
         
     | 
| 
       4 
5 
     | 
    
         
             
              let(:user_target)            { create(:confirmed_user) }
         
     | 
| 
         @@ -193,6 +194,50 @@ describe ActivityNotification::ActsAsNotifiable do 
     | 
|
| 
       193 
194 
     | 
    
         
             
                        end
         
     | 
| 
       194 
195 
     | 
    
         
             
                      end
         
     | 
| 
       195 
196 
     | 
    
         
             
                    end
         
     | 
| 
      
 197 
     | 
    
         
            +
             
     | 
| 
      
 198 
     | 
    
         
            +
                    context "with :notify_later option" do
         
     | 
| 
      
 199 
     | 
    
         
            +
                      before do
         
     | 
| 
      
 200 
     | 
    
         
            +
                        ActiveJob::Base.queue_adapter = :test
         
     | 
| 
      
 201 
     | 
    
         
            +
                        dummy_notifiable_class.acts_as_notifiable :users, targets: [user_target], tracked: { notify_later: true }
         
     | 
| 
      
 202 
     | 
    
         
            +
                        @created_notifiable = dummy_notifiable_class.create
         
     | 
| 
      
 203 
     | 
    
         
            +
                      end
         
     | 
| 
      
 204 
     | 
    
         
            +
             
     | 
| 
      
 205 
     | 
    
         
            +
                      context "creation" do
         
     | 
| 
      
 206 
     | 
    
         
            +
                        it "generates notifications later when notifiable is created" do
         
     | 
| 
      
 207 
     | 
    
         
            +
                          expect {
         
     | 
| 
      
 208 
     | 
    
         
            +
                            @created_notifiable = dummy_notifiable_class.create
         
     | 
| 
      
 209 
     | 
    
         
            +
                          }.to have_enqueued_job(ActivityNotification::NotifyJob)
         
     | 
| 
      
 210 
     | 
    
         
            +
                        end
         
     | 
| 
      
 211 
     | 
    
         
            +
             
     | 
| 
      
 212 
     | 
    
         
            +
                        it "creates notification records later when notifiable is created" do
         
     | 
| 
      
 213 
     | 
    
         
            +
                          perform_enqueued_jobs do
         
     | 
| 
      
 214 
     | 
    
         
            +
                            @created_notifiable = dummy_notifiable_class.create
         
     | 
| 
      
 215 
     | 
    
         
            +
                          end
         
     | 
| 
      
 216 
     | 
    
         
            +
                          expect(user_target.notifications.filtered_by_instance(@created_notifiable).count).to eq(1)
         
     | 
| 
      
 217 
     | 
    
         
            +
                        end
         
     | 
| 
      
 218 
     | 
    
         
            +
                      end
         
     | 
| 
      
 219 
     | 
    
         
            +
             
     | 
| 
      
 220 
     | 
    
         
            +
                      context "update" do
         
     | 
| 
      
 221 
     | 
    
         
            +
                        before do
         
     | 
| 
      
 222 
     | 
    
         
            +
                          user_target.notifications.delete_all
         
     | 
| 
      
 223 
     | 
    
         
            +
                          expect(user_target.notifications.count).to eq(0)
         
     | 
| 
      
 224 
     | 
    
         
            +
                          @notifiable.update(created_at: @notifiable.updated_at)
         
     | 
| 
      
 225 
     | 
    
         
            +
                        end
         
     | 
| 
      
 226 
     | 
    
         
            +
             
     | 
| 
      
 227 
     | 
    
         
            +
                        it "generates notifications later when notifiable is created" do
         
     | 
| 
      
 228 
     | 
    
         
            +
                          expect {
         
     | 
| 
      
 229 
     | 
    
         
            +
                            @notifiable.update(created_at: @notifiable.updated_at)
         
     | 
| 
      
 230 
     | 
    
         
            +
                          }.to have_enqueued_job(ActivityNotification::NotifyJob)
         
     | 
| 
      
 231 
     | 
    
         
            +
                        end
         
     | 
| 
      
 232 
     | 
    
         
            +
             
     | 
| 
      
 233 
     | 
    
         
            +
                        it "creates notification records later when notifiable is created" do
         
     | 
| 
      
 234 
     | 
    
         
            +
                          perform_enqueued_jobs do
         
     | 
| 
      
 235 
     | 
    
         
            +
                            @notifiable.update(created_at: @notifiable.updated_at)
         
     | 
| 
      
 236 
     | 
    
         
            +
                          end
         
     | 
| 
      
 237 
     | 
    
         
            +
                          expect(user_target.notifications.filtered_by_instance(@notifiable).count).to eq(1)
         
     | 
| 
      
 238 
     | 
    
         
            +
                        end
         
     | 
| 
      
 239 
     | 
    
         
            +
                      end
         
     | 
| 
      
 240 
     | 
    
         
            +
                    end
         
     | 
| 
       196 
241 
     | 
    
         
             
                  end
         
     | 
| 
       197 
242 
     | 
    
         | 
| 
       198 
243 
     | 
    
         
             
                  context "with :dependent_notifications option" do
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: activity_notification
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 1. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 1.7.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Shota Yamazaki
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2018- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2018-12-09 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: railties
         
     | 
| 
         @@ -258,6 +258,9 @@ files: 
     | 
|
| 
       258 
258 
     | 
    
         
             
            - app/controllers/activity_notification/notifications_with_devise_controller.rb
         
     | 
| 
       259 
259 
     | 
    
         
             
            - app/controllers/activity_notification/subscriptions_controller.rb
         
     | 
| 
       260 
260 
     | 
    
         
             
            - app/controllers/activity_notification/subscriptions_with_devise_controller.rb
         
     | 
| 
      
 261 
     | 
    
         
            +
            - app/jobs/activity_notification/notify_all_job.rb
         
     | 
| 
      
 262 
     | 
    
         
            +
            - app/jobs/activity_notification/notify_job.rb
         
     | 
| 
      
 263 
     | 
    
         
            +
            - app/jobs/activity_notification/notify_to_job.rb
         
     | 
| 
       261 
264 
     | 
    
         
             
            - app/mailers/activity_notification/mailer.rb
         
     | 
| 
       262 
265 
     | 
    
         
             
            - app/views/activity_notification/mailer/default/batch_default.html.erb
         
     | 
| 
       263 
266 
     | 
    
         
             
            - app/views/activity_notification/mailer/default/batch_default.text.erb
         
     | 
| 
         @@ -383,6 +386,9 @@ files: 
     | 
|
| 
       383 
386 
     | 
    
         
             
            - spec/generators/views_generator_spec.rb
         
     | 
| 
       384 
387 
     | 
    
         
             
            - spec/helpers/polymorphic_helpers_spec.rb
         
     | 
| 
       385 
388 
     | 
    
         
             
            - spec/helpers/view_helpers_spec.rb
         
     | 
| 
      
 389 
     | 
    
         
            +
            - spec/jobs/notify_all_job_spec.rb
         
     | 
| 
      
 390 
     | 
    
         
            +
            - spec/jobs/notify_job_spec.rb
         
     | 
| 
      
 391 
     | 
    
         
            +
            - spec/jobs/notify_to_job_spec.rb
         
     | 
| 
       386 
392 
     | 
    
         
             
            - spec/mailers/mailer_spec.rb
         
     | 
| 
       387 
393 
     | 
    
         
             
            - spec/models/dummy/dummy_group_spec.rb
         
     | 
| 
       388 
394 
     | 
    
         
             
            - spec/models/dummy/dummy_notifiable_spec.rb
         
     | 
| 
         @@ -463,8 +469,8 @@ files: 
     | 
|
| 
       463 
469 
     | 
    
         
             
            - spec/rails_app/config/mongoid.yml
         
     | 
| 
       464 
470 
     | 
    
         
             
            - spec/rails_app/config/routes.rb
         
     | 
| 
       465 
471 
     | 
    
         
             
            - spec/rails_app/config/secrets.yml
         
     | 
| 
       466 
     | 
    
         
            -
            - spec/rails_app/db/migrate/ 
     | 
| 
       467 
     | 
    
         
            -
            - spec/rails_app/db/migrate/ 
     | 
| 
      
 472 
     | 
    
         
            +
            - spec/rails_app/db/migrate/20160716000000_create_test_tables.rb
         
     | 
| 
      
 473 
     | 
    
         
            +
            - spec/rails_app/db/migrate/20181209000000_create_activity_notification_tables.rb
         
     | 
| 
       468 
474 
     | 
    
         
             
            - spec/rails_app/db/schema.rb
         
     | 
| 
       469 
475 
     | 
    
         
             
            - spec/rails_app/db/seeds.rb
         
     | 
| 
       470 
476 
     | 
    
         
             
            - spec/rails_app/lib/custom_optional_targets/console_output.rb
         
     | 
| 
         @@ -540,6 +546,9 @@ test_files: 
     | 
|
| 
       540 
546 
     | 
    
         
             
            - spec/generators/views_generator_spec.rb
         
     | 
| 
       541 
547 
     | 
    
         
             
            - spec/helpers/polymorphic_helpers_spec.rb
         
     | 
| 
       542 
548 
     | 
    
         
             
            - spec/helpers/view_helpers_spec.rb
         
     | 
| 
      
 549 
     | 
    
         
            +
            - spec/jobs/notify_all_job_spec.rb
         
     | 
| 
      
 550 
     | 
    
         
            +
            - spec/jobs/notify_job_spec.rb
         
     | 
| 
      
 551 
     | 
    
         
            +
            - spec/jobs/notify_to_job_spec.rb
         
     | 
| 
       543 
552 
     | 
    
         
             
            - spec/mailers/mailer_spec.rb
         
     | 
| 
       544 
553 
     | 
    
         
             
            - spec/models/dummy/dummy_group_spec.rb
         
     | 
| 
       545 
554 
     | 
    
         
             
            - spec/models/dummy/dummy_notifiable_spec.rb
         
     | 
| 
         @@ -620,8 +629,8 @@ test_files: 
     | 
|
| 
       620 
629 
     | 
    
         
             
            - spec/rails_app/config/mongoid.yml
         
     | 
| 
       621 
630 
     | 
    
         
             
            - spec/rails_app/config/routes.rb
         
     | 
| 
       622 
631 
     | 
    
         
             
            - spec/rails_app/config/secrets.yml
         
     | 
| 
       623 
     | 
    
         
            -
            - spec/rails_app/db/migrate/ 
     | 
| 
       624 
     | 
    
         
            -
            - spec/rails_app/db/migrate/ 
     | 
| 
      
 632 
     | 
    
         
            +
            - spec/rails_app/db/migrate/20160716000000_create_test_tables.rb
         
     | 
| 
      
 633 
     | 
    
         
            +
            - spec/rails_app/db/migrate/20181209000000_create_activity_notification_tables.rb
         
     | 
| 
       625 
634 
     | 
    
         
             
            - spec/rails_app/db/schema.rb
         
     | 
| 
       626 
635 
     | 
    
         
             
            - spec/rails_app/db/seeds.rb
         
     | 
| 
       627 
636 
     | 
    
         
             
            - spec/rails_app/lib/custom_optional_targets/console_output.rb
         
     |