courier 0.1.5 → 0.2.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.
- data/Gemfile +3 -2
- data/README.rdoc +15 -0
- data/VERSION +1 -1
- data/app/controllers/courier_settings_controller.rb +8 -0
- data/app/helpers/courier_settings_helper.rb +13 -0
- data/app/views/courier_settings/set.html.haml +1 -0
- data/config/routes.rb +3 -0
- data/courier.gemspec +15 -8
- data/lib/courier.rb +4 -2
- data/lib/courier/config.rb +7 -2
- data/lib/courier/owner.rb +1 -1
- data/lib/courier/owner_setting.rb +37 -8
- data/lib/courier/service/base.rb +4 -0
- data/lib/courier/service/gritter_notice.rb +1 -1
- data/lib/courier/template/base.rb +9 -3
- data/spec/controllers/courier_settings_controller_spec.rb +23 -0
- data/spec/courier/owner_setting_spec.rb +30 -5
- data/spec/courier/owner_spec.rb +2 -2
- data/spec/courier/service/base_spec.rb +2 -0
- data/spec/courier/service/gritter_notice_spec.rb +1 -1
- data/spec/courier/template/base_spec.rb +1 -1
- data/spec/examples/example1_spec.rb +5 -5
- data/spec/helpers/courier_settings_helper_spec.rb +45 -0
- data/spec/spec_helper.rb +7 -9
- data/spec/support/application_controller.rb +7 -0
- metadata +40 -45
data/Gemfile
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
source "http://rubygems.org"
|
|
2
2
|
|
|
3
|
-
gem 'activerecord', "~> 3.0"
|
|
4
|
-
gem 'actionpack', "~> 3.0"
|
|
3
|
+
# gem 'activerecord', "~> 3.0"
|
|
4
|
+
# gem 'actionpack', "~> 3.0"
|
|
5
|
+
gem 'rails', '~> 3.0'
|
|
5
6
|
gem 'state_machine', "~> 0.10.2"
|
|
6
7
|
|
|
7
8
|
# Add dependencies to develop your gem here.
|
data/README.rdoc
CHANGED
|
@@ -54,6 +54,21 @@ Gemfile:
|
|
|
54
54
|
|
|
55
55
|
Courier.service(:facebook).deliver_all!
|
|
56
56
|
|
|
57
|
+
== Персональные настройки
|
|
58
|
+
|
|
59
|
+
У каждого пользователя есть персональные настройки для матрицы
|
|
60
|
+
шаблон-сервис. По умолчанию они такие, какие указаны в Courier.init
|
|
61
|
+
Установить собственное значение можно так:
|
|
62
|
+
|
|
63
|
+
user.courier.set(:import_complete, :facebook, :on) # или :off
|
|
64
|
+
|
|
65
|
+
Где <tt>:import_complete</tt> - название шаблона, а <tt>:facebook</tt> название сервиса.
|
|
66
|
+
|
|
67
|
+
Узнать значение:
|
|
68
|
+
|
|
69
|
+
user.courier.get(:import_complete, :facebook) # Вернет :on или :off
|
|
70
|
+
user.courier.enabled?(:import_complete, :facebook) # Вернет true или false
|
|
71
|
+
|
|
57
72
|
== Сервисы
|
|
58
73
|
|
|
59
74
|
На данный момент реализованы сервисы:
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.
|
|
1
|
+
0.2.0
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
module CourierSettingsHelper
|
|
2
|
+
|
|
3
|
+
def courier_setting_link(user, template, service)
|
|
4
|
+
return image_tag('disabled.png') if user.courier.disabled?(template, service)
|
|
5
|
+
|
|
6
|
+
on = user.courier.on?(template, service)
|
|
7
|
+
icon = image_tag(on ? 'on.png' : 'off.png')
|
|
8
|
+
link_to(icon, courier_settings_set_path(:service=>service, :template=>template,
|
|
9
|
+
:value=>(on ? 'off' : 'on')),
|
|
10
|
+
:remote=>true, 'data-type'=>'html', :class=>:courier_checkbox
|
|
11
|
+
)
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
= courier_setting_link(current_user, @template, @service)
|
data/config/routes.rb
ADDED
data/courier.gemspec
CHANGED
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
|
|
6
6
|
Gem::Specification.new do |s|
|
|
7
7
|
s.name = %q{courier}
|
|
8
|
-
s.version = "0.
|
|
8
|
+
s.version = "0.2.0"
|
|
9
9
|
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
|
11
11
|
s.authors = ["Danil Pismenny"]
|
|
12
|
-
s.date = %q{2011-04-
|
|
12
|
+
s.date = %q{2011-04-05}
|
|
13
13
|
s.description = %q{Система управления пользовательскими оповещениями и подписками}
|
|
14
14
|
s.email = %q{danil@orionet.ru}
|
|
15
15
|
s.extra_rdoc_files = [
|
|
@@ -25,6 +25,10 @@ Gem::Specification.new do |s|
|
|
|
25
25
|
"README.rdoc",
|
|
26
26
|
"Rakefile",
|
|
27
27
|
"VERSION",
|
|
28
|
+
"app/controllers/courier_settings_controller.rb",
|
|
29
|
+
"app/helpers/courier_settings_helper.rb",
|
|
30
|
+
"app/views/courier_settings/set.html.haml",
|
|
31
|
+
"config/routes.rb",
|
|
28
32
|
"courier.gemspec",
|
|
29
33
|
"lib/courier.rb",
|
|
30
34
|
"lib/courier/config.rb",
|
|
@@ -40,6 +44,7 @@ Gem::Specification.new do |s|
|
|
|
40
44
|
"lib/generators/courier_generator.rb",
|
|
41
45
|
"lib/generators/templates/courier.rb",
|
|
42
46
|
"lib/generators/templates/migration.rb",
|
|
47
|
+
"spec/controllers/courier_settings_controller_spec.rb",
|
|
43
48
|
"spec/courier/config_spec.rb",
|
|
44
49
|
"spec/courier/message_spec.rb",
|
|
45
50
|
"spec/courier/owner_setting_spec.rb",
|
|
@@ -50,7 +55,9 @@ Gem::Specification.new do |s|
|
|
|
50
55
|
"spec/courier/template/base_spec.rb",
|
|
51
56
|
"spec/courier_spec.rb",
|
|
52
57
|
"spec/examples/example1_spec.rb",
|
|
58
|
+
"spec/helpers/courier_settings_helper_spec.rb",
|
|
53
59
|
"spec/spec_helper.rb",
|
|
60
|
+
"spec/support/application_controller.rb",
|
|
54
61
|
"spec/support/factories.rb",
|
|
55
62
|
"spec/support/gems_simulation.rb",
|
|
56
63
|
"spec/support/migration.rb",
|
|
@@ -63,6 +70,7 @@ Gem::Specification.new do |s|
|
|
|
63
70
|
s.rubygems_version = %q{1.5.0}
|
|
64
71
|
s.summary = %q{Система управления пользовательскими оповещениями и подписками}
|
|
65
72
|
s.test_files = [
|
|
73
|
+
"spec/controllers/courier_settings_controller_spec.rb",
|
|
66
74
|
"spec/courier/config_spec.rb",
|
|
67
75
|
"spec/courier/message_spec.rb",
|
|
68
76
|
"spec/courier/owner_setting_spec.rb",
|
|
@@ -73,7 +81,9 @@ Gem::Specification.new do |s|
|
|
|
73
81
|
"spec/courier/template/base_spec.rb",
|
|
74
82
|
"spec/courier_spec.rb",
|
|
75
83
|
"spec/examples/example1_spec.rb",
|
|
84
|
+
"spec/helpers/courier_settings_helper_spec.rb",
|
|
76
85
|
"spec/spec_helper.rb",
|
|
86
|
+
"spec/support/application_controller.rb",
|
|
77
87
|
"spec/support/factories.rb",
|
|
78
88
|
"spec/support/gems_simulation.rb",
|
|
79
89
|
"spec/support/migration.rb",
|
|
@@ -85,8 +95,7 @@ Gem::Specification.new do |s|
|
|
|
85
95
|
s.specification_version = 3
|
|
86
96
|
|
|
87
97
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
|
88
|
-
s.add_runtime_dependency(%q<
|
|
89
|
-
s.add_runtime_dependency(%q<actionpack>, ["~> 3.0"])
|
|
98
|
+
s.add_runtime_dependency(%q<rails>, ["~> 3.0"])
|
|
90
99
|
s.add_runtime_dependency(%q<state_machine>, ["~> 0.10.2"])
|
|
91
100
|
s.add_development_dependency(%q<pg>, [">= 0"])
|
|
92
101
|
s.add_development_dependency(%q<ruby-debug>, [">= 0"])
|
|
@@ -100,8 +109,7 @@ Gem::Specification.new do |s|
|
|
|
100
109
|
s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
|
|
101
110
|
s.add_development_dependency(%q<rcov>, [">= 0"])
|
|
102
111
|
else
|
|
103
|
-
s.add_dependency(%q<
|
|
104
|
-
s.add_dependency(%q<actionpack>, ["~> 3.0"])
|
|
112
|
+
s.add_dependency(%q<rails>, ["~> 3.0"])
|
|
105
113
|
s.add_dependency(%q<state_machine>, ["~> 0.10.2"])
|
|
106
114
|
s.add_dependency(%q<pg>, [">= 0"])
|
|
107
115
|
s.add_dependency(%q<ruby-debug>, [">= 0"])
|
|
@@ -116,8 +124,7 @@ Gem::Specification.new do |s|
|
|
|
116
124
|
s.add_dependency(%q<rcov>, [">= 0"])
|
|
117
125
|
end
|
|
118
126
|
else
|
|
119
|
-
s.add_dependency(%q<
|
|
120
|
-
s.add_dependency(%q<actionpack>, ["~> 3.0"])
|
|
127
|
+
s.add_dependency(%q<rails>, ["~> 3.0"])
|
|
121
128
|
s.add_dependency(%q<state_machine>, ["~> 0.10.2"])
|
|
122
129
|
s.add_dependency(%q<pg>, [">= 0"])
|
|
123
130
|
s.add_dependency(%q<ruby-debug>, [">= 0"])
|
data/lib/courier.rb
CHANGED
|
@@ -23,11 +23,13 @@ module Courier
|
|
|
23
23
|
end
|
|
24
24
|
end
|
|
25
25
|
|
|
26
|
-
def template(
|
|
27
|
-
|
|
26
|
+
def template(key)
|
|
27
|
+
return key if key.is_a?(Courier::Template::Base)
|
|
28
|
+
config.get_template(key)
|
|
28
29
|
end
|
|
29
30
|
|
|
30
31
|
def service(name)
|
|
32
|
+
return name if name.is_a?(Courier::Service::Base)
|
|
31
33
|
config.get_service(name)
|
|
32
34
|
end
|
|
33
35
|
end
|
data/lib/courier/config.rb
CHANGED
|
@@ -1,14 +1,19 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
|
|
3
3
|
class Courier::Config
|
|
4
|
-
attr_accessor :services_hash, :templates_hash, :services_order
|
|
4
|
+
attr_accessor :services_hash, :templates_hash, :services_order, :templates_order
|
|
5
5
|
|
|
6
6
|
def initialize
|
|
7
7
|
self.services_order=[]
|
|
8
8
|
self.services_hash={}
|
|
9
|
+
self.templates_order=[]
|
|
9
10
|
self.templates_hash={}
|
|
10
11
|
end
|
|
11
12
|
|
|
13
|
+
def templates
|
|
14
|
+
templates_order
|
|
15
|
+
end
|
|
16
|
+
|
|
12
17
|
def services *services
|
|
13
18
|
return services_order if services.empty?
|
|
14
19
|
raise 'Список сервисов уже определен' unless services_order.empty?
|
|
@@ -32,7 +37,7 @@ class Courier::Config
|
|
|
32
37
|
service = services_order[index] or "Too many values (#{index}), no such services"
|
|
33
38
|
template.set(service, val)
|
|
34
39
|
end
|
|
35
|
-
|
|
40
|
+
templates_order << template
|
|
36
41
|
templates_hash[template.name] = template
|
|
37
42
|
end
|
|
38
43
|
|
data/lib/courier/owner.rb
CHANGED
|
@@ -27,7 +27,7 @@ module Courier::Owner
|
|
|
27
27
|
template = Courier.template(template_key)
|
|
28
28
|
Courier.config.services_order.select do |service|
|
|
29
29
|
create_courier unless courier
|
|
30
|
-
courier.
|
|
30
|
+
courier.on?(template, service, args) and service.message(self, template, args)
|
|
31
31
|
end
|
|
32
32
|
end
|
|
33
33
|
end
|
|
@@ -18,28 +18,57 @@ class Courier::OwnerSetting < ActiveRecord::Base
|
|
|
18
18
|
validates_uniqueness_of :owner_id, :scope=>:owner_type
|
|
19
19
|
|
|
20
20
|
def settings_of_template(template)
|
|
21
|
-
template = Courier.template(template)
|
|
21
|
+
template = Courier.template(template)
|
|
22
22
|
settings[template.name]||={}
|
|
23
23
|
end
|
|
24
24
|
|
|
25
25
|
def set(template, service, val=nil)
|
|
26
|
-
service = Courier.service(service)
|
|
26
|
+
service = Courier.service(service)
|
|
27
27
|
raise 'Cant use value as argument when block given' if block_given? and val
|
|
28
|
-
|
|
28
|
+
val = yield if block_given?
|
|
29
|
+
if val.blank?
|
|
30
|
+
settings_of_template(template).delete(service.name)
|
|
31
|
+
nil
|
|
32
|
+
else
|
|
33
|
+
# TODO validate setted value
|
|
34
|
+
settings_of_template(template)[service.name] = val.to_sym
|
|
35
|
+
end
|
|
29
36
|
end
|
|
30
37
|
|
|
38
|
+
def set!(template, service, val=nil)
|
|
39
|
+
if block_given?
|
|
40
|
+
set template, service do
|
|
41
|
+
yield
|
|
42
|
+
end
|
|
43
|
+
else
|
|
44
|
+
set(template, service, val)
|
|
45
|
+
end
|
|
46
|
+
save!
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
|
|
31
50
|
def get(template, service)
|
|
32
|
-
service = Courier.service(service)
|
|
33
|
-
template = Courier.template(template)
|
|
51
|
+
service = Courier.service(service)
|
|
52
|
+
template = Courier.template(template)
|
|
53
|
+
default = template.get(service)
|
|
54
|
+
return :disabled if default==:disabled
|
|
34
55
|
val = settings_of_template(template)[service.name]
|
|
35
|
-
val ||
|
|
56
|
+
val || default
|
|
36
57
|
end
|
|
37
58
|
|
|
38
|
-
def
|
|
59
|
+
def on?(template, service, args={})
|
|
39
60
|
get(template, service)==:on
|
|
40
61
|
end
|
|
41
62
|
|
|
42
|
-
def
|
|
63
|
+
def off?(template, service, args={})
|
|
43
64
|
get(template, service)==:off
|
|
44
65
|
end
|
|
66
|
+
|
|
67
|
+
def disabled?(template, service, args={})
|
|
68
|
+
get(template, service)==:disabled
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
# def enabled?(template, service, args={})
|
|
72
|
+
# get(template, service)!=:disabled
|
|
73
|
+
# end
|
|
45
74
|
end
|
data/lib/courier/service/base.rb
CHANGED
|
@@ -18,7 +18,7 @@ class Courier::Service::GritterNotice < Courier::Service::Base
|
|
|
18
18
|
#
|
|
19
19
|
|
|
20
20
|
def message(owner, template, options)
|
|
21
|
-
scope = [:courier, :gritter_notice]
|
|
21
|
+
scope = [:courier, :services, :gritter_notice]
|
|
22
22
|
opt = I18n::translate(template.name, :scope=>scope)
|
|
23
23
|
opt.merge!(options)
|
|
24
24
|
opt[:text]||=I18n::translate([template.name,:text], opt.merge(:scope=>scope) )
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
class Courier::Template::Base
|
|
3
3
|
|
|
4
|
+
AvailableValues = [:on, :off, :disabled]
|
|
5
|
+
|
|
4
6
|
attr_accessor :name, :defaults
|
|
5
7
|
|
|
6
8
|
def initialize(args)
|
|
@@ -9,7 +11,7 @@ class Courier::Template::Base
|
|
|
9
11
|
end
|
|
10
12
|
|
|
11
13
|
def get_text(service, args)
|
|
12
|
-
args[:scope]=[:courier, service.to_s] unless args[:scope]
|
|
14
|
+
args[:scope]=[:courier, :services, service.to_s, :templates] unless args[:scope]
|
|
13
15
|
args[:cascade]=true unless args.has_key? :cascade
|
|
14
16
|
I18n::translate(name, args )
|
|
15
17
|
end
|
|
@@ -27,7 +29,11 @@ class Courier::Template::Base
|
|
|
27
29
|
end
|
|
28
30
|
|
|
29
31
|
def to_s
|
|
30
|
-
|
|
32
|
+
name.to_s
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def to_label
|
|
36
|
+
I18n::translate(name, :scope=>[:courier,:templates] )
|
|
31
37
|
end
|
|
32
38
|
|
|
33
39
|
def key
|
|
@@ -37,7 +43,7 @@ class Courier::Template::Base
|
|
|
37
43
|
private
|
|
38
44
|
|
|
39
45
|
def check_val(val)
|
|
40
|
-
raise "Value must be
|
|
46
|
+
raise "Value must be one of #{AvailableValues.join(', ')}" unless AvailableValues.include? val
|
|
41
47
|
val
|
|
42
48
|
end
|
|
43
49
|
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe CourierSettingsController do
|
|
4
|
+
|
|
5
|
+
before do
|
|
6
|
+
@current_user = Factory :user
|
|
7
|
+
# @request.env["devise.mapping"] = :user
|
|
8
|
+
# sign_in @current_user
|
|
9
|
+
end
|
|
10
|
+
# let(:current_user){ @current_user }
|
|
11
|
+
|
|
12
|
+
describe "GET 'set'" do
|
|
13
|
+
it "should be successful" do
|
|
14
|
+
pending
|
|
15
|
+
courier = double :courier
|
|
16
|
+
courier.should_receive :set!
|
|
17
|
+
controller.current_user.stub('courier') { courier }
|
|
18
|
+
# controller.stub(:url_for)
|
|
19
|
+
get 'set', :service=>:service, :template=>:template, :value=>:on
|
|
20
|
+
response.should be_success
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -9,25 +9,50 @@ describe Courier::OwnerSetting do
|
|
|
9
9
|
context 'created' do
|
|
10
10
|
before do
|
|
11
11
|
@user = Factory :user
|
|
12
|
-
|
|
12
|
+
@service = mock_service :id=>2, :name=>'service1'
|
|
13
|
+
@template = mock_template :get=>:tralala, :name=>:template_key
|
|
14
|
+
Courier.stub(:service) { @service }
|
|
15
|
+
Courier.stub(:template) { @template }
|
|
13
16
|
end
|
|
14
17
|
|
|
15
18
|
subject { @user.courier }
|
|
16
19
|
# let(:template) { @template }
|
|
17
20
|
let(:template_key) { :template_key }
|
|
18
|
-
let(:service) {
|
|
21
|
+
let(:service) { @service }
|
|
19
22
|
|
|
20
23
|
describe '#set and #get' do
|
|
21
24
|
it 'use default if no set' do
|
|
22
25
|
subject.get(template_key, service).should == :tralala
|
|
23
26
|
end
|
|
24
27
|
|
|
28
|
+
context 'get on disabled' do
|
|
29
|
+
before do
|
|
30
|
+
@template.stub(:get) { :disabled }
|
|
31
|
+
subject.set(template_key, service, :on)
|
|
32
|
+
end
|
|
33
|
+
it{ subject.get(template_key, service).should == :disabled }
|
|
34
|
+
it { subject.on?(template_key, service).should be_false }
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
context 'set to nil' do
|
|
38
|
+
before do
|
|
39
|
+
subject.set(template_key, service, nil)
|
|
40
|
+
end
|
|
41
|
+
specify 'remove service' do
|
|
42
|
+
subject.settings[:template_key].should_not include(service.name)
|
|
43
|
+
end
|
|
44
|
+
it 'uses default' do
|
|
45
|
+
subject.get(template_key, service).should == :tralala
|
|
46
|
+
end
|
|
47
|
+
it { subject.on?(template_key, service).should be_false }
|
|
48
|
+
end
|
|
49
|
+
|
|
25
50
|
context ':on as block' do
|
|
26
51
|
before do
|
|
27
52
|
subject.set(template_key, service) { :on }
|
|
28
53
|
end
|
|
29
54
|
it { subject.get(template_key, service).should == :on }
|
|
30
|
-
it { subject.
|
|
55
|
+
it { subject.on?(template_key, service).should be_true }
|
|
31
56
|
end
|
|
32
57
|
|
|
33
58
|
context ':off as argument' do
|
|
@@ -35,8 +60,8 @@ describe Courier::OwnerSetting do
|
|
|
35
60
|
subject.set(template_key, service, :off)
|
|
36
61
|
end
|
|
37
62
|
it { subject.get(template_key, service).should == :off }
|
|
38
|
-
it { subject.
|
|
39
|
-
it { subject.
|
|
63
|
+
it { subject.off?(template_key, service).should be_true }
|
|
64
|
+
it { subject.on?(template_key, service).should be_false }
|
|
40
65
|
end
|
|
41
66
|
end
|
|
42
67
|
end
|
data/spec/courier/owner_spec.rb
CHANGED
|
@@ -13,7 +13,7 @@ describe User, "Courier::Owner extention" do
|
|
|
13
13
|
describe '#message' do
|
|
14
14
|
let(:args) { {:level=>123, :text=>'some text'} }
|
|
15
15
|
subject{ Factory :user }
|
|
16
|
-
it 'should send message to
|
|
16
|
+
it 'should send message to turned on services only' do
|
|
17
17
|
template = mock_template
|
|
18
18
|
|
|
19
19
|
service1 = mock_service
|
|
@@ -22,7 +22,7 @@ describe User, "Courier::Owner extention" do
|
|
|
22
22
|
|
|
23
23
|
subject.should_not_receive :create_courier
|
|
24
24
|
|
|
25
|
-
subject.courier.should_receive(:
|
|
25
|
+
subject.courier.should_receive(:on?).twice { |template, service, args|
|
|
26
26
|
service==service1
|
|
27
27
|
}
|
|
28
28
|
|
|
@@ -7,7 +7,7 @@ describe Courier::Service::GritterNotice do
|
|
|
7
7
|
args={:a=>1}
|
|
8
8
|
owner = double
|
|
9
9
|
template = double :name=>:template_key
|
|
10
|
-
I18n.should_receive(:translate).with(template.name, :scope=>[:courier, :gritter_notice]) {{:text=>'text of translation', :level=>:warning} }
|
|
10
|
+
I18n.should_receive(:translate).with(template.name, :scope=>[:courier, :services, :gritter_notice]) {{:text=>'text of translation', :level=>:warning} }
|
|
11
11
|
owner.should_receive(:gritter_notice).with(template.name, {:text=>"text of translation", :a=>1, :level=>:warning})
|
|
12
12
|
subject.message owner, template, args
|
|
13
13
|
end
|
|
@@ -12,7 +12,7 @@ describe Courier::Template::Base do
|
|
|
12
12
|
subject.should_receive(:name) { 'template_key' }
|
|
13
13
|
subject.
|
|
14
14
|
get_text(mock_service(:to_s=>'facebook'), :some_option=>123).should ==
|
|
15
|
-
'translation missing: en.courier.facebook.template_key'
|
|
15
|
+
'translation missing: en.courier.services.facebook.templates.template_key'
|
|
16
16
|
end
|
|
17
17
|
end
|
|
18
18
|
|
|
@@ -6,7 +6,7 @@ describe 'Initialize Courier' do
|
|
|
6
6
|
d.services :active_mailer, :gritter_notice, :facebook
|
|
7
7
|
d.template :import_complete, :off, :on, :off
|
|
8
8
|
d.template :avatar_loaded, :on, :off, :on
|
|
9
|
-
d.template :weekly_subscription, :on, :on, :
|
|
9
|
+
d.template :weekly_subscription, :on, :on, :disabled
|
|
10
10
|
end
|
|
11
11
|
end
|
|
12
12
|
|
|
@@ -24,7 +24,7 @@ describe 'Initialize Courier' do
|
|
|
24
24
|
|
|
25
25
|
Courier.template(:weekly_subscription).get(:active_mailer).should == :on
|
|
26
26
|
Courier.template(:weekly_subscription).get(:gritter_notice).should == :on
|
|
27
|
-
Courier.template(:weekly_subscription).get(:facebook).should == :
|
|
27
|
+
Courier.template(:weekly_subscription).get(:facebook).should == :disabled
|
|
28
28
|
end
|
|
29
29
|
|
|
30
30
|
describe 'users settings' do
|
|
@@ -42,20 +42,20 @@ describe 'Initialize Courier' do
|
|
|
42
42
|
|
|
43
43
|
user.courier.get(:weekly_subscription, :active_mailer).should == :on
|
|
44
44
|
user.courier.get(:weekly_subscription, :gritter_notice).should == :on
|
|
45
|
-
user.courier.get(:weekly_subscription, :facebook).should == :
|
|
45
|
+
user.courier.get(:weekly_subscription, :facebook).should == :disabled
|
|
46
46
|
end
|
|
47
47
|
|
|
48
48
|
describe 'override' do
|
|
49
49
|
before do
|
|
50
50
|
user.courier.set(:import_complete, :active_mailer, :on)
|
|
51
51
|
user.courier.set(:avatar_loaded, :active_mailer, :off)
|
|
52
|
-
user.courier.set(:weekly_subscription, :
|
|
52
|
+
user.courier.set(:weekly_subscription, :facebook, :on)
|
|
53
53
|
end
|
|
54
54
|
|
|
55
55
|
specify 'users default settings are equal to system' do
|
|
56
56
|
user.courier.get(:import_complete, :active_mailer).should == :on
|
|
57
57
|
user.courier.get(:avatar_loaded, :active_mailer).should == :off
|
|
58
|
-
user.courier.get(:weekly_subscription, :
|
|
58
|
+
user.courier.get(:weekly_subscription, :facebook).should == :disabled
|
|
59
59
|
end
|
|
60
60
|
end
|
|
61
61
|
end
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe CourierSettingsHelper do
|
|
4
|
+
let!(:user) { Factory :user }
|
|
5
|
+
let(:template) { mock_template }
|
|
6
|
+
let(:service) { mock_service }
|
|
7
|
+
|
|
8
|
+
# include ActionView::Helpers::TagHelper
|
|
9
|
+
# include ActionView::Helpers::UrlHelper
|
|
10
|
+
# include Rails.application.routes.url_helpers
|
|
11
|
+
|
|
12
|
+
it 'should return disabled icon when disabled' do
|
|
13
|
+
courier = double :courier
|
|
14
|
+
courier.should_receive(:disabled?) { true }
|
|
15
|
+
user.stub(:courier) { courier }
|
|
16
|
+
helper.should_receive(:image_tag).with('disabled.png')
|
|
17
|
+
|
|
18
|
+
helper.courier_setting_link(user, template, service)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it "should return 'on' icon when is on" do
|
|
22
|
+
courier = double :courier
|
|
23
|
+
courier.should_receive(:disabled?) { false }
|
|
24
|
+
courier.should_receive(:on?) { true }
|
|
25
|
+
user.stub(:courier) { courier }
|
|
26
|
+
helper.stub(:courier_settings_set_path)
|
|
27
|
+
helper.stub(:link_to)
|
|
28
|
+
|
|
29
|
+
helper.should_receive(:image_tag).with('on.png')
|
|
30
|
+
helper.courier_setting_link(user, template, service)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
it "should return 'on' icon when is on" do
|
|
34
|
+
courier = double :courier
|
|
35
|
+
courier.should_receive(:disabled?) { false }
|
|
36
|
+
courier.should_receive(:on?) { false }
|
|
37
|
+
user.stub(:courier) { courier }
|
|
38
|
+
helper.stub(:courier_settings_set_path)
|
|
39
|
+
helper.stub(:link_to)
|
|
40
|
+
|
|
41
|
+
helper.should_receive(:image_tag).with('off.png')
|
|
42
|
+
helper.courier_setting_link(user, template, service)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
end
|
data/spec/spec_helper.rb
CHANGED
|
@@ -4,9 +4,8 @@ require "bundler/setup"
|
|
|
4
4
|
|
|
5
5
|
ENV["RAILS_ENV"] ||= 'test'
|
|
6
6
|
|
|
7
|
-
require '
|
|
8
|
-
|
|
9
|
-
require 'action_controller'
|
|
7
|
+
require 'rails/all'
|
|
8
|
+
|
|
10
9
|
require 'state_machine'
|
|
11
10
|
|
|
12
11
|
require 'rspec'
|
|
@@ -14,18 +13,13 @@ require 'rspec/rails'
|
|
|
14
13
|
require 'shoulda'
|
|
15
14
|
require 'factory_girl'
|
|
16
15
|
|
|
17
|
-
# require 'nulldb_rspec'
|
|
18
|
-
# include NullDB::RSpec::NullifiedDatabase
|
|
19
|
-
|
|
20
16
|
ActiveRecord::Base.establish_connection(
|
|
21
17
|
:adapter => 'sqlite3',
|
|
22
18
|
:database => ":memory:"
|
|
23
|
-
# :adapter => 'postgresql',
|
|
24
|
-
# :database => "courier_test"
|
|
25
19
|
|
|
26
20
|
)
|
|
27
21
|
|
|
28
|
-
|
|
22
|
+
class Application < Rails::Application; end
|
|
29
23
|
|
|
30
24
|
require 'lib/generators/templates/migration'
|
|
31
25
|
CreateCourierTables.migrate :up
|
|
@@ -40,6 +34,10 @@ require 'courier'
|
|
|
40
34
|
|
|
41
35
|
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
|
|
42
36
|
|
|
37
|
+
require 'config/routes'
|
|
38
|
+
require 'app/controllers/courier_settings_controller'
|
|
39
|
+
require 'app/helpers/courier_settings_helper'
|
|
40
|
+
|
|
43
41
|
RSpec.configure do |config|
|
|
44
42
|
config.use_transactional_fixtures = true
|
|
45
43
|
config.use_transactional_examples = true
|
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: courier
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
hash:
|
|
4
|
+
hash: 23
|
|
5
5
|
prerelease:
|
|
6
6
|
segments:
|
|
7
7
|
- 0
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
version: 0.
|
|
8
|
+
- 2
|
|
9
|
+
- 0
|
|
10
|
+
version: 0.2.0
|
|
11
11
|
platform: ruby
|
|
12
12
|
authors:
|
|
13
13
|
- Danil Pismenny
|
|
@@ -15,11 +15,11 @@ autorequire:
|
|
|
15
15
|
bindir: bin
|
|
16
16
|
cert_chain: []
|
|
17
17
|
|
|
18
|
-
date: 2011-04-
|
|
18
|
+
date: 2011-04-05 00:00:00 +04:00
|
|
19
19
|
default_executable:
|
|
20
20
|
dependencies:
|
|
21
21
|
- !ruby/object:Gem::Dependency
|
|
22
|
-
name:
|
|
22
|
+
name: rails
|
|
23
23
|
version_requirements: &id001 !ruby/object:Gem::Requirement
|
|
24
24
|
none: false
|
|
25
25
|
requirements:
|
|
@@ -33,24 +33,9 @@ dependencies:
|
|
|
33
33
|
prerelease: false
|
|
34
34
|
type: :runtime
|
|
35
35
|
requirement: *id001
|
|
36
|
-
- !ruby/object:Gem::Dependency
|
|
37
|
-
name: actionpack
|
|
38
|
-
version_requirements: &id002 !ruby/object:Gem::Requirement
|
|
39
|
-
none: false
|
|
40
|
-
requirements:
|
|
41
|
-
- - ~>
|
|
42
|
-
- !ruby/object:Gem::Version
|
|
43
|
-
hash: 7
|
|
44
|
-
segments:
|
|
45
|
-
- 3
|
|
46
|
-
- 0
|
|
47
|
-
version: "3.0"
|
|
48
|
-
prerelease: false
|
|
49
|
-
type: :runtime
|
|
50
|
-
requirement: *id002
|
|
51
36
|
- !ruby/object:Gem::Dependency
|
|
52
37
|
name: state_machine
|
|
53
|
-
version_requirements: &
|
|
38
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
|
54
39
|
none: false
|
|
55
40
|
requirements:
|
|
56
41
|
- - ~>
|
|
@@ -63,10 +48,10 @@ dependencies:
|
|
|
63
48
|
version: 0.10.2
|
|
64
49
|
prerelease: false
|
|
65
50
|
type: :runtime
|
|
66
|
-
requirement: *
|
|
51
|
+
requirement: *id002
|
|
67
52
|
- !ruby/object:Gem::Dependency
|
|
68
53
|
name: pg
|
|
69
|
-
version_requirements: &
|
|
54
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
|
70
55
|
none: false
|
|
71
56
|
requirements:
|
|
72
57
|
- - ">="
|
|
@@ -77,10 +62,10 @@ dependencies:
|
|
|
77
62
|
version: "0"
|
|
78
63
|
prerelease: false
|
|
79
64
|
type: :development
|
|
80
|
-
requirement: *
|
|
65
|
+
requirement: *id003
|
|
81
66
|
- !ruby/object:Gem::Dependency
|
|
82
67
|
name: ruby-debug
|
|
83
|
-
version_requirements: &
|
|
68
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
|
84
69
|
none: false
|
|
85
70
|
requirements:
|
|
86
71
|
- - ">="
|
|
@@ -91,10 +76,10 @@ dependencies:
|
|
|
91
76
|
version: "0"
|
|
92
77
|
prerelease: false
|
|
93
78
|
type: :development
|
|
94
|
-
requirement: *
|
|
79
|
+
requirement: *id004
|
|
95
80
|
- !ruby/object:Gem::Dependency
|
|
96
81
|
name: watchr
|
|
97
|
-
version_requirements: &
|
|
82
|
+
version_requirements: &id005 !ruby/object:Gem::Requirement
|
|
98
83
|
none: false
|
|
99
84
|
requirements:
|
|
100
85
|
- - ">="
|
|
@@ -105,10 +90,10 @@ dependencies:
|
|
|
105
90
|
version: "0"
|
|
106
91
|
prerelease: false
|
|
107
92
|
type: :development
|
|
108
|
-
requirement: *
|
|
93
|
+
requirement: *id005
|
|
109
94
|
- !ruby/object:Gem::Dependency
|
|
110
95
|
name: sqlite3
|
|
111
|
-
version_requirements: &
|
|
96
|
+
version_requirements: &id006 !ruby/object:Gem::Requirement
|
|
112
97
|
none: false
|
|
113
98
|
requirements:
|
|
114
99
|
- - ">="
|
|
@@ -119,10 +104,10 @@ dependencies:
|
|
|
119
104
|
version: "0"
|
|
120
105
|
prerelease: false
|
|
121
106
|
type: :development
|
|
122
|
-
requirement: *
|
|
107
|
+
requirement: *id006
|
|
123
108
|
- !ruby/object:Gem::Dependency
|
|
124
109
|
name: factory_girl
|
|
125
|
-
version_requirements: &
|
|
110
|
+
version_requirements: &id007 !ruby/object:Gem::Requirement
|
|
126
111
|
none: false
|
|
127
112
|
requirements:
|
|
128
113
|
- - ">="
|
|
@@ -133,10 +118,10 @@ dependencies:
|
|
|
133
118
|
version: "0"
|
|
134
119
|
prerelease: false
|
|
135
120
|
type: :development
|
|
136
|
-
requirement: *
|
|
121
|
+
requirement: *id007
|
|
137
122
|
- !ruby/object:Gem::Dependency
|
|
138
123
|
name: shoulda
|
|
139
|
-
version_requirements: &
|
|
124
|
+
version_requirements: &id008 !ruby/object:Gem::Requirement
|
|
140
125
|
none: false
|
|
141
126
|
requirements:
|
|
142
127
|
- - ">="
|
|
@@ -147,10 +132,10 @@ dependencies:
|
|
|
147
132
|
version: "0"
|
|
148
133
|
prerelease: false
|
|
149
134
|
type: :development
|
|
150
|
-
requirement: *
|
|
135
|
+
requirement: *id008
|
|
151
136
|
- !ruby/object:Gem::Dependency
|
|
152
137
|
name: rspec
|
|
153
|
-
version_requirements: &
|
|
138
|
+
version_requirements: &id009 !ruby/object:Gem::Requirement
|
|
154
139
|
none: false
|
|
155
140
|
requirements:
|
|
156
141
|
- - ~>
|
|
@@ -162,10 +147,10 @@ dependencies:
|
|
|
162
147
|
version: "2.5"
|
|
163
148
|
prerelease: false
|
|
164
149
|
type: :development
|
|
165
|
-
requirement: *
|
|
150
|
+
requirement: *id009
|
|
166
151
|
- !ruby/object:Gem::Dependency
|
|
167
152
|
name: rspec-rails
|
|
168
|
-
version_requirements: &
|
|
153
|
+
version_requirements: &id010 !ruby/object:Gem::Requirement
|
|
169
154
|
none: false
|
|
170
155
|
requirements:
|
|
171
156
|
- - ">="
|
|
@@ -176,10 +161,10 @@ dependencies:
|
|
|
176
161
|
version: "0"
|
|
177
162
|
prerelease: false
|
|
178
163
|
type: :development
|
|
179
|
-
requirement: *
|
|
164
|
+
requirement: *id010
|
|
180
165
|
- !ruby/object:Gem::Dependency
|
|
181
166
|
name: bundler
|
|
182
|
-
version_requirements: &
|
|
167
|
+
version_requirements: &id011 !ruby/object:Gem::Requirement
|
|
183
168
|
none: false
|
|
184
169
|
requirements:
|
|
185
170
|
- - ~>
|
|
@@ -192,10 +177,10 @@ dependencies:
|
|
|
192
177
|
version: 1.0.0
|
|
193
178
|
prerelease: false
|
|
194
179
|
type: :development
|
|
195
|
-
requirement: *
|
|
180
|
+
requirement: *id011
|
|
196
181
|
- !ruby/object:Gem::Dependency
|
|
197
182
|
name: jeweler
|
|
198
|
-
version_requirements: &
|
|
183
|
+
version_requirements: &id012 !ruby/object:Gem::Requirement
|
|
199
184
|
none: false
|
|
200
185
|
requirements:
|
|
201
186
|
- - ~>
|
|
@@ -208,10 +193,10 @@ dependencies:
|
|
|
208
193
|
version: 1.5.2
|
|
209
194
|
prerelease: false
|
|
210
195
|
type: :development
|
|
211
|
-
requirement: *
|
|
196
|
+
requirement: *id012
|
|
212
197
|
- !ruby/object:Gem::Dependency
|
|
213
198
|
name: rcov
|
|
214
|
-
version_requirements: &
|
|
199
|
+
version_requirements: &id013 !ruby/object:Gem::Requirement
|
|
215
200
|
none: false
|
|
216
201
|
requirements:
|
|
217
202
|
- - ">="
|
|
@@ -222,7 +207,7 @@ dependencies:
|
|
|
222
207
|
version: "0"
|
|
223
208
|
prerelease: false
|
|
224
209
|
type: :development
|
|
225
|
-
requirement: *
|
|
210
|
+
requirement: *id013
|
|
226
211
|
description: !binary |
|
|
227
212
|
0KHQuNGB0YLQtdC80LAg0YPQv9GA0LDQstC70LXQvdC40Y8g0L/QvtC70YzQ
|
|
228
213
|
t9C+0LLQsNGC0LXQu9GM0YHQutC40LzQuCDQvtC/0L7QstC10YnQtdC90LjR
|
|
@@ -245,6 +230,10 @@ files:
|
|
|
245
230
|
- README.rdoc
|
|
246
231
|
- Rakefile
|
|
247
232
|
- VERSION
|
|
233
|
+
- app/controllers/courier_settings_controller.rb
|
|
234
|
+
- app/helpers/courier_settings_helper.rb
|
|
235
|
+
- app/views/courier_settings/set.html.haml
|
|
236
|
+
- config/routes.rb
|
|
248
237
|
- courier.gemspec
|
|
249
238
|
- lib/courier.rb
|
|
250
239
|
- lib/courier/config.rb
|
|
@@ -260,6 +249,7 @@ files:
|
|
|
260
249
|
- lib/generators/courier_generator.rb
|
|
261
250
|
- lib/generators/templates/courier.rb
|
|
262
251
|
- lib/generators/templates/migration.rb
|
|
252
|
+
- spec/controllers/courier_settings_controller_spec.rb
|
|
263
253
|
- spec/courier/config_spec.rb
|
|
264
254
|
- spec/courier/message_spec.rb
|
|
265
255
|
- spec/courier/owner_setting_spec.rb
|
|
@@ -270,7 +260,9 @@ files:
|
|
|
270
260
|
- spec/courier/template/base_spec.rb
|
|
271
261
|
- spec/courier_spec.rb
|
|
272
262
|
- spec/examples/example1_spec.rb
|
|
263
|
+
- spec/helpers/courier_settings_helper_spec.rb
|
|
273
264
|
- spec/spec_helper.rb
|
|
265
|
+
- spec/support/application_controller.rb
|
|
274
266
|
- spec/support/factories.rb
|
|
275
267
|
- spec/support/gems_simulation.rb
|
|
276
268
|
- spec/support/migration.rb
|
|
@@ -315,6 +307,7 @@ summary: !binary |
|
|
|
315
307
|
j9C80Lgg0Lgg0L/QvtC00L/QuNGB0LrQsNC80Lg=
|
|
316
308
|
|
|
317
309
|
test_files:
|
|
310
|
+
- spec/controllers/courier_settings_controller_spec.rb
|
|
318
311
|
- spec/courier/config_spec.rb
|
|
319
312
|
- spec/courier/message_spec.rb
|
|
320
313
|
- spec/courier/owner_setting_spec.rb
|
|
@@ -325,7 +318,9 @@ test_files:
|
|
|
325
318
|
- spec/courier/template/base_spec.rb
|
|
326
319
|
- spec/courier_spec.rb
|
|
327
320
|
- spec/examples/example1_spec.rb
|
|
321
|
+
- spec/helpers/courier_settings_helper_spec.rb
|
|
328
322
|
- spec/spec_helper.rb
|
|
323
|
+
- spec/support/application_controller.rb
|
|
329
324
|
- spec/support/factories.rb
|
|
330
325
|
- spec/support/gems_simulation.rb
|
|
331
326
|
- spec/support/migration.rb
|