notifiable-rails 0.20.0 → 0.21.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (30) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/notifiable/{notifications_controller.rb → notification_statuses_controller.rb} +9 -13
  3. data/config/routes.rb +1 -1
  4. data/db/migrate/20131210115649_create_notifiable_device_tokens.rb +1 -0
  5. data/db/migrate/20131210115650_create_notifiable_notifications.rb +0 -10
  6. data/db/migrate/20131210115651_create_notifiable_localized_notifications.rb +22 -0
  7. data/db/migrate/{20131210115651_create_notifiable_statuses.rb → 20131210115652_create_notifiable_statuses.rb} +1 -1
  8. data/lib/generators/notifiable/install/templates/initializer.rb +1 -1
  9. data/lib/notifiable/device_token.rb +1 -0
  10. data/lib/notifiable/localized_notification.rb +14 -0
  11. data/lib/notifiable/notification.rb +12 -3
  12. data/lib/notifiable/notification_status.rb +6 -1
  13. data/lib/notifiable/notifier_base.rb +6 -2
  14. data/lib/notifiable/version.rb +1 -1
  15. data/lib/notifiable.rb +5 -1
  16. data/spec/controllers/device_tokens_controller_spec.rb +1 -1
  17. data/spec/controllers/{notifications_controller_spec.rb → notification_statuses_controller_spec.rb} +14 -14
  18. data/spec/model/device_token_spec.rb +16 -0
  19. data/spec/model/localized_notification_spec.rb +38 -0
  20. data/spec/model/notifiable_spec.rb +3 -3
  21. data/spec/model/notification_spec.rb +21 -30
  22. data/spec/spec_helper.rb +4 -0
  23. data/spec/support/factories.rb +17 -6
  24. data/spec/test_app/db/development.sqlite3 +0 -0
  25. data/spec/test_app/db/migrate/{20131210115652_create_users.rb → 20131210115660_create_users.rb} +0 -0
  26. data/spec/test_app/db/schema.rb +11 -3
  27. data/spec/test_app/db/test.sqlite3 +0 -0
  28. data/spec/test_app/log/development.log +57 -0
  29. data/spec/test_app/log/test.log +38505 -0
  30. metadata +14 -8
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ab6756bd2340817f2d17d834d70f8e93c1ed4099
4
- data.tar.gz: 45df3fe71bb3477e904ec77b97dfebbd3df82263
3
+ metadata.gz: 68d901d11477d8f90ee9b4180d0c49ad37c38859
4
+ data.tar.gz: d734d5b725c04781ec6de1e07ef6b28e5280ff60
5
5
  SHA512:
6
- metadata.gz: 315d467276e714839d3f7d82cd19698e3ca1ed7e3b91da2d86a05476bb706ef37c56b8d728f7649de9cce92ec6c6d97f169cf6472627355fca84ff6ea86330ba
7
- data.tar.gz: 5904e1345423e81be5e682ee117e51122ca6263452421d2b66efcb0e4207f4d4b5e473aa2efd009d01e1fa642e171ddad4045296049c51e59f918b0f147a0911
6
+ metadata.gz: 32251a7be76a5cad5a4277b80a7b2781e0a36cc16a5464c28d031f05de745744a16eb013a25bffeb11b07a8828f9965e5b9938261cb762cdd48e19639ff88b9c
7
+ data.tar.gz: dfc5f8e28c4c4f64408947584bb6c033e1a8bd087e6294b3753a1ccf4218a542b0a6e9342ed948477632a0c4e5dc83a71f46aaf5761bfafae562c38438ed44ad
@@ -1,29 +1,25 @@
1
-
2
1
  module Notifiable
3
-
4
- class NotificationsController < Notifiable.api_controller_class
5
-
2
+ class NotificationStatusesController < Notifiable.api_controller_class
6
3
  before_filter :find_notification_status!, :check_authorisation!
7
-
4
+
8
5
  def opened
9
- if @notification_status.opened! && @notification_status.notification.increment!(:opened_count)
6
+ if @notification_status.opened!
10
7
  head :status => :ok
11
8
  else
12
9
  render :json => { :errors => @notification_status.errors.full_messages }, :status => :unprocessable_entity
13
10
  end
14
-
15
- end
16
11
 
12
+ end
13
+
17
14
  private
18
15
  def find_notification_status!
19
- return head :status => :not_acceptable unless params[:notification_id] && params[:device_token_id]
20
-
21
- @notification_status = NotificationStatus.find_by!("notification_id = ? AND device_token_id = ?", params[:notification_id], params[:device_token_id])
16
+ return head :status => :not_acceptable unless params[:localized_notification_id] && params[:device_token_id]
17
+
18
+ @notification_status = NotificationStatus.find_by_localized_notification_id_and_device_token_id!(params[:localized_notification_id], params[:device_token_id])
22
19
  end
23
-
20
+
24
21
  def check_authorisation!
25
22
  head :status => :unauthorized unless current_notifiable_user == @notification_status.device_token.user
26
23
  end
27
24
  end
28
-
29
25
  end
data/config/routes.rb CHANGED
@@ -1,5 +1,5 @@
1
1
 
2
2
  Notifiable::Engine.routes.draw do
3
3
  resources :device_tokens, :only => [:create, :update, :destroy]
4
- put 'notifications/opened', :to => "notifications#opened"
4
+ put 'notification_statuses/opened', :to => "notification_statuses#opened"
5
5
  end
@@ -4,6 +4,7 @@ class CreateNotifiableDeviceTokens < ActiveRecord::Migration
4
4
  create_table :notifiable_device_tokens do |t|
5
5
  t.string :token
6
6
  t.string :provider
7
+ t.string :locale
7
8
  t.boolean :is_valid, :default => true
8
9
  t.integer :user_id
9
10
  t.references :app
@@ -2,8 +2,6 @@ class CreateNotifiableNotifications < ActiveRecord::Migration
2
2
 
3
3
  def change
4
4
  create_table :notifiable_notifications do |t|
5
- t.text :message
6
- t.text :params
7
5
  t.references :app
8
6
 
9
7
  #stats
@@ -11,14 +9,6 @@ class CreateNotifiableNotifications < ActiveRecord::Migration
11
9
  t.integer :gateway_accepted_count, :default => 0
12
10
  t.integer :opened_count, :default => 0
13
11
 
14
- # APNS - Optional
15
- #t.integer :badge
16
- #t.text :sound
17
- #t.datetime :expiry
18
-
19
- # MPNS - Optional
20
- #t.text :title
21
-
22
12
  t.timestamps
23
13
  end
24
14
  end
@@ -0,0 +1,22 @@
1
+ class CreateNotifiableLocalizedNotifications < ActiveRecord::Migration
2
+
3
+ def change
4
+ create_table :notifiable_localized_notifications do |t|
5
+ t.text :message
6
+ t.text :params
7
+ t.string :locale
8
+ t.references :notification
9
+
10
+ # APNS - Optional
11
+ #t.integer :badge
12
+ #t.text :sound
13
+ #t.datetime :expiry
14
+
15
+ # MPNS - Optional
16
+ #t.text :title
17
+
18
+ t.timestamps
19
+ end
20
+ end
21
+
22
+ end
@@ -2,7 +2,7 @@ class CreateNotifiableStatuses < ActiveRecord::Migration
2
2
 
3
3
  def change
4
4
  create_table :notifiable_statuses do |t|
5
- t.references :notification
5
+ t.references :localized_notification
6
6
  t.references :device_token
7
7
  t.integer :status
8
8
  t.datetime :created_at
@@ -5,7 +5,7 @@ Notifiable.configure do |config|
5
5
 
6
6
  # Set the params permitted for creation of device tokens
7
7
  # Defaults to [:token, :provider, :app_id]
8
- #config.api_device_token_params = [:token, :provider, :app_id]
8
+ #config.api_device_token_params = [:token, :provider, :app_id, :locale]
9
9
 
10
10
  # The class representing the holder of the device
11
11
  config.user_class = User
@@ -1,6 +1,7 @@
1
1
  module Notifiable
2
2
  class DeviceToken < ActiveRecord::Base
3
3
  belongs_to :app, :class_name => "Notifiable::App"
4
+ has_many :notification_statuses, :class_name => "Notifiable::NotificationStatus"
4
5
 
5
6
  validates_presence_of :token, :provider, :app
6
7
 
@@ -0,0 +1,14 @@
1
+ module Notifiable
2
+ class LocalizedNotification < ActiveRecord::Base
3
+ belongs_to :notification, :class_name => "Notifiable::Notification"
4
+ #validates :notification, presence: true
5
+
6
+ serialize :params
7
+
8
+ has_many :notification_statuses, :class_name => 'Notifiable::NotificationStatus', :dependent => :destroy
9
+
10
+ def send_params
11
+ @send_params ||= (self.params ? self.params : {}).merge({:localized_notification_id => self.id})
12
+ end
13
+ end
14
+ end
@@ -3,16 +3,25 @@ module Notifiable
3
3
 
4
4
  serialize :params
5
5
 
6
- has_many :notification_statuses, :class_name => 'Notifiable::NotificationStatus', :dependent => :destroy
7
- belongs_to :app, :class_name => 'Notifiable::App'
6
+ has_many :localized_notifications, :class_name => 'Notifiable::LocalizedNotification', :dependent => :destroy
7
+ accepts_nested_attributes_for :localized_notifications
8
8
 
9
- validates_presence_of :app
9
+ belongs_to :app, :class_name => 'Notifiable::App'
10
+ validates :app, presence: true
11
+
12
+ def notification_statuses
13
+ Notifiable::NotificationStatus.joins(:localized_notification).where('notifiable_localized_notifications.notification_id' => self.id)
14
+ end
10
15
 
11
16
  def batch
12
17
  yield(self)
13
18
  close
14
19
  end
15
20
 
21
+ def localized_notification(locale)
22
+ self.localized_notifications.find_by(:locale => locale)
23
+ end
24
+
16
25
  def add_notifiable(notifiable)
17
26
  notifiable.device_tokens.each do |d|
18
27
  self.add_device_token(d)
@@ -1,12 +1,17 @@
1
1
  module Notifiable
2
2
  class NotificationStatus < ActiveRecord::Base
3
- belongs_to :notification, :class_name => 'Notifiable::Notification'
3
+
4
+ belongs_to :localized_notification, :class_name => 'Notifiable::LocalizedNotification'
5
+ validates :localized_notification, presence: true
6
+
4
7
  belongs_to :device_token, :class_name => 'Notifiable::DeviceToken'
8
+ validates :device_token, presence: true
5
9
 
6
10
  self.table_name = 'notifiable_statuses'
7
11
 
8
12
  def opened!
9
13
  update_attribute(:status, -1)
14
+ self.localized_notification.notification.increment!(:opened_count)
10
15
  end
11
16
 
12
17
  def opened?
@@ -9,7 +9,7 @@ module Notifiable
9
9
  end
10
10
 
11
11
  def send_notification(device_token)
12
- enqueue(device_token)
12
+ enqueue(device_token, self.localized_notification(device_token))
13
13
  end
14
14
 
15
15
  def close
@@ -21,9 +21,13 @@ module Notifiable
21
21
  def flush
22
22
 
23
23
  end
24
+
25
+ def localized_notification(device_token)
26
+ self.notification.localized_notification(device_token.locale)
27
+ end
24
28
 
25
29
  def processed(device_token, status)
26
- receipts << {notification_id: self.notification.id, device_token_id: device_token.id, status: status, created_at: DateTime.now}
30
+ receipts << {localized_notification_id: self.localized_notification(device_token).id, device_token_id: device_token.id, status: status, created_at: DateTime.now}
27
31
 
28
32
  if receipts.count > Notifiable.notification_status_batch_size
29
33
  save_receipts
@@ -1,3 +1,3 @@
1
1
  module Notifiable
2
- VERSION = "0.20.0"
2
+ VERSION = "0.21.0"
3
3
  end
data/lib/notifiable.rb CHANGED
@@ -4,6 +4,7 @@ require 'notifiable/notifiable_concern'
4
4
  require 'notifiable/railtie' if defined?(Rails)
5
5
  require 'notifiable/engine'
6
6
  require 'notifiable/notification'
7
+ require 'notifiable/localized_notification'
7
8
  require 'notifiable/notification_status'
8
9
  require 'notifiable/device_token'
9
10
  require 'notifiable/notifier_base'
@@ -13,7 +14,10 @@ module Notifiable
13
14
  mattr_accessor :api_controller_class
14
15
 
15
16
  mattr_accessor :api_device_token_params
16
- @@api_device_token_params = [:token, :provider, :app_id]
17
+ @@api_device_token_params = [:token, :provider, :app_id, :locale]
18
+
19
+ mattr_accessor :locales
20
+ @@locales = [:en]
17
21
 
18
22
  mattr_accessor :user_class
19
23
 
@@ -76,7 +76,7 @@ describe Notifiable::DeviceTokensController do
76
76
 
77
77
  context "old" do
78
78
  let(:user1) { FactoryGirl.create(:user) }
79
- let(:user2) { FactoryGirl.create(:user_with_mock_token) }
79
+ let(:user2) { FactoryGirl.create(:user_with_en_token) }
80
80
  let(:user2_device_token) { user2.device_tokens.first }
81
81
  let(:app) { FactoryGirl.create(:app) }
82
82
  let(:invalid_device_token) { FactoryGirl.create(:invalid_mock_token) }
@@ -1,10 +1,10 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Notifiable::NotificationsController do
3
+ describe Notifiable::NotificationStatusesController do
4
4
 
5
- let(:user1_device_token) { user1.device_tokens.first }
6
- let(:user2) { FactoryGirl.create(:user) }
7
- let(:anonymous_device_token) { FactoryGirl.create(:mock_token) }
5
+ #let(:user1_device_token) { user1.device_tokens.first }
6
+ #let(:user2) { create(:user) }
7
+ #let(:anonymous_device_token) { create(:mock_token) }
8
8
 
9
9
  before(:each) do
10
10
  @request.env["HTTP_ACCEPT"] = "application/json"
@@ -19,10 +19,10 @@ describe Notifiable::NotificationsController do
19
19
  let(:notifiable_app) { create(:app) }
20
20
  let(:user) { create(:user) }
21
21
  let(:token) { create(:mock_token, :app => notifiable_app, :user_id => user.id) }
22
- subject(:n) { create(:notification, :app => notifiable_app)}
23
- let!(:status) { create(:notification_status, :notification => n, :device_token => token) }
22
+ let(:localized_notification) { create(:localized_notification, :locale => :en) }
23
+ subject!(:status) { create(:notification_status, :localized_notification => localized_notification, :device_token => token) }
24
24
 
25
- before(:each) { put :opened, {:notification_id => n.id, :device_token_id => token.id, :user_email => user.email} }
25
+ before(:each) { put :opened, {:localized_notification_id => localized_notification.id, :device_token_id => token.id, :user_email => user.email} }
26
26
 
27
27
  it { expect(Notifiable::NotificationStatus.count).to eq 1 }
28
28
  it { expect(Notifiable::NotificationStatus.first.opened?).to eq true }
@@ -34,10 +34,10 @@ describe Notifiable::NotificationsController do
34
34
  let(:user1) { create(:user) }
35
35
  let(:user2) { create(:user) }
36
36
  let(:token) { create(:mock_token, :app => notifiable_app, :user_id => user1.id) }
37
- subject(:n) { create(:notification, :app => notifiable_app)}
38
- let!(:status) { create(:notification_status, :notification => n, :device_token => token) }
39
-
40
- before(:each) { put :opened, {:notification_id => n.id, :device_token_id => token.id, :user_email => user2.email} }
37
+ let(:localized_notification) { create(:localized_notification, :locale => :en) }
38
+ subject!(:status) { create(:notification_status, :localized_notification => localized_notification, :device_token => token) }
39
+
40
+ before(:each) { put :opened, {:localized_notification_id => localized_notification.id, :device_token_id => token.id, :user_email => user2.email} }
41
41
 
42
42
  it { expect(response.status).to eq 401 }
43
43
  it { expect(Notifiable::NotificationStatus.count).to eq 1 }
@@ -49,10 +49,10 @@ describe Notifiable::NotificationsController do
49
49
  describe "anonymously" do
50
50
  let(:notifiable_app) { create(:app) }
51
51
  let(:token) { create(:mock_token, :app => notifiable_app) }
52
- subject(:n) { create(:notification, :app => notifiable_app)}
53
- let!(:status) { create(:notification_status, :notification => n, :device_token => token) }
52
+ let(:localized_notification) { create(:localized_notification, :locale => :en) }
53
+ let!(:status) { create(:notification_status, :localized_notification => localized_notification, :device_token => token) }
54
54
 
55
- before(:each) { put :opened, {:notification_id => n.id, :device_token_id => token.id} }
55
+ before(:each) { put :opened, {:localized_notification_id => localized_notification.id, :device_token_id => token.id} }
56
56
 
57
57
  it { expect(Notifiable::NotificationStatus.count).to eq 1 }
58
58
  it { expect(Notifiable::NotificationStatus.first.opened?).to eq true }
@@ -0,0 +1,16 @@
1
+ require 'spec_helper'
2
+
3
+ describe Notifiable::DeviceToken do
4
+
5
+ describe "#locale" do
6
+ subject(:token) { create(:mock_token, :locale => 'en') }
7
+
8
+ it { expect(token.locale).to eq 'en' }
9
+ end
10
+
11
+ describe "#notification_statuses" do
12
+ subject(:token) { create(:mock_token, :notification_statuses => create_list(:notification_status, 2)) }
13
+
14
+ it { expect(token.notification_statuses.count).to eq 2 }
15
+ end
16
+ end
@@ -0,0 +1,38 @@
1
+ require 'spec_helper'
2
+
3
+ describe Notifiable::LocalizedNotification do
4
+
5
+ describe "#locale" do
6
+ subject!(:l) { create(:localized_notification, :locale => 'en') }
7
+
8
+ it { expect(Notifiable::LocalizedNotification.first.locale).to eq 'en' }
9
+ end
10
+
11
+ describe "#message" do
12
+ subject!(:l) { create(:localized_notification, :message => "Test message") }
13
+
14
+ it { expect(Notifiable::LocalizedNotification.first.message).to eq "Test message" }
15
+ end
16
+
17
+ describe "#params" do
18
+ subject!(:l) { create(:localized_notification, :params => {:custom_property => "A different message"}) }
19
+
20
+ it { expect(Notifiable::LocalizedNotification.first.params).to eq({:custom_property => "A different message"}) }
21
+ end
22
+
23
+ describe "#notification" do
24
+ let(:n) {create(:notification)}
25
+ subject!(:l) { create(:localized_notification, :notification => n) }
26
+
27
+ it { expect(Notifiable::LocalizedNotification.first.notification).to eq n }
28
+ end
29
+
30
+ describe "#destroy" do
31
+ subject(:l) { create(:localized_notification) }
32
+ let!(:s) { create(:notification_status, :localized_notification => l) }
33
+
34
+ before(:each) { l.destroy }
35
+
36
+ it { expect(Notifiable::NotificationStatus.count).to eq 0 }
37
+ end
38
+ end
@@ -5,8 +5,8 @@ describe Notifiable::Concern do
5
5
  describe "#send_notification" do
6
6
 
7
7
  context "single" do
8
- let(:user1) { create(:user_with_mock_token) }
9
- let(:notification1) { create(:notification, :message => "First test message")}
8
+ let(:user1) { create(:user_with_en_token) }
9
+ let(:notification1) { create(:notification_with_en_localization) }
10
10
 
11
11
  before(:each) { user1.send_notification(notification1) }
12
12
 
@@ -15,7 +15,7 @@ describe Notifiable::Concern do
15
15
 
16
16
  context "invalid device" do
17
17
  let(:user1) { FactoryGirl.create(:user_with_invalid_mock_token) }
18
- let(:notification1) { create(:notification, :message => "First test message")}
18
+ let(:notification1) { create(:notification_with_en_localization) }
19
19
 
20
20
  before(:each) { user1.send_notification(notification1) }
21
21
 
@@ -1,27 +1,18 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Notifiable::Notification do
4
-
5
- let(:user1) { FactoryGirl.create(:user_with_mock_token) }
6
- let(:user2) { FactoryGirl.create(:user_with_mock_token) }
7
- let(:notification1) { FactoryGirl.create(:notification, :message => "First test message")}
8
- let(:notification2) { FactoryGirl.create(:notification, :message => "Second test message")}
9
-
10
- describe "#message" do
11
- subject!(:n) { create(:notification, :message => "Test message") }
12
-
13
- it { expect(Notifiable::Notification.first.message).to eq "Test message" }
14
- end
15
-
16
- describe "#params" do
17
- subject!(:n) { create(:notification, :params => {:custom_property => "A different message"}) }
18
-
19
- it { expect(Notifiable::Notification.first.params).to eq({:custom_property => "A different message"}) }
4
+
5
+ describe "#localized_notifications" do
6
+ subject(:n) { create(:notification) }
7
+ let!(:localizations) { create_list(:localized_notification, 2, :notification => n)}
8
+
9
+ it { expect(Notifiable::Notification.count).to eq 1 }
10
+ it { expect(Notifiable::Notification.first.localized_notifications.count).to eq 2 }
20
11
  end
21
12
 
22
13
  describe "#destroy" do
23
- subject(:n) { create(:notification) }
24
- let!(:s) { create(:notification_status, :notification => n) }
14
+ subject(:n) { create(:localized_notification) }
15
+ let!(:s) { create(:notification_status, :localized_notification => n) }
25
16
 
26
17
  before(:each) { n.destroy }
27
18
 
@@ -30,11 +21,11 @@ describe Notifiable::Notification do
30
21
 
31
22
  describe "#add_notifiable" do
32
23
  context "for a single user" do
33
- subject(:notification) { create(:notification) }
34
- let(:u) { create(:user_with_mock_token) }
24
+ subject(:notification) { create(:notification_with_en_localization) }
25
+ let(:u) { create(:user_with_en_token) }
35
26
 
36
27
  before(:each) do
37
- notification1.batch do |n|
28
+ notification.batch do |n|
38
29
  n.add_notifiable(u)
39
30
  end
40
31
  end
@@ -48,12 +39,12 @@ describe Notifiable::Notification do
48
39
  end
49
40
 
50
41
  context "for two users" do
51
- subject(:notification) { create(:notification) }
52
- let(:u1) { create(:user_with_mock_token) }
53
- let(:u2) { create(:user_with_mock_token) }
42
+ subject(:notification) { create(:notification_with_en_localization) }
43
+ let(:u1) { create(:user_with_en_token) }
44
+ let(:u2) { create(:user_with_en_token) }
54
45
 
55
46
  before(:each) do
56
- notification1.batch do |n|
47
+ notification.batch do |n|
57
48
  n.add_notifiable(u1)
58
49
  n.add_notifiable(u2)
59
50
  end
@@ -73,10 +64,10 @@ describe Notifiable::Notification do
73
64
 
74
65
  describe "#add_device_token" do
75
66
  context "single token" do
76
- subject(:n) { create(:notification) }
77
- let(:dt) { create(:mock_token) }
67
+ subject(:notification) { create(:notification_with_en_localization) }
68
+ let(:dt) { create(:device_token, :locale => :en) }
78
69
 
79
- before(:each) { notification1.batch {|n| n.add_device_token(dt) } }
70
+ before(:each) { notification.batch {|n| n.add_device_token(dt) } }
80
71
 
81
72
  it { expect(Notifiable::Notification.first.sent_count).to eq 1 }
82
73
  it { expect(Notifiable::Notification.first.gateway_accepted_count).to eq 1 }
@@ -87,11 +78,11 @@ describe Notifiable::Notification do
87
78
  end
88
79
 
89
80
  context "undefined provider" do
90
- subject(:n) { create(:notification) }
81
+ subject(:notification) { create(:notification) }
91
82
  let(:dt) { create(:mock_token, :provider => :sms) }
92
83
 
93
84
  before(:each) do
94
- notification1.batch do |n|
85
+ notification.batch do |n|
95
86
  begin
96
87
  n.add_device_token(unconfigured_device_token)
97
88
  rescue
data/spec/spec_helper.rb CHANGED
@@ -45,6 +45,10 @@ RSpec.configure do |config|
45
45
  # Infer the spec type from the containing folder
46
46
  config.infer_spec_type_from_file_location!
47
47
 
48
+ config.before(:suite) do
49
+ #FactoryGirl.lint
50
+ end
51
+
48
52
  config.before(:each) {
49
53
  DatabaseCleaner.start
50
54
  Notifiable.delivery_method = :send
@@ -1,8 +1,10 @@
1
1
  FactoryGirl.define do
2
2
 
3
- factory :mock_token, :class => Notifiable::DeviceToken do
3
+ sequence(:token) {|n| "ABCD#{n}" }
4
+
5
+ factory :device_token, aliases: [:mock_token], :class => Notifiable::DeviceToken do
4
6
  provider :mock
5
- sequence(:token) {|n| "ABCD#{n}" }
7
+ token
6
8
  app
7
9
 
8
10
  factory :invalid_mock_token do
@@ -15,13 +17,22 @@ FactoryGirl.define do
15
17
 
16
18
  factory :notification, :class => Notifiable::Notification do
17
19
  app
20
+
21
+ factory :notification_with_en_localization do
22
+ after(:create) do |notification, evaluator|
23
+ FactoryGirl.create(:localized_notification, :locale => :en, :notification => notification)
24
+ end
25
+ end
18
26
  end
19
27
 
28
+ factory :localized_notification, :class => Notifiable::LocalizedNotification do
29
+ notification
30
+ end
20
31
 
21
32
  factory :notification_status, :class => Notifiable::NotificationStatus do
22
- notification
33
+ localized_notification
23
34
  status 0
24
- association :device_token, factory: :mock_token
35
+ device_token
25
36
  end
26
37
 
27
38
  sequence(:email) {|n| "person-#{n}@example.com" }
@@ -29,9 +40,9 @@ FactoryGirl.define do
29
40
  factory :user do
30
41
  email
31
42
 
32
- factory :user_with_mock_token do
43
+ factory :user_with_en_token do
33
44
  after(:create) do |user, evaluator|
34
- FactoryGirl.create(:mock_token, :user_id => user.id)
45
+ FactoryGirl.create(:device_token, :user_id => user.id, :locale => :en)
35
46
  end
36
47
  end
37
48
 
Binary file
@@ -11,7 +11,7 @@
11
11
  #
12
12
  # It's strongly recommended that you check this file into your version control system.
13
13
 
14
- ActiveRecord::Schema.define(version: 20131210115652) do
14
+ ActiveRecord::Schema.define(version: 20131210115660) do
15
15
 
16
16
  create_table "notifiable_apps", force: true do |t|
17
17
  t.string "name"
@@ -23,6 +23,7 @@ ActiveRecord::Schema.define(version: 20131210115652) do
23
23
  create_table "notifiable_device_tokens", force: true do |t|
24
24
  t.string "token"
25
25
  t.string "provider"
26
+ t.string "locale"
26
27
  t.boolean "is_valid", default: true
27
28
  t.integer "user_id"
28
29
  t.integer "app_id"
@@ -33,9 +34,16 @@ ActiveRecord::Schema.define(version: 20131210115652) do
33
34
  add_index "notifiable_device_tokens", ["token"], name: "index_notifiable_device_tokens_on_token", unique: true
34
35
  add_index "notifiable_device_tokens", ["user_id"], name: "index_notifiable_device_tokens_on_user_id"
35
36
 
36
- create_table "notifiable_notifications", force: true do |t|
37
+ create_table "notifiable_localized_notifications", force: true do |t|
37
38
  t.text "message"
38
39
  t.text "params"
40
+ t.string "locale"
41
+ t.integer "notification_id"
42
+ t.datetime "created_at"
43
+ t.datetime "updated_at"
44
+ end
45
+
46
+ create_table "notifiable_notifications", force: true do |t|
39
47
  t.integer "app_id"
40
48
  t.integer "sent_count", default: 0
41
49
  t.integer "gateway_accepted_count", default: 0
@@ -45,7 +53,7 @@ ActiveRecord::Schema.define(version: 20131210115652) do
45
53
  end
46
54
 
47
55
  create_table "notifiable_statuses", force: true do |t|
48
- t.integer "notification_id"
56
+ t.integer "localized_notification_id"
49
57
  t.integer "device_token_id"
50
58
  t.integer "status"
51
59
  t.datetime "created_at"
Binary file