activity_notification 1.0.2 → 1.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 +4 -4
- data/.codeclimate.yml +33 -0
- data/.rubocop.yml +1157 -0
- data/.yardopts +3 -0
- data/CHANGELOG.md +25 -0
- data/Gemfile.lock +15 -17
- data/README.md +154 -27
- data/activity_notification.gemspec +1 -1
- data/app/controllers/activity_notification/notifications_controller.rb +30 -104
- data/app/controllers/activity_notification/notifications_with_devise_controller.rb +1 -33
- data/app/controllers/activity_notification/subscriptions_controller.rb +184 -0
- data/app/controllers/activity_notification/subscriptions_with_devise_controller.rb +6 -0
- data/app/mailers/activity_notification/mailer.rb +3 -3
- data/app/views/activity_notification/notifications/default/_index.html.erb +3 -0
- data/app/views/activity_notification/notifications/default/index.html.erb +8 -10
- data/app/views/activity_notification/notifications/default/show.html.erb +24 -2
- data/app/views/activity_notification/subscriptions/default/_form.html.erb +52 -0
- data/app/views/activity_notification/subscriptions/default/_notification_keys.html.erb +89 -0
- data/app/views/activity_notification/subscriptions/default/_subscription.html.erb +73 -0
- data/app/views/activity_notification/subscriptions/default/_subscriptions.html.erb +13 -0
- data/app/views/activity_notification/subscriptions/default/create.js.erb +5 -0
- data/app/views/activity_notification/subscriptions/default/destroy.js.erb +5 -0
- data/app/views/activity_notification/subscriptions/default/index.html.erb +197 -0
- data/app/views/activity_notification/subscriptions/default/show.html.erb +177 -0
- data/app/views/activity_notification/subscriptions/default/subscribe.js.erb +8 -0
- data/app/views/activity_notification/subscriptions/default/subscribe_to_email.js.erb +6 -0
- data/app/views/activity_notification/subscriptions/default/unsubscribe.js.erb +8 -0
- data/app/views/activity_notification/subscriptions/default/unsubscribe_to_email.js.erb +6 -0
- data/gemfiles/Gemfile.rails-4.2.lock +18 -20
- data/gemfiles/Gemfile.rails-5.0.lock +18 -20
- data/lib/activity_notification.rb +7 -3
- data/lib/activity_notification/apis/notification_api.rb +95 -61
- data/lib/activity_notification/apis/subscription_api.rb +51 -0
- data/lib/activity_notification/common.rb +1 -1
- data/lib/activity_notification/config.rb +65 -17
- data/lib/activity_notification/controllers/common_controller.rb +118 -0
- data/lib/activity_notification/controllers/devise_authentication_controller.rb +41 -0
- data/lib/activity_notification/helpers/view_helpers.rb +131 -3
- data/lib/activity_notification/mailers/helpers.rb +6 -8
- data/lib/activity_notification/models/concerns/notifiable.rb +45 -27
- data/lib/activity_notification/models/concerns/subscriber.rb +149 -0
- data/lib/activity_notification/models/concerns/target.rb +100 -66
- data/lib/activity_notification/models/notification.rb +7 -5
- data/lib/activity_notification/models/subscription.rb +93 -0
- data/lib/activity_notification/rails/routes.rb +148 -33
- data/lib/activity_notification/renderable.rb +3 -4
- data/lib/activity_notification/roles/acts_as_notifiable.rb +14 -1
- data/lib/activity_notification/roles/acts_as_target.rb +11 -8
- data/lib/activity_notification/version.rb +1 -1
- data/lib/generators/activity_notification/controllers_generator.rb +2 -2
- data/lib/generators/activity_notification/install_generator.rb +0 -1
- data/lib/generators/activity_notification/migration/migration_generator.rb +8 -2
- data/lib/generators/activity_notification/models_generator.rb +53 -0
- data/lib/generators/activity_notification/views_generator.rb +7 -7
- data/lib/generators/templates/activity_notification.rb +17 -3
- data/lib/generators/templates/controllers/notifications_controller.rb +18 -17
- data/lib/generators/templates/controllers/notifications_with_devise_controller.rb +18 -17
- data/lib/generators/templates/controllers/subscriptions_controller.rb +79 -0
- data/lib/generators/templates/controllers/subscriptions_with_devise_controller.rb +87 -0
- data/lib/generators/templates/migrations/migration.rb +57 -0
- data/lib/generators/templates/models/README +10 -0
- data/lib/generators/templates/{notification → models}/notification.rb +1 -3
- data/lib/generators/templates/models/subscription.rb +4 -0
- data/spec/concerns/apis/notification_api_spec.rb +48 -11
- data/spec/concerns/apis/subscription_api_spec.rb +167 -0
- data/spec/concerns/models/notifiable_spec.rb +60 -0
- data/spec/concerns/models/subscriber_spec.rb +525 -0
- data/spec/concerns/models/target_spec.rb +271 -42
- data/spec/controllers/common_controller_spec.rb +25 -0
- data/spec/controllers/dummy_common_controller.rb +5 -0
- data/spec/controllers/notifications_controller_shared_examples.rb +2 -6
- data/spec/controllers/subscriptions_controller_shared_examples.rb +735 -0
- data/spec/controllers/subscriptions_controller_spec.rb +12 -0
- data/spec/controllers/subscriptions_with_devise_controller_spec.rb +91 -0
- data/spec/factories/dummy/dummy_subscriber.rb +4 -0
- data/spec/factories/subscriptions.rb +8 -0
- data/spec/generators/controllers_generator_spec.rb +25 -2
- data/spec/generators/migration/migration_generator_spec.rb +3 -3
- data/spec/generators/models_generator_spec.rb +96 -0
- data/spec/generators/views_generator_spec.rb +84 -0
- data/spec/helpers/view_helpers_spec.rb +143 -0
- data/spec/mailers/mailer_spec.rb +5 -4
- data/spec/models/dummy/dummy_subscriber_spec.rb +5 -0
- data/spec/models/notification_spec.rb +7 -7
- data/spec/models/subscription_spec.rb +158 -0
- data/spec/rails_app/app/controllers/users/notifications_controller.rb +67 -0
- data/spec/rails_app/app/controllers/users/notifications_with_devise_controller.rb +75 -0
- data/spec/rails_app/app/controllers/users/subscriptions_controller.rb +79 -0
- data/spec/rails_app/app/controllers/users/subscriptions_with_devise_controller.rb +87 -0
- data/spec/rails_app/app/models/admin.rb +1 -0
- data/spec/rails_app/app/models/dummy/dummy_subscriber.rb +4 -0
- data/spec/rails_app/app/models/user.rb +2 -1
- data/spec/rails_app/app/views/activity_notification/mailer/dummy_subscribers/test_key.text.erb +1 -0
- data/spec/rails_app/app/views/articles/index.html.erb +6 -0
- data/spec/rails_app/config/initializers/activity_notification.rb +17 -3
- data/spec/rails_app/config/routes.rb +2 -2
- data/spec/rails_app/db/migrate/20160715050420_create_activity_notification_tables.rb +33 -0
- data/spec/rails_app/db/schema.rb +18 -0
- data/spec/roles/acts_as_notifiable_spec.rb +1 -1
- data/spec/roles/acts_as_target_spec.rb +1 -1
- metadata +70 -11
- data/lib/generators/activity_notification/notification/notification_generator.rb +0 -20
- data/lib/generators/templates/active_record/migration.rb +0 -18
- data/spec/generators/notification/notification_generator_spec.rb +0 -41
- data/spec/rails_app/db/migrate/20160715050420_create_notifications.rb +0 -18
@@ -1,20 +0,0 @@
|
|
1
|
-
require 'rails/generators/active_record'
|
2
|
-
|
3
|
-
module ActivityNotification
|
4
|
-
module Generators
|
5
|
-
# Notification generator to create customizable notification model from templates.
|
6
|
-
# @example Run notification generator to create customizable notification model
|
7
|
-
# rails generate activity_notification:notification
|
8
|
-
class NotificationGenerator < ActiveRecord::Generators::Base
|
9
|
-
source_root File.expand_path("../../../templates/notification", __FILE__)
|
10
|
-
|
11
|
-
argument :name, type: :string, default: 'Notification'
|
12
|
-
|
13
|
-
# Create notification model in application directory
|
14
|
-
def create_models
|
15
|
-
@model_name = name
|
16
|
-
template 'notification.rb', "app/models/#{name.underscore}.rb"
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
# Migration responsible for creating a table with notifications
|
2
|
-
class <%= @migration_name %> < ActiveRecord::Migration
|
3
|
-
# Create table
|
4
|
-
def change
|
5
|
-
create_table :notifications do |t|
|
6
|
-
t.belongs_to :target, polymorphic: true, index: true, null: false
|
7
|
-
t.belongs_to :notifiable, polymorphic: true, index: true, null: false
|
8
|
-
t.string :key , null: false
|
9
|
-
t.belongs_to :group, polymorphic: true, index: true
|
10
|
-
t.integer :group_owner_id , index: true
|
11
|
-
t.belongs_to :notifier, polymorphic: true, index: true
|
12
|
-
t.text :parameters
|
13
|
-
t.datetime :opened_at
|
14
|
-
|
15
|
-
t.timestamps
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
@@ -1,41 +0,0 @@
|
|
1
|
-
require 'generators/activity_notification/notification/notification_generator'
|
2
|
-
|
3
|
-
describe ActivityNotification::Generators::NotificationGenerator, type: :generator do
|
4
|
-
|
5
|
-
# setup_default_destination
|
6
|
-
destination File.expand_path("../../../../tmp", __FILE__)
|
7
|
-
before { prepare_destination }
|
8
|
-
|
9
|
-
it 'runs generating model tasks' do
|
10
|
-
gen = generator
|
11
|
-
expect(gen).to receive :create_models
|
12
|
-
gen.invoke_all
|
13
|
-
end
|
14
|
-
|
15
|
-
describe 'the generated files' do
|
16
|
-
context 'without name argument' do
|
17
|
-
before do
|
18
|
-
run_generator
|
19
|
-
end
|
20
|
-
|
21
|
-
describe 'app/models/notification.rb' do
|
22
|
-
subject { file('app/models/notification.rb') }
|
23
|
-
it { is_expected.to exist }
|
24
|
-
it { is_expected.to contain(/class Notification < ActivityNotification::Notification/) }
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
context 'with CustomNotification as name argument' do
|
29
|
-
before do
|
30
|
-
run_generator %w(CustomNotification)
|
31
|
-
end
|
32
|
-
|
33
|
-
describe 'app/models/notification.rb' do
|
34
|
-
subject { file('app/models/custom_notification.rb') }
|
35
|
-
it { is_expected.to exist }
|
36
|
-
it { is_expected.to contain(/class CustomNotification < ActivityNotification::Notification/) }
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
end
|
41
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
# Migration responsible for creating a table with notifications
|
2
|
-
class CreateNotifications < ActiveRecord::Migration
|
3
|
-
# Create table
|
4
|
-
def change
|
5
|
-
create_table :notifications do |t|
|
6
|
-
t.belongs_to :target, polymorphic: true, index: true, null: false
|
7
|
-
t.belongs_to :notifiable, polymorphic: true, index: true, null: false
|
8
|
-
t.string :key , null: false
|
9
|
-
t.belongs_to :group, polymorphic: true, index: true
|
10
|
-
t.integer :group_owner_id , index: true
|
11
|
-
t.belongs_to :notifier, polymorphic: true, index: true
|
12
|
-
t.text :parameters
|
13
|
-
t.datetime :opened_at
|
14
|
-
|
15
|
-
t.timestamps
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|