courier 0.1.2

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.
@@ -0,0 +1,43 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'spec_helper'
3
+
4
+ describe Courier::OwnerSetting do
5
+
6
+ it { should belong_to(:owner) }
7
+ it { should validate_presence_of(:owner) }
8
+
9
+ context 'created' do
10
+ before do
11
+ @user = Factory :user
12
+ Courier.stub(:template) { mock_template :get=>:tralala, :name=>:template_key }
13
+ end
14
+
15
+ subject { @user.courier }
16
+ # let(:template) { @template }
17
+ let(:template_key) { :template_key }
18
+ let(:service) { mock_service :id=>2, :name=>'service1' }
19
+
20
+ describe '#set and #get' do
21
+ it 'use default if no set' do
22
+ subject.get(template_key, service).should == :tralala
23
+ end
24
+
25
+ context ':on as block' do
26
+ before do
27
+ subject.set(template_key, service) { :on }
28
+ end
29
+ it { subject.get(template_key, service).should == :on }
30
+ it { subject.enabled?(template_key, service).should be_true }
31
+ end
32
+
33
+ context ':off as argument' do
34
+ before do
35
+ subject.set(template_key, service, :off)
36
+ end
37
+ it { subject.get(template_key, service).should == :off }
38
+ it { subject.disabled?(template_key, service).should be_true }
39
+ it { subject.enabled?(template_key, service).should be_false }
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,32 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'spec_helper'
3
+
4
+ describe User, "Courier::Owner extention" do
5
+
6
+ it { should have_one(:courier).dependent(:destroy) }
7
+
8
+ describe 'creates courier automatically' do
9
+ subject{ Factory :user }
10
+ its(:courier) { should be_kind_of(Courier::OwnerSetting) }
11
+ end
12
+
13
+ describe '#message' do
14
+ let(:args) { {:level=>123,:text=>'some text'} }
15
+ it 'should send message to enabled services only' do
16
+ template = mock_template
17
+
18
+ service1 = mock_service
19
+ service2 = mock_service
20
+ service1.should_receive(:message).with(subject, template, args)
21
+
22
+ subject.courier.should_receive(:enabled?).twice { |template, service, args|
23
+ service==service1
24
+ }
25
+
26
+ Courier.should_receive(:config) { double :services_order=>[service1, service2] }
27
+ Courier.should_receive(:template).with(:templ) { template }
28
+
29
+ subject.message :templ, args
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,48 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'spec_helper'
3
+
4
+ describe Courier::Service::Base do
5
+ its(:name) { should == :base }
6
+
7
+ describe '#message' do
8
+ it 'saves message in database' do
9
+ args={:a=>1}
10
+ owner = double
11
+ template = double
12
+ cm = double
13
+ cm.should_receive(:create!).with(:owner=>owner, :template=>template, :options=>args)
14
+ subject.should_receive(:courier_messages) { cm }
15
+ subject.should_receive(:check_args).with(owner, template, args)
16
+ subject.message owner, template, args
17
+ end
18
+ end
19
+
20
+ # inherited in subclasses
21
+ describe '#deliver!'
22
+
23
+ describe 'last subclass title as name' do
24
+ before do
25
+ class Courier::Service::SuperGateway < Courier::Service::Base; end
26
+ end
27
+ subject { Courier::Service::SuperGateway.new }
28
+ its(:name) { should == :super_gateway }
29
+ end
30
+
31
+ describe 'class-level configuration' do
32
+ before do
33
+ class Courier::Service::SuperGateway < Courier::Service::Base; end
34
+ class Courier::Service::SuperGateway2 < Courier::Service::Base; end
35
+ Courier::Service::SuperGateway.configure do |config|
36
+ config.test=123
37
+ end
38
+ Courier::Service::SuperGateway2.configure do |config|
39
+ config.test=456
40
+ end
41
+ end
42
+
43
+ specify 'lets configure' do
44
+ Courier::Service::SuperGateway.config.test.should == 123
45
+ Courier::Service::SuperGateway2.config.test.should == 456
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,22 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'spec_helper'
3
+
4
+ describe Courier::Service::Facebook do
5
+ describe '#deliver!' do
6
+ it 'posts messages with Koala' do
7
+ owner = mock_owner :facebook_token=>'fbtoken'
8
+
9
+ message = mock_message :owner=>owner, :options=>{:text=>'text',:attachment=>{},:to=>'123'}
10
+ message.should_receive(:owner)
11
+ message.should_receive(:set_delivered)
12
+
13
+ graph = double
14
+ graph.should_receive(:put_wall_post).
15
+ with(message.options[:text], message.options[:attachment], message.options[:to]) { true }
16
+ Koala::Facebook::GraphAPI.should_receive(:new).with('fbtoken') { graph }
17
+
18
+ subject.stub_chain('courier_messages.fresh') { [message] }
19
+ subject.deliver!
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,20 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'spec_helper'
3
+
4
+ describe Courier::Service::GritterNotice do
5
+ describe '#message' do
6
+ it 'send message to gritter_notice' do
7
+ args={:a=>1}
8
+ owner = double
9
+ template = double :name=>:template_key
10
+ owner.should_receive(:gritter_notice).with(template.name, args)
11
+ subject.message owner, template, args
12
+ end
13
+ end
14
+
15
+ describe '#deliver!' do
16
+ it 'do nothing' do
17
+ subject.deliver!
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,25 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'spec_helper'
3
+
4
+ describe Courier::Template::Base do
5
+
6
+ subject { described_class.new(:name=>:template_key)}
7
+
8
+ its(:name) { should == :template_key }
9
+
10
+ context '#get_text' do
11
+ it 'should return text with localized tranlation' do
12
+ subject.should_receive(:name) { 'template_key' }
13
+ subject.
14
+ get_text(:some_option=>123,:service=>double(:name=>'facebook')).should ==
15
+ 'translation missing: en.courier.messages.facebook.template_key'
16
+ end
17
+ end
18
+
19
+ # context '#sets_by_owner' do
20
+ # let(:owner) { Factory :user }
21
+ # it do
22
+ # subject.sets_by_owner(owner)
23
+ # end
24
+ # end
25
+ end
@@ -0,0 +1,25 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'spec_helper'
3
+
4
+ describe Courier do
5
+ specify { ActiveRecord::Base.should respond_to(:has_courier)}
6
+
7
+ describe '.init' do
8
+ specify do
9
+ should_receive(:some_stub)
10
+ Courier.init do
11
+ some_stub
12
+ end
13
+ end
14
+ end
15
+
16
+ describe '.deliver_all!' do
17
+ it 'should run deliver! for all services' do
18
+ service = mock_service
19
+ service.should_receive(:deliver!).twice
20
+ Courier.config.should_receive(:services) { [service, service]}
21
+ Courier.deliver_all!
22
+ end
23
+ end
24
+
25
+ end
@@ -0,0 +1,78 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'Initialize Courier' do
4
+ before(:all) do
5
+ Courier.init do |d|
6
+ d.services :active_mailer, :gritter_notice, :facebook
7
+ d.template :import_complete, :off, :on, :off
8
+ d.template :avatar_loaded, :on, :off, :on
9
+ d.template :weekly_subscription, :on, :on, :on
10
+ end
11
+ end
12
+
13
+ let!(:user) { Factory :user }
14
+ let!(:config) { Courier.config }
15
+
16
+ specify 'default system settings' do
17
+ Courier.template(:import_complete).get(:active_mailer).should == :off
18
+ Courier.template(:import_complete).get(:gritter_notice).should == :on
19
+ Courier.template(:import_complete).get(:facebook).should == :off
20
+
21
+ Courier.template(:avatar_loaded).get(:active_mailer).should == :on
22
+ Courier.template(:avatar_loaded).get(:gritter_notice).should == :off
23
+ Courier.template(:avatar_loaded).get(:facebook).should == :on
24
+
25
+ Courier.template(:weekly_subscription).get(:active_mailer).should == :on
26
+ Courier.template(:weekly_subscription).get(:gritter_notice).should == :on
27
+ Courier.template(:weekly_subscription).get(:facebook).should == :on
28
+ end
29
+
30
+ describe 'users settings' do
31
+ before do
32
+ end
33
+
34
+ specify 'users default settings are equal to system' do
35
+ user.courier.get(:import_complete, :active_mailer).should == :off
36
+ user.courier.get(:import_complete, :gritter_notice).should == :on
37
+ user.courier.get(:import_complete, :facebook).should == :off
38
+
39
+ user.courier.get(:avatar_loaded, :active_mailer).should == :on
40
+ user.courier.get(:avatar_loaded, :gritter_notice).should == :off
41
+ user.courier.get(:avatar_loaded, :facebook).should == :on
42
+
43
+ user.courier.get(:weekly_subscription, :active_mailer).should == :on
44
+ user.courier.get(:weekly_subscription, :gritter_notice).should == :on
45
+ user.courier.get(:weekly_subscription, :facebook).should == :on
46
+ end
47
+
48
+ describe 'override' do
49
+ before do
50
+ user.courier.set(:import_complete, :active_mailer, :on)
51
+ user.courier.set(:avatar_loaded, :active_mailer, :off)
52
+ user.courier.set(:weekly_subscription, :active_mailer, :on)
53
+ end
54
+
55
+ specify 'users default settings are equal to system' do
56
+ user.courier.get(:import_complete, :active_mailer).should == :on
57
+ user.courier.get(:avatar_loaded, :active_mailer).should == :off
58
+ user.courier.get(:weekly_subscription, :active_mailer).should == :on
59
+ end
60
+ end
61
+ end
62
+
63
+ describe 'send message' do
64
+ specify 'send message to enabled services only' do
65
+ Courier.service(:active_mailer).should_not_receive :message
66
+ Courier.service(:gritter_notice).should_receive :message
67
+ Courier.service(:facebook).should_not_receive :message
68
+ user.message :import_complete, :args1=>:value1
69
+ end
70
+
71
+ specify 'send message to enabled services only' do
72
+ Courier.service(:active_mailer).should_receive :message
73
+ Courier.service(:gritter_notice).should_not_receive :message
74
+ Courier.service(:facebook).should_receive :message
75
+ user.message :avatar_loaded, :args1=>:value1
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,47 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'rubygems'
3
+ require "bundler/setup"
4
+
5
+ ENV["RAILS_ENV"] ||= 'test'
6
+
7
+ require 'active_record'
8
+ require 'action_view'
9
+ require 'action_controller'
10
+ require 'state_machine'
11
+
12
+ require 'rspec'
13
+ require 'rspec/rails'
14
+ require 'shoulda'
15
+ require 'factory_girl'
16
+
17
+ # require 'nulldb_rspec'
18
+ # include NullDB::RSpec::NullifiedDatabase
19
+
20
+ ActiveRecord::Base.establish_connection(
21
+ :adapter => 'sqlite3',
22
+ :database => ":memory:"
23
+ # :adapter => 'postgresql',
24
+ # :database => "courier_test"
25
+
26
+ )
27
+
28
+ #ActiveRecord::Base.logger = Logger.new(File.open('log/database.log', 'a'))
29
+
30
+ require 'lib/generators/templates/migration'
31
+ CreateCourierTables.migrate :up
32
+
33
+ ActiveRecord::Schema.define do
34
+ create_table :users do |t|
35
+ t.string :name
36
+ end
37
+ end
38
+
39
+ require 'courier'
40
+
41
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
42
+
43
+ RSpec.configure do |config|
44
+ config.use_transactional_fixtures = true
45
+ config.use_transactional_examples = true
46
+ # config.include GritterNotices::RSpecMatcher
47
+ end
@@ -0,0 +1,27 @@
1
+ #Factory.sequence(:email) { |n| "person#{n}@example.com" }
2
+ Factory.sequence(:service_name) { |n| "Service #{n}" }
3
+ Factory.sequence(:template_key) { |n| "template_#{n}" }
4
+ # Factory.sequence(:service_type) { |n| "Service::Type#{n}" }
5
+ # Factory.sequence(:contact_email) { |n| "contact#{n}@example.com" }
6
+ # Factory.sequence(:authentication_email) { |n| "auth#{n}@example.com" }
7
+ # Factory.sequence(:contact_name) { |n| "John #{n} Doe Contact" }
8
+ # Factory.sequence(:url) { |n| "http://localhost/#{n}" }
9
+ # Factory.sequence(:string) { |n| "string#{n}" }
10
+ # Factory.sequence(:token) { |n| "token#{n}" }
11
+ # Factory.sequence(:datetime) { |n| DateTime.now.ago(n.hours) }
12
+ # Factory.sequence(:date) { |n| DateTime.now.ago(n.days).to_date }
13
+ # Factory.sequence(:int) { |n| n }
14
+
15
+
16
+ Factory.define :user do |u|
17
+ u.name 'Bob'
18
+ end
19
+
20
+ Factory.define :template, :class=>'Courier::Template::Base' do |f|
21
+ f.key { Factory.next :template_key }
22
+ end
23
+
24
+ # Factory.define :owner_setting, :class=>'Courier::OwnerSetting' do |u|
25
+ # u.owner {|c| c.association(:user)}
26
+ # u.settings {}
27
+ # end
@@ -0,0 +1,11 @@
1
+ #
2
+ # Simulate gem's existence
3
+ #
4
+ module GritterNotices end
5
+
6
+ module Koala
7
+ module Facebook
8
+ module GraphAPI end
9
+ end
10
+ end
11
+
@@ -0,0 +1,7 @@
1
+ class CreateUsersTable < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :users do |t|
4
+ t.string :name
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,19 @@
1
+ def mock_template *args
2
+ mock Courier::Template::Base, *args
3
+ end
4
+
5
+ def mock_owner_setting *args
6
+ mock_model Courier::OwnerSetting, *args
7
+ end
8
+
9
+ def mock_service *args
10
+ mock Courier::Service::Base, *args
11
+ end
12
+
13
+ def mock_message *args
14
+ mock_model Courier::Message, *args
15
+ end
16
+
17
+ def mock_owner *args
18
+ mock_model User, *args
19
+ end
@@ -0,0 +1,4 @@
1
+ # -*- coding: utf-8 -*-
2
+ class User < ActiveRecord::Base
3
+ has_courier
4
+ end
metadata ADDED
@@ -0,0 +1,333 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: courier
3
+ version: !ruby/object:Gem::Version
4
+ hash: 31
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 2
10
+ version: 0.1.2
11
+ platform: ruby
12
+ authors:
13
+ - Danil Pismenny
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-04-02 00:00:00 +04:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: activerecord
23
+ version_requirements: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ~>
27
+ - !ruby/object:Gem::Version
28
+ hash: 7
29
+ segments:
30
+ - 3
31
+ - 0
32
+ version: "3.0"
33
+ prerelease: false
34
+ type: :runtime
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
+ - !ruby/object:Gem::Dependency
52
+ name: state_machine
53
+ version_requirements: &id003 !ruby/object:Gem::Requirement
54
+ none: false
55
+ requirements:
56
+ - - ~>
57
+ - !ruby/object:Gem::Version
58
+ hash: 51
59
+ segments:
60
+ - 0
61
+ - 10
62
+ - 2
63
+ version: 0.10.2
64
+ prerelease: false
65
+ type: :runtime
66
+ requirement: *id003
67
+ - !ruby/object:Gem::Dependency
68
+ name: pg
69
+ version_requirements: &id004 !ruby/object:Gem::Requirement
70
+ none: false
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ hash: 3
75
+ segments:
76
+ - 0
77
+ version: "0"
78
+ prerelease: false
79
+ type: :development
80
+ requirement: *id004
81
+ - !ruby/object:Gem::Dependency
82
+ name: ruby-debug
83
+ version_requirements: &id005 !ruby/object:Gem::Requirement
84
+ none: false
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ hash: 3
89
+ segments:
90
+ - 0
91
+ version: "0"
92
+ prerelease: false
93
+ type: :development
94
+ requirement: *id005
95
+ - !ruby/object:Gem::Dependency
96
+ name: watchr
97
+ version_requirements: &id006 !ruby/object:Gem::Requirement
98
+ none: false
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ hash: 3
103
+ segments:
104
+ - 0
105
+ version: "0"
106
+ prerelease: false
107
+ type: :development
108
+ requirement: *id006
109
+ - !ruby/object:Gem::Dependency
110
+ name: sqlite3
111
+ version_requirements: &id007 !ruby/object:Gem::Requirement
112
+ none: false
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ hash: 3
117
+ segments:
118
+ - 0
119
+ version: "0"
120
+ prerelease: false
121
+ type: :development
122
+ requirement: *id007
123
+ - !ruby/object:Gem::Dependency
124
+ name: factory_girl
125
+ version_requirements: &id008 !ruby/object:Gem::Requirement
126
+ none: false
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ hash: 3
131
+ segments:
132
+ - 0
133
+ version: "0"
134
+ prerelease: false
135
+ type: :development
136
+ requirement: *id008
137
+ - !ruby/object:Gem::Dependency
138
+ name: shoulda
139
+ version_requirements: &id009 !ruby/object:Gem::Requirement
140
+ none: false
141
+ requirements:
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ hash: 3
145
+ segments:
146
+ - 0
147
+ version: "0"
148
+ prerelease: false
149
+ type: :development
150
+ requirement: *id009
151
+ - !ruby/object:Gem::Dependency
152
+ name: rspec
153
+ version_requirements: &id010 !ruby/object:Gem::Requirement
154
+ none: false
155
+ requirements:
156
+ - - ~>
157
+ - !ruby/object:Gem::Version
158
+ hash: 9
159
+ segments:
160
+ - 2
161
+ - 5
162
+ version: "2.5"
163
+ prerelease: false
164
+ type: :development
165
+ requirement: *id010
166
+ - !ruby/object:Gem::Dependency
167
+ name: rspec-rails
168
+ version_requirements: &id011 !ruby/object:Gem::Requirement
169
+ none: false
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ hash: 3
174
+ segments:
175
+ - 0
176
+ version: "0"
177
+ prerelease: false
178
+ type: :development
179
+ requirement: *id011
180
+ - !ruby/object:Gem::Dependency
181
+ name: bundler
182
+ version_requirements: &id012 !ruby/object:Gem::Requirement
183
+ none: false
184
+ requirements:
185
+ - - ~>
186
+ - !ruby/object:Gem::Version
187
+ hash: 23
188
+ segments:
189
+ - 1
190
+ - 0
191
+ - 0
192
+ version: 1.0.0
193
+ prerelease: false
194
+ type: :development
195
+ requirement: *id012
196
+ - !ruby/object:Gem::Dependency
197
+ name: jeweler
198
+ version_requirements: &id013 !ruby/object:Gem::Requirement
199
+ none: false
200
+ requirements:
201
+ - - ~>
202
+ - !ruby/object:Gem::Version
203
+ hash: 7
204
+ segments:
205
+ - 1
206
+ - 5
207
+ - 2
208
+ version: 1.5.2
209
+ prerelease: false
210
+ type: :development
211
+ requirement: *id013
212
+ - !ruby/object:Gem::Dependency
213
+ name: rcov
214
+ version_requirements: &id014 !ruby/object:Gem::Requirement
215
+ none: false
216
+ requirements:
217
+ - - ">="
218
+ - !ruby/object:Gem::Version
219
+ hash: 3
220
+ segments:
221
+ - 0
222
+ version: "0"
223
+ prerelease: false
224
+ type: :development
225
+ requirement: *id014
226
+ description: !binary |
227
+ 0KHQuNGB0YLQtdC80LAg0YPQv9GA0LDQstC70LXQvdC40Y8g0L/QvtC70YzQ
228
+ t9C+0LLQsNGC0LXQu9GM0YHQutC40LzQuCDQvtC/0L7QstC10YnQtdC90LjR
229
+ j9C80Lgg0Lgg0L/QvtC00L/QuNGB0LrQsNC80Lg=
230
+
231
+ email: danil@orionet.ru
232
+ executables: []
233
+
234
+ extensions: []
235
+
236
+ extra_rdoc_files:
237
+ - LICENSE.txt
238
+ - README.rdoc
239
+ files:
240
+ - .document
241
+ - .rspec
242
+ - .watchr
243
+ - Gemfile
244
+ - LICENSE.txt
245
+ - README.rdoc
246
+ - Rakefile
247
+ - VERSION
248
+ - courier.gemspec
249
+ - lib/courier.rb
250
+ - lib/courier/config.rb
251
+ - lib/courier/engine.rb
252
+ - lib/courier/message.rb
253
+ - lib/courier/owner.rb
254
+ - lib/courier/owner_setting.rb
255
+ - lib/courier/service/active_mailer.rb
256
+ - lib/courier/service/base.rb
257
+ - lib/courier/service/facebook.rb
258
+ - lib/courier/service/gritter_notice.rb
259
+ - lib/courier/template/base.rb
260
+ - lib/generators/courier_generator.rb
261
+ - lib/generators/templates/courier.rb
262
+ - lib/generators/templates/migration.rb
263
+ - spec/courier/config_spec.rb
264
+ - spec/courier/message_spec.rb
265
+ - spec/courier/owner_setting_spec.rb
266
+ - spec/courier/owner_spec.rb
267
+ - spec/courier/service/base_spec.rb
268
+ - spec/courier/service/facebook_spec.rb
269
+ - spec/courier/service/gritter_notice_spec.rb
270
+ - spec/courier/template/base_spec.rb
271
+ - spec/courier_spec.rb
272
+ - spec/examples/example1_spec.rb
273
+ - spec/spec_helper.rb
274
+ - spec/support/factories.rb
275
+ - spec/support/gems_simulation.rb
276
+ - spec/support/migration.rb
277
+ - spec/support/mocks.rb
278
+ - spec/support/user.rb
279
+ has_rdoc: true
280
+ homepage: http://github.com/dapi/courier
281
+ licenses:
282
+ - MIT
283
+ post_install_message:
284
+ rdoc_options: []
285
+
286
+ require_paths:
287
+ - lib
288
+ required_ruby_version: !ruby/object:Gem::Requirement
289
+ none: false
290
+ requirements:
291
+ - - ">="
292
+ - !ruby/object:Gem::Version
293
+ hash: 3
294
+ segments:
295
+ - 0
296
+ version: "0"
297
+ required_rubygems_version: !ruby/object:Gem::Requirement
298
+ none: false
299
+ requirements:
300
+ - - ">="
301
+ - !ruby/object:Gem::Version
302
+ hash: 3
303
+ segments:
304
+ - 0
305
+ version: "0"
306
+ requirements: []
307
+
308
+ rubyforge_project:
309
+ rubygems_version: 1.5.0
310
+ signing_key:
311
+ specification_version: 3
312
+ summary: !binary |
313
+ 0KHQuNGB0YLQtdC80LAg0YPQv9GA0LDQstC70LXQvdC40Y8g0L/QvtC70YzQ
314
+ t9C+0LLQsNGC0LXQu9GM0YHQutC40LzQuCDQvtC/0L7QstC10YnQtdC90LjR
315
+ j9C80Lgg0Lgg0L/QvtC00L/QuNGB0LrQsNC80Lg=
316
+
317
+ test_files:
318
+ - spec/courier/config_spec.rb
319
+ - spec/courier/message_spec.rb
320
+ - spec/courier/owner_setting_spec.rb
321
+ - spec/courier/owner_spec.rb
322
+ - spec/courier/service/base_spec.rb
323
+ - spec/courier/service/facebook_spec.rb
324
+ - spec/courier/service/gritter_notice_spec.rb
325
+ - spec/courier/template/base_spec.rb
326
+ - spec/courier_spec.rb
327
+ - spec/examples/example1_spec.rb
328
+ - spec/spec_helper.rb
329
+ - spec/support/factories.rb
330
+ - spec/support/gems_simulation.rb
331
+ - spec/support/migration.rb
332
+ - spec/support/mocks.rb
333
+ - spec/support/user.rb