cheddargetter_client_rails 0.2.1 → 0.2.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.
- data/Gemfile +3 -2
- data/Gemfile.lock +26 -14
- data/Rakefile +2 -0
- data/VERSION +1 -1
- data/cheddargetter_client_rails.gemspec +11 -7
- data/lib/cheddargetter_client_rails.rb +5 -3
- data/lib/cheddargetter_client_rails/subscription.rb +43 -6
- data/spec/cheddargetter_client_rails/subscription_spec.rb +163 -3
- data/spec/spec_helper.rb +3 -2
- metadata +39 -9
- data/lib/rails/record_identifier.rb +0 -7
- data/spec/record_identifier_spec.rb +0 -51
data/Gemfile
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
source "http://rubygems.org"
|
|
2
2
|
gem "activesupport", ">= 2.3.5"
|
|
3
3
|
gem "cheddargetter_client", ">= 0.0.2"
|
|
4
|
+
gem 'country_select', '>= 1.1.3'
|
|
4
5
|
|
|
5
6
|
group :development do
|
|
7
|
+
gem 'debugger'
|
|
6
8
|
gem "rspec"
|
|
7
9
|
gem "bundler"
|
|
8
10
|
gem "jeweler"
|
|
9
|
-
|
|
10
|
-
end
|
|
11
|
+
end
|
data/Gemfile.lock
CHANGED
|
@@ -1,18 +1,30 @@
|
|
|
1
1
|
GEM
|
|
2
2
|
remote: http://rubygems.org/
|
|
3
3
|
specs:
|
|
4
|
-
activesupport (3.
|
|
4
|
+
activesupport (3.2.11)
|
|
5
|
+
i18n (~> 0.6)
|
|
6
|
+
multi_json (~> 1.0)
|
|
5
7
|
cheddargetter_client (0.0.2)
|
|
6
8
|
crack
|
|
7
9
|
crack (>= 0.3.2)
|
|
8
10
|
httparty
|
|
9
11
|
httparty (>= 0.10.0)
|
|
12
|
+
columnize (0.3.6)
|
|
13
|
+
country_select (1.1.3)
|
|
10
14
|
crack (0.3.2)
|
|
11
|
-
|
|
15
|
+
debugger (1.3.0)
|
|
16
|
+
columnize (>= 0.3.1)
|
|
17
|
+
debugger-linecache (~> 1.1.1)
|
|
18
|
+
debugger-ruby_core_source (~> 1.1.7)
|
|
19
|
+
debugger-linecache (1.1.2)
|
|
20
|
+
debugger-ruby_core_source (>= 1.1.1)
|
|
21
|
+
debugger-ruby_core_source (1.1.7)
|
|
22
|
+
diff-lcs (1.1.3)
|
|
12
23
|
git (1.2.5)
|
|
13
|
-
httparty (0.10.
|
|
24
|
+
httparty (0.10.2)
|
|
14
25
|
multi_json (~> 1.0)
|
|
15
|
-
multi_xml
|
|
26
|
+
multi_xml (>= 0.5.2)
|
|
27
|
+
i18n (0.6.1)
|
|
16
28
|
jeweler (1.8.4)
|
|
17
29
|
bundler (~> 1.0)
|
|
18
30
|
git (>= 1.2.5)
|
|
@@ -22,17 +34,16 @@ GEM
|
|
|
22
34
|
multi_json (1.5.0)
|
|
23
35
|
multi_xml (0.5.2)
|
|
24
36
|
rake (10.0.3)
|
|
25
|
-
rcov (0.9.9)
|
|
26
37
|
rdoc (3.12)
|
|
27
38
|
json (~> 1.4)
|
|
28
|
-
rspec (2.
|
|
29
|
-
rspec-core (~> 2.
|
|
30
|
-
rspec-expectations (~> 2.
|
|
31
|
-
rspec-mocks (~> 2.
|
|
32
|
-
rspec-core (2.
|
|
33
|
-
rspec-expectations (2.
|
|
34
|
-
diff-lcs (~> 1.1.
|
|
35
|
-
rspec-mocks (2.
|
|
39
|
+
rspec (2.12.0)
|
|
40
|
+
rspec-core (~> 2.12.0)
|
|
41
|
+
rspec-expectations (~> 2.12.0)
|
|
42
|
+
rspec-mocks (~> 2.12.0)
|
|
43
|
+
rspec-core (2.12.2)
|
|
44
|
+
rspec-expectations (2.12.1)
|
|
45
|
+
diff-lcs (~> 1.1.3)
|
|
46
|
+
rspec-mocks (2.12.2)
|
|
36
47
|
|
|
37
48
|
PLATFORMS
|
|
38
49
|
ruby
|
|
@@ -41,6 +52,7 @@ DEPENDENCIES
|
|
|
41
52
|
activesupport (>= 2.3.5)
|
|
42
53
|
bundler
|
|
43
54
|
cheddargetter_client (>= 0.0.2)
|
|
55
|
+
country_select (>= 1.1.3)
|
|
56
|
+
debugger
|
|
44
57
|
jeweler
|
|
45
|
-
rcov
|
|
46
58
|
rspec
|
data/Rakefile
CHANGED
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.2.
|
|
1
|
+
0.2.2
|
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
|
|
6
6
|
Gem::Specification.new do |s|
|
|
7
7
|
s.name = "cheddargetter_client_rails"
|
|
8
|
-
s.version = "0.2.
|
|
8
|
+
s.version = "0.2.2"
|
|
9
9
|
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
|
11
11
|
s.authors = ["Brent Wooden"]
|
|
12
|
-
s.date = "2013-01-
|
|
12
|
+
s.date = "2013-01-28"
|
|
13
13
|
s.description = "Integrates CheddarGetter api with Active Record. Uses cheddargetter_client_ruby."
|
|
14
14
|
s.email = "brent.wooden@gmail.com"
|
|
15
15
|
s.extra_rdoc_files = [
|
|
@@ -36,13 +36,11 @@ Gem::Specification.new do |s|
|
|
|
36
36
|
"lib/generators/cheddargetter/templates/cheddargetter.yml",
|
|
37
37
|
"lib/generators/cheddargetter/templates/cheddargetter_client.rb",
|
|
38
38
|
"lib/rails/naming.rb",
|
|
39
|
-
"lib/rails/record_identifier.rb",
|
|
40
39
|
"spec/cheddargetter_client_rails/subscription_spec.rb",
|
|
41
40
|
"spec/cheddargetter_client_rails_spec.rb",
|
|
42
41
|
"spec/fixtures/users.yml",
|
|
43
42
|
"spec/generator_spec.rb",
|
|
44
43
|
"spec/naming_spec.rb",
|
|
45
|
-
"spec/record_identifier_spec.rb",
|
|
46
44
|
"spec/spec_helper.rb"
|
|
47
45
|
]
|
|
48
46
|
s.homepage = "http://github.com/BrentW/cheddargetter_client_rails"
|
|
@@ -57,28 +55,34 @@ Gem::Specification.new do |s|
|
|
|
57
55
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
|
58
56
|
s.add_runtime_dependency(%q<activesupport>, [">= 2.3.5"])
|
|
59
57
|
s.add_runtime_dependency(%q<cheddargetter_client>, [">= 0.0.2"])
|
|
58
|
+
s.add_runtime_dependency(%q<country_select>, [">= 1.1.3"])
|
|
59
|
+
s.add_development_dependency(%q<debugger>, [">= 0"])
|
|
60
60
|
s.add_development_dependency(%q<rspec>, [">= 0"])
|
|
61
61
|
s.add_development_dependency(%q<bundler>, [">= 0"])
|
|
62
62
|
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
|
63
|
-
s.add_development_dependency(%q<rcov>, [">= 0"])
|
|
64
63
|
s.add_runtime_dependency(%q<cheddargetter_client>, [">= 0.0.2"])
|
|
64
|
+
s.add_runtime_dependency(%q<country_select>, [">= 1.1.3"])
|
|
65
65
|
else
|
|
66
66
|
s.add_dependency(%q<activesupport>, [">= 2.3.5"])
|
|
67
67
|
s.add_dependency(%q<cheddargetter_client>, [">= 0.0.2"])
|
|
68
|
+
s.add_dependency(%q<country_select>, [">= 1.1.3"])
|
|
69
|
+
s.add_dependency(%q<debugger>, [">= 0"])
|
|
68
70
|
s.add_dependency(%q<rspec>, [">= 0"])
|
|
69
71
|
s.add_dependency(%q<bundler>, [">= 0"])
|
|
70
72
|
s.add_dependency(%q<jeweler>, [">= 0"])
|
|
71
|
-
s.add_dependency(%q<rcov>, [">= 0"])
|
|
72
73
|
s.add_dependency(%q<cheddargetter_client>, [">= 0.0.2"])
|
|
74
|
+
s.add_dependency(%q<country_select>, [">= 1.1.3"])
|
|
73
75
|
end
|
|
74
76
|
else
|
|
75
77
|
s.add_dependency(%q<activesupport>, [">= 2.3.5"])
|
|
76
78
|
s.add_dependency(%q<cheddargetter_client>, [">= 0.0.2"])
|
|
79
|
+
s.add_dependency(%q<country_select>, [">= 1.1.3"])
|
|
80
|
+
s.add_dependency(%q<debugger>, [">= 0"])
|
|
77
81
|
s.add_dependency(%q<rspec>, [">= 0"])
|
|
78
82
|
s.add_dependency(%q<bundler>, [">= 0"])
|
|
79
83
|
s.add_dependency(%q<jeweler>, [">= 0"])
|
|
80
|
-
s.add_dependency(%q<rcov>, [">= 0"])
|
|
81
84
|
s.add_dependency(%q<cheddargetter_client>, [">= 0.0.2"])
|
|
85
|
+
s.add_dependency(%q<country_select>, [">= 1.1.3"])
|
|
82
86
|
end
|
|
83
87
|
end
|
|
84
88
|
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
require 'active_support'
|
|
2
|
-
require 'action_controller/record_identifier'
|
|
3
2
|
require 'cheddargetter_client'
|
|
4
|
-
require 'rails/record_identifier'
|
|
5
3
|
require 'rails/naming'
|
|
6
4
|
|
|
7
5
|
module CheddargetterClientRails
|
|
8
6
|
autoload :Subscription, 'cheddargetter_client_rails/subscription'
|
|
9
7
|
|
|
10
8
|
def self.included(base)
|
|
9
|
+
attr_accessor :has_subscription_options
|
|
11
10
|
base.extend ClassMethods
|
|
12
11
|
|
|
13
12
|
def subscription
|
|
@@ -102,6 +101,8 @@ module CheddargetterClientRails
|
|
|
102
101
|
|
|
103
102
|
module ClassMethods
|
|
104
103
|
def has_subscription(args = {})
|
|
104
|
+
self.class.send(:attr_accessor, :has_subscription_options)
|
|
105
|
+
self.has_subscription_options = args
|
|
105
106
|
self.customer_code_column = args.delete(:customerCode) || :id
|
|
106
107
|
raise ArgumentError.new("Record does not respond to #{customer_code_column.to_s}.") if !responds_to_customer_code_column?
|
|
107
108
|
|
|
@@ -118,6 +119,7 @@ module CheddargetterClientRails
|
|
|
118
119
|
self.shared_columns = shared
|
|
119
120
|
|
|
120
121
|
attr_accessor :skip_cheddargetter
|
|
122
|
+
attr_accessible :subscription
|
|
121
123
|
|
|
122
124
|
validate :validate_subscription
|
|
123
125
|
after_create :create_subscription
|
|
@@ -126,7 +128,7 @@ module CheddargetterClientRails
|
|
|
126
128
|
end
|
|
127
129
|
|
|
128
130
|
def responds_to_customer_code_column?
|
|
129
|
-
self.instance_methods.include?(customer_code_column.
|
|
131
|
+
self.instance_methods.include?(customer_code_column.to_sym) ||
|
|
130
132
|
self.column_names.include?(customer_code_column.to_s)
|
|
131
133
|
end
|
|
132
134
|
|
|
@@ -39,7 +39,9 @@ module CheddargetterClientRails
|
|
|
39
39
|
:ccState,
|
|
40
40
|
:customerCode,
|
|
41
41
|
:email,
|
|
42
|
-
:zip
|
|
42
|
+
:zip,
|
|
43
|
+
:ccExpirationMonth,
|
|
44
|
+
:ccExpirationYear
|
|
43
45
|
|
|
44
46
|
validates_presence_of :firstName,
|
|
45
47
|
:lastName,
|
|
@@ -47,14 +49,21 @@ module CheddargetterClientRails
|
|
|
47
49
|
:planCode
|
|
48
50
|
#:customerCode, generally we call valid before unique identifier is called
|
|
49
51
|
|
|
50
|
-
validates_presence_of :ccNumber,
|
|
51
|
-
:ccExpiration,
|
|
52
|
-
:zip
|
|
53
|
-
|
|
54
52
|
validate :unexpired
|
|
55
53
|
|
|
56
54
|
validate :validates_presence_of_humanized
|
|
55
|
+
|
|
56
|
+
validates_presence_of :ccNumber,
|
|
57
|
+
:ccExpiration,
|
|
58
|
+
:zip, :if => :paid_plan?
|
|
57
59
|
|
|
60
|
+
def paid_plan?
|
|
61
|
+
if planCode
|
|
62
|
+
plans = CGClient.plans_get
|
|
63
|
+
!plans.plan(planCode)[:isFree]
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
58
67
|
def unexpired
|
|
59
68
|
if ccExpiration.present?
|
|
60
69
|
month, year = ccExpiration.split("/").collect{|string| string.to_i }
|
|
@@ -106,7 +115,7 @@ module CheddargetterClientRails
|
|
|
106
115
|
end
|
|
107
116
|
|
|
108
117
|
def new_record?
|
|
109
|
-
!Subscription.
|
|
118
|
+
!CheddargetterClientRails::Subscription.get(customerCode)
|
|
110
119
|
end
|
|
111
120
|
|
|
112
121
|
def save
|
|
@@ -204,5 +213,33 @@ module CheddargetterClientRails
|
|
|
204
213
|
val if val.present?
|
|
205
214
|
end.compact.present?
|
|
206
215
|
end
|
|
216
|
+
|
|
217
|
+
def ccExpirationMonth=(month)
|
|
218
|
+
if !expiration_in_valid_format? && expiration_in_valid_year_format?
|
|
219
|
+
@ccExpiration = month + ccExpiration
|
|
220
|
+
elsif !expiration_in_valid_format?
|
|
221
|
+
@ccExpiration = (month + '/')
|
|
222
|
+
end
|
|
223
|
+
end
|
|
224
|
+
|
|
225
|
+
def ccExpirationYear=(year)
|
|
226
|
+
if !expiration_in_valid_format? && expiration_in_valid_month_format?
|
|
227
|
+
@ccExpiration = ccExpiration + year
|
|
228
|
+
elsif !expiration_in_valid_format?
|
|
229
|
+
@ccExpiration = ('/' + year)
|
|
230
|
+
end
|
|
231
|
+
end
|
|
232
|
+
|
|
233
|
+
def expiration_in_valid_format?
|
|
234
|
+
ccExpiration.match(/^\d\d\/\d\d\d\d$/)
|
|
235
|
+
end
|
|
236
|
+
|
|
237
|
+
def expiration_in_valid_month_format?
|
|
238
|
+
ccExpiration.match(/^\d\d\/$/)
|
|
239
|
+
end
|
|
240
|
+
|
|
241
|
+
def expiration_in_valid_year_format?
|
|
242
|
+
ccExpiration.match(/^\/\d\d\d\d$/)
|
|
243
|
+
end
|
|
207
244
|
end
|
|
208
245
|
end
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
require 'spec_helper'
|
|
2
2
|
|
|
3
3
|
describe CheddargetterClientRails::Subscription do
|
|
4
|
+
before { ActiveRecord::Base.stub(:connection).and_return mock(:columns => [], :table_exists? => 'true') }
|
|
5
|
+
|
|
4
6
|
before {
|
|
5
7
|
class TestUser < ActiveRecord::Base
|
|
6
8
|
attr_accessor :customer_code, :first_name, :last_name, :plan_code, :email
|
|
@@ -19,7 +21,6 @@ describe CheddargetterClientRails::Subscription do
|
|
|
19
21
|
end
|
|
20
22
|
}
|
|
21
23
|
|
|
22
|
-
before { ActiveRecord::Base.stub(:connection).and_return mock(:columns => []) }
|
|
23
24
|
|
|
24
25
|
let(:user) { TestUser.new }
|
|
25
26
|
let(:subscription) { CheddargetterClientRails::Subscription.new }
|
|
@@ -47,7 +48,7 @@ describe CheddargetterClientRails::Subscription do
|
|
|
47
48
|
before {
|
|
48
49
|
subscription.stub(:add_errors_or_return_valid_response).and_return true
|
|
49
50
|
subscription.should_receive(:add_errors_or_return_valid_response)
|
|
50
|
-
CGClient.should_receive(:
|
|
51
|
+
CGClient.should_receive(:customers_new)
|
|
51
52
|
}
|
|
52
53
|
|
|
53
54
|
it { subject }
|
|
@@ -58,7 +59,7 @@ describe CheddargetterClientRails::Subscription do
|
|
|
58
59
|
before {
|
|
59
60
|
subscription.stub(:add_errors_or_return_valid_response).and_return true
|
|
60
61
|
subscription.should_receive(:add_errors_or_return_valid_response)
|
|
61
|
-
CGClient.should_receive(:
|
|
62
|
+
CGClient.should_receive(:customers_edit)
|
|
62
63
|
}
|
|
63
64
|
|
|
64
65
|
it { subject }
|
|
@@ -239,4 +240,163 @@ describe CheddargetterClientRails::Subscription do
|
|
|
239
240
|
it { should be_true }
|
|
240
241
|
end
|
|
241
242
|
end
|
|
243
|
+
|
|
244
|
+
describe 'ccExpirationMonth=(month)' do
|
|
245
|
+
let(:month) { '44' }
|
|
246
|
+
subject { user.subscription.ccExpiration }
|
|
247
|
+
|
|
248
|
+
context "when there is a value in ccExpiration" do
|
|
249
|
+
context 'when it is already in valid MM/YYYY format' do
|
|
250
|
+
before { user.subscription.ccExpiration = "44/4444"}
|
|
251
|
+
before { user.subscription.ccExpirationMonth = month }
|
|
252
|
+
it { should eq('44/4444')}
|
|
253
|
+
end
|
|
254
|
+
|
|
255
|
+
context 'when it is /YYYY format' do
|
|
256
|
+
before { user.subscription.ccExpiration = "/4444"}
|
|
257
|
+
before { user.subscription.ccExpirationMonth = month }
|
|
258
|
+
it { should eq('44/4444')}
|
|
259
|
+
end
|
|
260
|
+
|
|
261
|
+
context 'when it is in an odd format' do
|
|
262
|
+
before { user.subscription.ccExpiration = "ase"}
|
|
263
|
+
before { user.subscription.ccExpirationMonth = month }
|
|
264
|
+
it { should eq('44/')}
|
|
265
|
+
end
|
|
266
|
+
|
|
267
|
+
context 'when it is already in valid month format' do
|
|
268
|
+
before { user.subscription.ccExpiration = "33/"}
|
|
269
|
+
before { user.subscription.ccExpirationMonth = month }
|
|
270
|
+
it { should eq('44/')}
|
|
271
|
+
end
|
|
272
|
+
end
|
|
273
|
+
|
|
274
|
+
context 'when there is not a value in ccExpiration' do
|
|
275
|
+
before { user.subscription.ccExpiration = ""}
|
|
276
|
+
before { user.subscription.ccExpirationMonth = month }
|
|
277
|
+
it { should eq('44/')}
|
|
278
|
+
end
|
|
279
|
+
end
|
|
280
|
+
|
|
281
|
+
describe'ccExpirationYear=(year)' do
|
|
282
|
+
let(:year) { '4444' }
|
|
283
|
+
subject { user.subscription.ccExpiration }
|
|
284
|
+
|
|
285
|
+
context "when there is a value in ccExpiration" do
|
|
286
|
+
context 'when it is already in valid MM/YYYY format' do
|
|
287
|
+
before { user.subscription.ccExpiration = "44/4444"}
|
|
288
|
+
before { user.subscription.ccExpirationYear = year }
|
|
289
|
+
it { should eq('44/4444')}
|
|
290
|
+
end
|
|
291
|
+
|
|
292
|
+
context 'when it is in MM/ format' do
|
|
293
|
+
before { user.subscription.ccExpiration = "44/"}
|
|
294
|
+
before { user.subscription.ccExpirationYear = year }
|
|
295
|
+
it { should eq('44/4444')}
|
|
296
|
+
end
|
|
297
|
+
|
|
298
|
+
context 'when it is in an odd format' do
|
|
299
|
+
before { user.subscription.ccExpiration = "ase"}
|
|
300
|
+
before { user.subscription.ccExpirationYear = year }
|
|
301
|
+
it { should eq('/4444')}
|
|
302
|
+
end
|
|
303
|
+
|
|
304
|
+
context 'when it is already in valid year format' do
|
|
305
|
+
before { user.subscription.ccExpiration = "/4444"}
|
|
306
|
+
before { user.subscription.ccExpirationYear = year }
|
|
307
|
+
it { should eq('/4444')}
|
|
308
|
+
end
|
|
309
|
+
end
|
|
310
|
+
|
|
311
|
+
context 'when there is not a value in ccExpiration' do
|
|
312
|
+
before { user.subscription.ccExpiration = ""}
|
|
313
|
+
before { user.subscription.ccExpirationYear = year }
|
|
314
|
+
it { should eq('/4444')}
|
|
315
|
+
end
|
|
316
|
+
|
|
317
|
+
end
|
|
318
|
+
|
|
319
|
+
describe 'expiration_in_valid_format?' do
|
|
320
|
+
subject { user.subscription.expiration_in_valid_format? }
|
|
321
|
+
context 'when in valid format' do
|
|
322
|
+
before { user.subscription.ccExpiration = "44/4444"}
|
|
323
|
+
it { should be_true }
|
|
324
|
+
end
|
|
325
|
+
|
|
326
|
+
context 'when not in valid format' do
|
|
327
|
+
context 'with just month' do
|
|
328
|
+
before { user.subscription.ccExpiration = "44/"}
|
|
329
|
+
it { should be_false }
|
|
330
|
+
|
|
331
|
+
end
|
|
332
|
+
|
|
333
|
+
context 'with just year' do
|
|
334
|
+
before { user.subscription.ccExpiration = "/4444"}
|
|
335
|
+
it { should be_false }
|
|
336
|
+
end
|
|
337
|
+
|
|
338
|
+
context 'with odd thigns' do
|
|
339
|
+
before { user.subscription.ccExpiration = "4a/3333"}
|
|
340
|
+
it { should be_false }
|
|
341
|
+
end
|
|
342
|
+
|
|
343
|
+
context 'when blank' do
|
|
344
|
+
before { user.subscription.ccExpiration = ""}
|
|
345
|
+
it { should be_false }
|
|
346
|
+
end
|
|
347
|
+
end
|
|
348
|
+
|
|
349
|
+
end
|
|
350
|
+
|
|
351
|
+
describe 'expiration_in_valid_month_format?' do
|
|
352
|
+
subject { user.subscription.expiration_in_valid_month_format? }
|
|
353
|
+
|
|
354
|
+
context 'when in valid format' do
|
|
355
|
+
before { user.subscription.ccExpiration = '44/'}
|
|
356
|
+
it { should be_true }
|
|
357
|
+
end
|
|
358
|
+
|
|
359
|
+
context 'when not in valid_format' do
|
|
360
|
+
context 'with junk' do
|
|
361
|
+
before { user.subscription.ccExpiration = 'asefas'}
|
|
362
|
+
it { should be_false }
|
|
363
|
+
end
|
|
364
|
+
|
|
365
|
+
context 'when blank' do
|
|
366
|
+
before { user.subscription.ccExpiration = ''}
|
|
367
|
+
it { should be_false }
|
|
368
|
+
end
|
|
369
|
+
|
|
370
|
+
context 'with full date' do
|
|
371
|
+
before { user.subscription.ccExpiration = '44/4444'}
|
|
372
|
+
it { should be_false }
|
|
373
|
+
end
|
|
374
|
+
end
|
|
375
|
+
end
|
|
376
|
+
|
|
377
|
+
describe 'expiration_in_valid_year_format?' do
|
|
378
|
+
subject { user.subscription.expiration_in_valid_year_format? }
|
|
379
|
+
|
|
380
|
+
context 'when in valid format' do
|
|
381
|
+
before { user.subscription.ccExpiration = '/4444'}
|
|
382
|
+
it { should be_true }
|
|
383
|
+
end
|
|
384
|
+
|
|
385
|
+
context 'when not in valid_format' do
|
|
386
|
+
context 'with junk' do
|
|
387
|
+
before { user.subscription.ccExpiration = 'asefas'}
|
|
388
|
+
it { should be_false }
|
|
389
|
+
end
|
|
390
|
+
|
|
391
|
+
context 'when blank' do
|
|
392
|
+
before { user.subscription.ccExpiration = ''}
|
|
393
|
+
it { should be_false }
|
|
394
|
+
end
|
|
395
|
+
|
|
396
|
+
context 'with full date' do
|
|
397
|
+
before { user.subscription.ccExpiration = '44/4444'}
|
|
398
|
+
it { should be_false }
|
|
399
|
+
end
|
|
400
|
+
end
|
|
401
|
+
end
|
|
242
402
|
end
|
data/spec/spec_helper.rb
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
|
2
2
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
|
3
3
|
|
|
4
|
+
require 'rubygems'
|
|
4
5
|
require 'rspec'
|
|
5
6
|
require 'active_record'
|
|
6
7
|
require 'cheddargetter_client_rails'
|
|
@@ -9,7 +10,7 @@ CGEmail = "michael@expectedbehavior.com"
|
|
|
9
10
|
CGProductCode = 'GEM_TEST'
|
|
10
11
|
CGPassword = "DROlOAeQpWey6J2cqTyEzH"
|
|
11
12
|
CGFreePlanId = "a6a816c8-6d14-11e0-bcd4-40406799fa1e"
|
|
12
|
-
CGClient =
|
|
13
|
+
CGClient = Cheddargetter::Client.new(:product_code => CGProductCode,
|
|
13
14
|
:username => CGEmail,
|
|
14
15
|
:password => CGPassword)
|
|
15
16
|
|
|
@@ -24,5 +25,5 @@ RSpec.configure do |config|
|
|
|
24
25
|
end
|
|
25
26
|
|
|
26
27
|
def stub_cheddargetter
|
|
27
|
-
|
|
28
|
+
Cheddargetter::Client.stub(:new).and_return CGClient
|
|
28
29
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: cheddargetter_client_rails
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.2.
|
|
4
|
+
version: 0.2.2
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2013-01-
|
|
12
|
+
date: 2013-01-28 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: activesupport
|
|
@@ -44,7 +44,23 @@ dependencies:
|
|
|
44
44
|
- !ruby/object:Gem::Version
|
|
45
45
|
version: 0.0.2
|
|
46
46
|
- !ruby/object:Gem::Dependency
|
|
47
|
-
name:
|
|
47
|
+
name: country_select
|
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
|
49
|
+
none: false
|
|
50
|
+
requirements:
|
|
51
|
+
- - ! '>='
|
|
52
|
+
- !ruby/object:Gem::Version
|
|
53
|
+
version: 1.1.3
|
|
54
|
+
type: :runtime
|
|
55
|
+
prerelease: false
|
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
57
|
+
none: false
|
|
58
|
+
requirements:
|
|
59
|
+
- - ! '>='
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: 1.1.3
|
|
62
|
+
- !ruby/object:Gem::Dependency
|
|
63
|
+
name: debugger
|
|
48
64
|
requirement: !ruby/object:Gem::Requirement
|
|
49
65
|
none: false
|
|
50
66
|
requirements:
|
|
@@ -60,7 +76,7 @@ dependencies:
|
|
|
60
76
|
- !ruby/object:Gem::Version
|
|
61
77
|
version: '0'
|
|
62
78
|
- !ruby/object:Gem::Dependency
|
|
63
|
-
name:
|
|
79
|
+
name: rspec
|
|
64
80
|
requirement: !ruby/object:Gem::Requirement
|
|
65
81
|
none: false
|
|
66
82
|
requirements:
|
|
@@ -76,7 +92,7 @@ dependencies:
|
|
|
76
92
|
- !ruby/object:Gem::Version
|
|
77
93
|
version: '0'
|
|
78
94
|
- !ruby/object:Gem::Dependency
|
|
79
|
-
name:
|
|
95
|
+
name: bundler
|
|
80
96
|
requirement: !ruby/object:Gem::Requirement
|
|
81
97
|
none: false
|
|
82
98
|
requirements:
|
|
@@ -92,7 +108,7 @@ dependencies:
|
|
|
92
108
|
- !ruby/object:Gem::Version
|
|
93
109
|
version: '0'
|
|
94
110
|
- !ruby/object:Gem::Dependency
|
|
95
|
-
name:
|
|
111
|
+
name: jeweler
|
|
96
112
|
requirement: !ruby/object:Gem::Requirement
|
|
97
113
|
none: false
|
|
98
114
|
requirements:
|
|
@@ -123,6 +139,22 @@ dependencies:
|
|
|
123
139
|
- - ! '>='
|
|
124
140
|
- !ruby/object:Gem::Version
|
|
125
141
|
version: 0.0.2
|
|
142
|
+
- !ruby/object:Gem::Dependency
|
|
143
|
+
name: country_select
|
|
144
|
+
requirement: !ruby/object:Gem::Requirement
|
|
145
|
+
none: false
|
|
146
|
+
requirements:
|
|
147
|
+
- - ! '>='
|
|
148
|
+
- !ruby/object:Gem::Version
|
|
149
|
+
version: 1.1.3
|
|
150
|
+
type: :runtime
|
|
151
|
+
prerelease: false
|
|
152
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
153
|
+
none: false
|
|
154
|
+
requirements:
|
|
155
|
+
- - ! '>='
|
|
156
|
+
- !ruby/object:Gem::Version
|
|
157
|
+
version: 1.1.3
|
|
126
158
|
description: Integrates CheddarGetter api with Active Record. Uses cheddargetter_client_ruby.
|
|
127
159
|
email: brent.wooden@gmail.com
|
|
128
160
|
executables: []
|
|
@@ -150,13 +182,11 @@ files:
|
|
|
150
182
|
- lib/generators/cheddargetter/templates/cheddargetter.yml
|
|
151
183
|
- lib/generators/cheddargetter/templates/cheddargetter_client.rb
|
|
152
184
|
- lib/rails/naming.rb
|
|
153
|
-
- lib/rails/record_identifier.rb
|
|
154
185
|
- spec/cheddargetter_client_rails/subscription_spec.rb
|
|
155
186
|
- spec/cheddargetter_client_rails_spec.rb
|
|
156
187
|
- spec/fixtures/users.yml
|
|
157
188
|
- spec/generator_spec.rb
|
|
158
189
|
- spec/naming_spec.rb
|
|
159
|
-
- spec/record_identifier_spec.rb
|
|
160
190
|
- spec/spec_helper.rb
|
|
161
191
|
homepage: http://github.com/BrentW/cheddargetter_client_rails
|
|
162
192
|
licenses:
|
|
@@ -173,7 +203,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
173
203
|
version: '0'
|
|
174
204
|
segments:
|
|
175
205
|
- 0
|
|
176
|
-
hash:
|
|
206
|
+
hash: 971876707136878326
|
|
177
207
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
178
208
|
none: false
|
|
179
209
|
requirements:
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
module ActionController::RecordIdentifier
|
|
2
|
-
def dom_class(record_or_class, prefix = nil)
|
|
3
|
-
singular = ActiveModel::Naming.singular(record_or_class)
|
|
4
|
-
value = prefix ? "#{prefix}#{JOIN}#{singular}" : singular
|
|
5
|
-
value == "cheddargetter_client_rails_subscription" ? "subscription" : value
|
|
6
|
-
end
|
|
7
|
-
end
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
|
2
|
-
|
|
3
|
-
describe "RecordIdentifier" do
|
|
4
|
-
before {
|
|
5
|
-
class TestUser < ActiveRecord::Base
|
|
6
|
-
attr_accessor :customer_code, :first_name, :last_name, :plan_code, :email
|
|
7
|
-
|
|
8
|
-
def self.column_names
|
|
9
|
-
[]
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
has_subscription :customerCode => :customer_code,
|
|
13
|
-
:firstName => :first_name,
|
|
14
|
-
:lastName => :last_name,
|
|
15
|
-
:ccFirstName => :first_name,
|
|
16
|
-
:ccLastName => :last_name,
|
|
17
|
-
:planCode => :plan_code
|
|
18
|
-
|
|
19
|
-
end
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
before { ActiveRecord::Base.stub(:connection).and_return mock(:columns => []) }
|
|
23
|
-
|
|
24
|
-
describe 'dom_class(record)' do
|
|
25
|
-
subject { ActionController::RecordIdentifier.dom_class(value) }
|
|
26
|
-
|
|
27
|
-
context 'called with class' do
|
|
28
|
-
context 'called with a CheddargetterClientRails::Subscription class' do
|
|
29
|
-
let(:value) { CheddargetterClientRails::Subscription }
|
|
30
|
-
it { should eq("subscription") }
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
context 'called with other classes' do
|
|
34
|
-
let(:value) { TestUser }
|
|
35
|
-
it { should eq("test_user") }
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
context 'called with object' do
|
|
40
|
-
context 'called with a CheddargetterClientRails::Subscription class' do
|
|
41
|
-
let(:value) { CheddargetterClientRails::Subscription.new }
|
|
42
|
-
it { should eq("subscription") }
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
context 'called with other classes' do
|
|
46
|
-
let(:value) { TestUser.new }
|
|
47
|
-
it { should eq("test_user") }
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
end
|