suretax 0.2.3 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.env.example +4 -0
- data/.rubocop.yml +111 -0
- data/Gemfile +1 -1
- data/Gemfile.lock +9 -9
- data/lib/suretax.rb +0 -1
- data/lib/suretax/api.rb +7 -7
- data/lib/suretax/api/cancel_request.rb +7 -7
- data/lib/suretax/api/group.rb +5 -6
- data/lib/suretax/api/item_message.rb +3 -3
- data/lib/suretax/api/request.rb +37 -37
- data/lib/suretax/api/request_item.rb +13 -17
- data/lib/suretax/api/response.rb +18 -19
- data/lib/suretax/api/tax.rb +11 -12
- data/lib/suretax/api/tax_amount.rb +3 -4
- data/lib/suretax/concerns.rb +1 -3
- data/lib/suretax/concerns/validatable.rb +21 -27
- data/lib/suretax/configuration.rb +17 -20
- data/lib/suretax/connection.rb +3 -5
- data/lib/suretax/constants/regulatory_codes.rb +8 -8
- data/lib/suretax/constants/response_groups.rb +6 -6
- data/lib/suretax/constants/sales_type_codes.rb +5 -5
- data/lib/suretax/constants/tax_situs_codes.rb +10 -10
- data/lib/suretax/constants/transaction_type_codes.rb +2 -2
- data/lib/suretax/response.rb +7 -10
- data/lib/suretax/version.rb +1 -1
- data/spec/lib/suretax/api/group_spec.rb +21 -22
- data/spec/lib/suretax/api/request_item_spec.rb +10 -12
- data/spec/lib/suretax/api/request_item_validations_spec.rb +73 -76
- data/spec/lib/suretax/api/request_spec.rb +62 -66
- data/spec/lib/suretax/api/request_validations_spec.rb +141 -143
- data/spec/lib/suretax/api/response_spec.rb +48 -52
- data/spec/lib/suretax/api/tax_amount_spec.rb +12 -12
- data/spec/lib/suretax/api/tax_spec.rb +26 -28
- data/spec/lib/suretax/configuration_spec.rb +21 -24
- data/spec/lib/suretax/connection_spec.rb +11 -15
- data/spec/lib/suretax/response_spec.rb +27 -31
- data/spec/spec_helper.rb +16 -17
- data/spec/support/cancellation_helper.rb +0 -1
- data/spec/support/connection_shared_examples.rb +8 -10
- data/spec/support/request_helper.rb +13 -14
- data/spec/support/suretax_helper.rb +2 -4
- data/spec/support/validations_shared_examples.rb +12 -12
- data/suretax.gemspec +10 -8
- metadata +7 -7
- data/.travis.yml +0 -13
@@ -1,14 +1,13 @@
|
|
1
|
-
require
|
1
|
+
require "spec_helper"
|
2
2
|
|
3
3
|
describe Suretax::Api::Request do
|
4
|
-
|
5
4
|
let(:args) { suretax_valid_request_params }
|
6
5
|
let(:api_request) { Suretax::Api::Request.new(args) }
|
7
6
|
let(:valid_params) { valid_encoded_test_request_body }
|
8
7
|
|
9
|
-
describe
|
8
|
+
describe "accessors" do
|
10
9
|
{
|
11
|
-
|
10
|
+
business_unit: "testing",
|
12
11
|
client_number: suretax_client_number,
|
13
12
|
client_tracking: "track",
|
14
13
|
data_month: "7",
|
@@ -20,83 +19,81 @@ describe Suretax::Api::Request do
|
|
20
19
|
return_file_code: "0",
|
21
20
|
total_revenue: "40",
|
22
21
|
validation_key: suretax_key
|
23
|
-
}.each_pair do |key,value|
|
22
|
+
}.each_pair do |key, value|
|
24
23
|
|
25
24
|
it "##{key} should return the correct value" do
|
26
|
-
api_request.send("#{key
|
25
|
+
api_request.send("#{key}=", value)
|
27
26
|
expect(api_request.send(key)).to eql(value)
|
28
27
|
end
|
29
|
-
|
30
28
|
end
|
31
29
|
end
|
32
30
|
|
33
|
-
context
|
34
|
-
it
|
31
|
+
context "configuration" do
|
32
|
+
it "should use Suretax.configuration by default" do
|
35
33
|
req = Suretax::Api::Request.new
|
36
34
|
expect(req.client_number).to eql(suretax_client_number)
|
37
35
|
end
|
38
36
|
|
39
|
-
it
|
40
|
-
client_number =
|
37
|
+
it "should allow the default configuration to be overridden" do
|
38
|
+
client_number = "1122334455"
|
41
39
|
|
42
|
-
req = Suretax::Api::Request.new(
|
40
|
+
req = Suretax::Api::Request.new(client_number: client_number)
|
43
41
|
|
44
42
|
expect(req.client_number).to eql(client_number)
|
45
43
|
end
|
46
44
|
end
|
47
45
|
|
48
|
-
context
|
49
|
-
describe
|
50
|
-
it
|
46
|
+
context "defaults" do
|
47
|
+
describe "#client_number" do
|
48
|
+
it "should have :client_number set to the configuration default" do
|
51
49
|
req = Suretax::Api::Request.new
|
52
50
|
expect(req.client_number).to eql(suretax_client_number)
|
53
51
|
end
|
54
52
|
|
55
|
-
it
|
56
|
-
client_no =
|
57
|
-
req = Suretax::Api::Request.new(
|
53
|
+
it "should allow you to override the default" do
|
54
|
+
client_no = "9911991199"
|
55
|
+
req = Suretax::Api::Request.new(client_number: client_no)
|
58
56
|
expect(req.client_number).to eql(client_no)
|
59
57
|
end
|
60
58
|
end
|
61
59
|
|
62
|
-
describe
|
63
|
-
it
|
60
|
+
describe "#validation_key" do
|
61
|
+
it "should have :validation_key set to the configuration default" do
|
64
62
|
req = Suretax::Api::Request.new
|
65
63
|
expect(req.validation_key).to eql(suretax_key)
|
66
64
|
end
|
67
65
|
|
68
|
-
it
|
69
|
-
key =
|
70
|
-
req = Suretax::Api::Request.new(
|
66
|
+
it "should allow you to override the default" do
|
67
|
+
key = "9911991199-abdce-000000000"
|
68
|
+
req = Suretax::Api::Request.new(validation_key: key)
|
71
69
|
expect(req.validation_key).to eql(key)
|
72
70
|
end
|
73
71
|
end
|
74
72
|
|
75
|
-
describe
|
73
|
+
describe "#return_file_code" do
|
76
74
|
it 'should have :return_file_code set to "0"' do
|
77
75
|
req = Suretax::Api::Request.new
|
78
|
-
expect(req.return_file_code).to eql(
|
76
|
+
expect(req.return_file_code).to eql("0")
|
79
77
|
end
|
80
78
|
|
81
|
-
it
|
82
|
-
req = Suretax::Api::Request.new(
|
83
|
-
expect(req.return_file_code).to eql(
|
79
|
+
it "should allow you to override the default" do
|
80
|
+
req = Suretax::Api::Request.new(return_file_code: "Q")
|
81
|
+
expect(req.return_file_code).to eql("Q")
|
84
82
|
end
|
85
83
|
end
|
86
|
-
|
87
84
|
end
|
88
85
|
|
89
|
-
describe
|
90
|
-
it
|
86
|
+
describe "#params" do
|
87
|
+
it "should return a valid parameters hash" do
|
91
88
|
expect(api_request.params).to eql(valid_params)
|
92
89
|
end
|
93
90
|
end
|
94
91
|
|
95
92
|
describe "#submit" do
|
96
|
-
subject{ api_request.submit }
|
93
|
+
subject { api_request.submit }
|
97
94
|
let(:api_path) { suretax_post_path }
|
98
95
|
|
99
|
-
before(:each) do
|
96
|
+
before(:each) do
|
100
97
|
stub_request(:post, "#{suretax_url}#{api_path}").to_return(
|
101
98
|
status: 200,
|
102
99
|
body: suretax_wrap_response(valid_test_response_body.to_json)
|
@@ -107,10 +104,10 @@ describe Suretax::Api::Request do
|
|
107
104
|
should be_a_kind_of(Suretax::Api::Response)
|
108
105
|
end
|
109
106
|
|
110
|
-
its(
|
107
|
+
its("groups.size") { should >= 1 }
|
111
108
|
|
112
109
|
it "should have taxes" do
|
113
|
-
subject.groups.map(&:taxes).should_not be_empty
|
110
|
+
subject.groups.map(&:taxes).should_not be_empty
|
114
111
|
end
|
115
112
|
|
116
113
|
it "should have a transaction number" do
|
@@ -120,15 +117,15 @@ describe Suretax::Api::Request do
|
|
120
117
|
end
|
121
118
|
|
122
119
|
describe "#rollback" do
|
123
|
-
subject{ api_request.rollback }
|
120
|
+
subject { api_request.rollback }
|
124
121
|
|
125
122
|
context "before submitting the request" do
|
126
|
-
before(:each){ api_request.send(:response).should be_nil }
|
127
|
-
it{ should be_nil }
|
123
|
+
before(:each) { api_request.send(:response).should be_nil }
|
124
|
+
it { should be_nil }
|
128
125
|
end
|
129
126
|
|
130
127
|
context "after submitting the request" do
|
131
|
-
before(:each) do
|
128
|
+
before(:each) do
|
132
129
|
stub_request(:post, "#{suretax_url}#{suretax_post_path}").to_return(
|
133
130
|
status: 200,
|
134
131
|
body: suretax_wrap_response(valid_test_response_body.to_json)
|
@@ -138,62 +135,61 @@ describe Suretax::Api::Request do
|
|
138
135
|
|
139
136
|
it "should issue a cancel request" do
|
140
137
|
Suretax::Api::CancelRequest.should_receive(:new).
|
141
|
-
with(transaction: api_request.response.transaction,
|
142
|
-
client_number: api_request.client_number,
|
143
|
-
validation_key: api_request.validation_key,
|
138
|
+
with(transaction: api_request.response.transaction,
|
139
|
+
client_number: api_request.client_number,
|
140
|
+
validation_key: api_request.validation_key,
|
144
141
|
client_tracking: api_request.client_tracking).
|
145
|
-
and_return(
|
142
|
+
and_return(double(Suretax::Api::CancelRequest, submit: true))
|
146
143
|
subject
|
147
144
|
end
|
148
145
|
end
|
149
146
|
end
|
150
147
|
|
151
|
-
describe
|
148
|
+
describe "#data_month" do
|
152
149
|
subject { Suretax::Api::Request.new(options) }
|
153
150
|
|
154
|
-
context
|
155
|
-
let(:options) { { data_month:
|
156
|
-
its(:data_month) { should eql
|
151
|
+
context "when the value is supplied" do
|
152
|
+
let(:options) { { data_month: "04" } }
|
153
|
+
its(:data_month) { should eql "04" }
|
157
154
|
end
|
158
155
|
|
159
|
-
context
|
160
|
-
let(:options) { {
|
156
|
+
context "when the value is not supplied" do
|
157
|
+
let(:options) { {} }
|
161
158
|
|
162
|
-
context
|
159
|
+
context "and Suretax is configured for production" do
|
163
160
|
before(:each) { Suretax.configuration.stub(:test?).and_return(false) }
|
164
|
-
its(:data_month) { should eql Date.today.strftime(
|
161
|
+
its(:data_month) { should eql Date.today.strftime("%m") }
|
165
162
|
end
|
166
163
|
|
167
|
-
context
|
164
|
+
context "and Suretax is not configured for production" do
|
168
165
|
before(:each) { Suretax.configuration.stub(:test?).and_return(true) }
|
169
|
-
its(:data_month) { should eql Date.today.prev_month.strftime(
|
166
|
+
its(:data_month) { should eql Date.today.prev_month.strftime("%m") }
|
170
167
|
end
|
171
168
|
end
|
172
169
|
end
|
173
170
|
|
174
|
-
describe
|
171
|
+
describe "#data_year" do
|
175
172
|
subject { Suretax::Api::Request.new(options) }
|
176
173
|
|
177
|
-
context
|
178
|
-
let(:options) { { data_year:
|
179
|
-
its(:data_year) { should eql
|
180
|
-
its(:data_month) { should eql
|
174
|
+
context "when the value is supplied" do
|
175
|
+
let(:options) { { data_year: "2012", data_month: "01" } }
|
176
|
+
its(:data_year) { should eql "2012" }
|
177
|
+
its(:data_month) { should eql "01" }
|
181
178
|
end
|
182
179
|
|
183
|
-
context
|
184
|
-
before(:each) { Date.stub(:today) { Date.new(2014,
|
185
|
-
let(:options) { {
|
180
|
+
context "when the value is not supplied" do
|
181
|
+
before(:each) { Date.stub(:today) { Date.new(2014, 0o1, 0o1) } }
|
182
|
+
let(:options) { {} }
|
186
183
|
|
187
|
-
context
|
184
|
+
context "and Suretax is configured for production" do
|
188
185
|
before(:each) { Suretax.configuration.stub(:test?).and_return(false) }
|
189
|
-
its(:data_year) { should eql Date.today.strftime(
|
186
|
+
its(:data_year) { should eql Date.today.strftime("%Y") }
|
190
187
|
end
|
191
188
|
|
192
|
-
context
|
189
|
+
context "and Suretax is not configured for production" do
|
193
190
|
before(:each) { Suretax.configuration.stub(:test?).and_return(true) }
|
194
|
-
its(:data_year) { should eql Date.today.prev_month.strftime(
|
191
|
+
its(:data_year) { should eql Date.today.prev_month.strftime("%Y") }
|
195
192
|
end
|
196
193
|
end
|
197
194
|
end
|
198
195
|
end
|
199
|
-
|
@@ -1,7 +1,6 @@
|
|
1
|
-
require
|
1
|
+
require "spec_helper"
|
2
2
|
|
3
3
|
describe "Suretax API Request Validations" do
|
4
|
-
|
5
4
|
let(:request) do
|
6
5
|
Suretax::Api::Request.new(suretax_valid_request_params)
|
7
6
|
end
|
@@ -16,158 +15,158 @@ describe "Suretax API Request Validations" do
|
|
16
15
|
context "when invalid" do
|
17
16
|
it "shows no errors" do
|
18
17
|
item = Suretax::Api::RequestItem.new(suretax_valid_request_item_params)
|
19
|
-
item.customer_number =
|
20
|
-
item.regulatory_code =
|
18
|
+
item.customer_number = "a" * 9
|
19
|
+
item.regulatory_code = 11_111
|
21
20
|
request.items = [item]
|
22
21
|
|
23
22
|
expect(request.errors.any?).to eq true
|
24
23
|
expect(request.errors.messages).to \
|
25
|
-
eq([%
|
24
|
+
eq([%(Invalid items: ["Invalid customer_number: aaaaaaaaa, Invalid regulatory_code: 11111"])])
|
26
25
|
end
|
27
26
|
end
|
28
27
|
end
|
29
28
|
|
30
|
-
describe
|
31
|
-
context
|
32
|
-
it
|
33
|
-
request.client_number =
|
29
|
+
describe "#client_number" do
|
30
|
+
context "when present" do
|
31
|
+
it "can be ten characters or less" do
|
32
|
+
request.client_number = "1234567890"
|
34
33
|
expect(request.errors.any?).to eq false
|
35
34
|
|
36
|
-
request.client_number =
|
35
|
+
request.client_number = "12345678901"
|
37
36
|
expect(request.errors.any?).to eq true
|
38
|
-
expect(request.errors.messages).to eq [%
|
37
|
+
expect(request.errors.messages).to eq [%(Invalid client_number: 12345678901)]
|
39
38
|
end
|
40
39
|
|
41
|
-
it
|
42
|
-
request.client_number =
|
40
|
+
it "must be a number" do
|
41
|
+
request.client_number = "1"
|
43
42
|
expect(request.errors.any?).to eq false
|
44
43
|
|
45
|
-
request.client_number =
|
44
|
+
request.client_number = "abcdefghij"
|
46
45
|
expect(request.errors.any?).to eq true
|
47
|
-
expect(request.errors.messages).to eq [%
|
46
|
+
expect(request.errors.messages).to eq [%(Invalid client_number: abcdefghij)]
|
48
47
|
end
|
49
48
|
end
|
50
49
|
|
51
|
-
context
|
52
|
-
it
|
50
|
+
context "when absent" do
|
51
|
+
it "should fail validation" do
|
53
52
|
request.client_number = nil
|
54
53
|
expect(request.errors.any?).to eq true
|
55
|
-
expect(request.errors.messages).to eq [%
|
54
|
+
expect(request.errors.messages).to eq [%(Invalid client_number: nil)]
|
56
55
|
end
|
57
56
|
end
|
58
57
|
end
|
59
58
|
|
60
|
-
describe
|
61
|
-
context
|
62
|
-
it
|
59
|
+
describe "#business_unit" do
|
60
|
+
context "when present" do
|
61
|
+
it "can be blank" do
|
63
62
|
request.business_unit = nil
|
64
63
|
expect(request.errors.any?).to eq false
|
65
64
|
|
66
|
-
request.business_unit =
|
65
|
+
request.business_unit = ""
|
67
66
|
expect(request.errors.any?).to eq false
|
68
67
|
end
|
69
68
|
|
70
|
-
it
|
71
|
-
request.business_unit =
|
69
|
+
it "can be 20 characters or less" do
|
70
|
+
request.business_unit = "a" * 5
|
72
71
|
expect(request.errors.any?).to eq false
|
73
72
|
|
74
|
-
request.business_unit =
|
73
|
+
request.business_unit = "a" * 20
|
75
74
|
expect(request.errors.any?).to eq false
|
76
75
|
|
77
|
-
request.business_unit =
|
76
|
+
request.business_unit = "a" * 21
|
78
77
|
expect(request.errors.any?).to eq true
|
79
|
-
expect(request.errors.messages).to eq [%
|
78
|
+
expect(request.errors.messages).to eq [%(Invalid business_unit: #{'a' * 21})]
|
80
79
|
end
|
81
80
|
|
82
|
-
it
|
83
|
-
request.business_unit =
|
81
|
+
it "must be alphanumeric" do
|
82
|
+
request.business_unit = "aa124"
|
84
83
|
expect(request.errors.any?).to eq false
|
85
84
|
|
86
|
-
request.business_unit =
|
85
|
+
request.business_unit = "a_34"
|
87
86
|
expect(request.errors.any?).to eq true
|
88
|
-
expect(request.errors.messages).to eq [%
|
87
|
+
expect(request.errors.messages).to eq [%(Invalid business_unit: a_34)]
|
89
88
|
end
|
90
89
|
end
|
91
90
|
|
92
|
-
context
|
93
|
-
it
|
91
|
+
context "when absent" do
|
92
|
+
it "should pass validation" do
|
94
93
|
request.business_unit = nil
|
95
94
|
expect(request.errors.any?).to eq false
|
96
95
|
end
|
97
96
|
end
|
98
97
|
end
|
99
98
|
|
100
|
-
describe
|
101
|
-
context
|
102
|
-
it
|
103
|
-
request.validation_key =
|
99
|
+
describe "#validation_key" do
|
100
|
+
context "when present" do
|
101
|
+
it "must be a maximum of 36 characters" do
|
102
|
+
request.validation_key = "a" * 36
|
104
103
|
expect(request.errors.any?).to eq false
|
105
104
|
|
106
|
-
request.validation_key =
|
105
|
+
request.validation_key = "a" * 37
|
107
106
|
expect(request.errors.any?).to eq true
|
108
|
-
expect(request.errors.messages).to eq [%
|
107
|
+
expect(request.errors.messages).to eq [%(Invalid validation_key: #{'a' * 37})]
|
109
108
|
end
|
110
109
|
end
|
111
110
|
|
112
|
-
context
|
113
|
-
it
|
111
|
+
context "when absent" do
|
112
|
+
it "should fail validation" do
|
114
113
|
request.validation_key = nil
|
115
114
|
expect(request.errors.any?).to eq true
|
116
|
-
expect(request.errors.messages).to eq [%
|
115
|
+
expect(request.errors.messages).to eq [%(Invalid validation_key: nil)]
|
117
116
|
end
|
118
117
|
end
|
119
118
|
end
|
120
119
|
|
121
|
-
describe
|
122
|
-
context
|
123
|
-
it
|
124
|
-
request.data_year =
|
120
|
+
describe "#data_year" do
|
121
|
+
context "when present" do
|
122
|
+
it "must be a number" do
|
123
|
+
request.data_year = "b" * 4
|
125
124
|
expect(request.errors.any?).to eq true
|
126
|
-
expect(request.errors.messages).to eq [%
|
125
|
+
expect(request.errors.messages).to eq [%(Invalid data_year: #{'b' * 4})]
|
127
126
|
|
128
|
-
request.data_year =
|
127
|
+
request.data_year = "-" * 4
|
129
128
|
expect(request.errors.any?).to eq true
|
130
|
-
expect(request.errors.messages).to eq [%
|
129
|
+
expect(request.errors.messages).to eq [%(Invalid data_year: #{'-' * 4})]
|
131
130
|
|
132
|
-
request.data_year =
|
131
|
+
request.data_year = "2014"
|
133
132
|
expect(request.errors.any?).to eq false
|
134
133
|
end
|
135
134
|
|
136
|
-
it
|
137
|
-
request.data_year =
|
135
|
+
it "must be exactly four digits" do
|
136
|
+
request.data_year = "2014"
|
138
137
|
expect(request.errors.any?).to eq false
|
139
138
|
|
140
|
-
request.data_year =
|
139
|
+
request.data_year = "20120"
|
141
140
|
expect(request.errors.any?).to eq true
|
142
|
-
expect(request.errors.messages).to eq [%
|
141
|
+
expect(request.errors.messages).to eq [%(Invalid data_year: 20120)]
|
143
142
|
|
144
|
-
request.data_year =
|
143
|
+
request.data_year = "201"
|
145
144
|
expect(request.errors.any?).to eq true
|
146
|
-
expect(request.errors.messages).to eq [%
|
145
|
+
expect(request.errors.messages).to eq [%(Invalid data_year: 201)]
|
147
146
|
end
|
148
147
|
|
149
|
-
it
|
150
|
-
request.data_year =
|
148
|
+
it "must be in the range 1990-2050" do
|
149
|
+
request.data_year = "1989"
|
151
150
|
expect(request.errors.any?).to eq true
|
152
|
-
expect(request.errors.messages).to eq [%
|
151
|
+
expect(request.errors.messages).to eq [%(Invalid data_year: 1989)]
|
153
152
|
|
154
|
-
request.data_year =
|
153
|
+
request.data_year = "2051"
|
155
154
|
expect(request.errors.any?).to eq true
|
156
|
-
expect(request.errors.messages).to eq [%
|
155
|
+
expect(request.errors.messages).to eq [%(Invalid data_year: 2051)]
|
157
156
|
end
|
158
157
|
end
|
159
158
|
|
160
|
-
context
|
161
|
-
it
|
159
|
+
context "when absent" do
|
160
|
+
it "fails validation" do
|
162
161
|
request.data_year = nil
|
163
162
|
expect(request.errors.any?).to eq true
|
164
|
-
expect(request.errors.messages).to eq [%
|
163
|
+
expect(request.errors.messages).to eq [%(Invalid data_year: nil)]
|
165
164
|
end
|
166
165
|
end
|
167
166
|
end
|
168
167
|
|
169
|
-
describe
|
170
|
-
context
|
168
|
+
describe "#data_month" do
|
169
|
+
context "when present" do
|
171
170
|
it "must allow all valid month numbers" do
|
172
171
|
(1..12).each do |month_number|
|
173
172
|
request.data_month = month_number.to_s
|
@@ -185,199 +184,198 @@ describe "Suretax API Request Validations" do
|
|
185
184
|
end
|
186
185
|
end
|
187
186
|
|
188
|
-
it
|
189
|
-
request.data_month =
|
187
|
+
it "must not allow invalid months" do
|
188
|
+
request.data_month = "13"
|
190
189
|
expect(request.errors.any?).to eq true
|
191
|
-
expect(request.errors.messages).to eq [%
|
190
|
+
expect(request.errors.messages).to eq [%(Invalid data_month: 13)]
|
192
191
|
end
|
193
192
|
end
|
194
193
|
|
195
|
-
context
|
196
|
-
it
|
194
|
+
context "when absent" do
|
195
|
+
it "should fail validation" do
|
197
196
|
request.data_month = nil
|
198
197
|
expect(request.errors.any?).to eq true
|
199
|
-
expect(request.errors.messages).to eq [%
|
198
|
+
expect(request.errors.messages).to eq [%(Invalid data_month: nil)]
|
200
199
|
end
|
201
200
|
end
|
202
201
|
end
|
203
202
|
|
204
|
-
describe
|
205
|
-
context
|
206
|
-
it
|
207
|
-
request.total_revenue =
|
203
|
+
describe "#total_revenue" do
|
204
|
+
context "when present" do
|
205
|
+
it "can only be digits and the minus symbol" do
|
206
|
+
request.total_revenue = "abcdefghi.jklm"
|
208
207
|
expect(request.errors.any?).to eq true
|
209
|
-
expect(request.errors.messages).to eq [%
|
208
|
+
expect(request.errors.messages).to eq [%(Invalid total_revenue: abcdefghi.jklm)]
|
210
209
|
|
211
|
-
request.total_revenue =
|
210
|
+
request.total_revenue = "+1234"
|
212
211
|
expect(request.errors.any?).to eq true
|
213
|
-
expect(request.errors.messages).to eq [%
|
212
|
+
expect(request.errors.messages).to eq [%(Invalid total_revenue: +1234)]
|
214
213
|
end
|
215
214
|
|
216
|
-
it
|
217
|
-
request.total_revenue =
|
215
|
+
it "can have up to four decimal places" do
|
216
|
+
request.total_revenue = "123456789.1234"
|
218
217
|
expect(request.errors.any?).to eq false
|
219
218
|
|
220
|
-
request.total_revenue =
|
219
|
+
request.total_revenue = "123456789.1"
|
221
220
|
expect(request.errors.any?).to eq false
|
222
221
|
end
|
223
222
|
|
224
|
-
it
|
225
|
-
request.total_revenue =
|
223
|
+
it "must not have more than four decimal places" do
|
224
|
+
request.total_revenue = "123456789.12345"
|
226
225
|
expect(request.errors.any?).to eq true
|
227
|
-
expect(request.errors.messages).to eq [%
|
226
|
+
expect(request.errors.messages).to eq [%(Invalid total_revenue: 123456789.12345)]
|
228
227
|
end
|
229
228
|
|
230
|
-
context
|
231
|
-
it
|
232
|
-
request.total_revenue =
|
229
|
+
context "and when the value is positive" do
|
230
|
+
it "should have no symbol" do
|
231
|
+
request.total_revenue = "+23456789.1234"
|
233
232
|
expect(request.errors.any?).to eq true
|
234
|
-
expect(request.errors.messages).to eq [%
|
233
|
+
expect(request.errors.messages).to eq [%(Invalid total_revenue: +23456789.1234)]
|
235
234
|
end
|
236
235
|
|
237
|
-
it
|
238
|
-
request.total_revenue =
|
236
|
+
it "can have up to nine positions to the left of the decimal" do
|
237
|
+
request.total_revenue = "123456789.1234"
|
239
238
|
expect(request.errors.any?).to eq false
|
240
239
|
|
241
|
-
request.total_revenue =
|
240
|
+
request.total_revenue = "1.1234"
|
242
241
|
expect(request.errors.any?).to eq false
|
243
242
|
|
244
|
-
request.total_revenue =
|
243
|
+
request.total_revenue = "1234567890.1234"
|
245
244
|
expect(request.errors.any?).to eq true
|
246
|
-
expect(request.errors.messages).to eq [%
|
245
|
+
expect(request.errors.messages).to eq [%(Invalid total_revenue: 1234567890.1234)]
|
247
246
|
end
|
248
247
|
|
249
|
-
it
|
250
|
-
request.total_revenue =
|
248
|
+
it "can be a simple integer" do
|
249
|
+
request.total_revenue = "1"
|
251
250
|
expect(request.errors.any?).to eq false
|
252
251
|
end
|
253
|
-
|
254
252
|
end
|
255
253
|
|
256
|
-
context
|
254
|
+
context "and when the value is negative" do
|
257
255
|
it 'should have a "minus" symbol in the first position' do
|
258
|
-
request.total_revenue =
|
256
|
+
request.total_revenue = "-23456789.1234"
|
259
257
|
expect(request.errors.any?).to eq false
|
260
258
|
end
|
261
259
|
|
262
|
-
it
|
263
|
-
request.total_revenue =
|
260
|
+
it "must have nine positions to the left of the decimal" do
|
261
|
+
request.total_revenue = "-23456789.1234"
|
264
262
|
expect(request.errors.any?).to eq false
|
265
263
|
end
|
266
264
|
|
267
|
-
it
|
268
|
-
request.total_revenue =
|
265
|
+
it "must not have more than nine positions to the left of the decimal" do
|
266
|
+
request.total_revenue = "-234567890.1234"
|
269
267
|
expect(request.errors.any?).to eq true
|
270
|
-
expect(request.errors.messages).to eq [%
|
268
|
+
expect(request.errors.messages).to eq [%(Invalid total_revenue: -234567890.1234)]
|
271
269
|
end
|
272
270
|
end
|
273
271
|
end
|
274
272
|
|
275
|
-
context
|
276
|
-
it
|
273
|
+
context "when absent" do
|
274
|
+
it "should fail validation" do
|
277
275
|
request.total_revenue = nil
|
278
276
|
expect(request.errors.any?).to eq true
|
279
|
-
expect(request.errors.messages).to eq [%
|
277
|
+
expect(request.errors.messages).to eq [%(Invalid total_revenue: nil)]
|
280
278
|
end
|
281
279
|
end
|
282
280
|
end
|
283
281
|
|
284
|
-
describe
|
285
|
-
context
|
286
|
-
it
|
287
|
-
request.client_tracking =
|
282
|
+
describe "#client_tracking" do
|
283
|
+
context "when present" do
|
284
|
+
it "must not be longer than 100 characters" do
|
285
|
+
request.client_tracking = "a" * 101
|
288
286
|
expect(request.errors.any?).to eq true
|
289
|
-
expect(request.errors.messages).to eq [%
|
287
|
+
expect(request.errors.messages).to eq [%(Invalid client_tracking: #{'a' * 101})]
|
290
288
|
end
|
291
289
|
end
|
292
290
|
|
293
|
-
context
|
294
|
-
it
|
291
|
+
context "when absent" do
|
292
|
+
it "should pass validation" do
|
295
293
|
request.client_tracking = nil
|
296
294
|
expect(request.errors.any?).to eq false
|
297
295
|
end
|
298
296
|
end
|
299
297
|
end
|
300
298
|
|
301
|
-
describe
|
302
|
-
context
|
303
|
-
it
|
299
|
+
describe "#return_file_code" do
|
300
|
+
context "when present" do
|
301
|
+
it "must be a valid code" do
|
304
302
|
request.return_file_code = 0
|
305
303
|
expect(request.errors.any?).to eq false
|
306
304
|
|
307
|
-
request.return_file_code =
|
305
|
+
request.return_file_code = "Q"
|
308
306
|
expect(request.errors.any?).to eq false
|
309
307
|
end
|
310
308
|
|
311
|
-
it
|
312
|
-
request.return_file_code =
|
309
|
+
it "cannot be any other value" do
|
310
|
+
request.return_file_code = "a"
|
313
311
|
expect(request.errors.any?).to eq true
|
314
|
-
expect(request.errors.messages).to eq [%
|
312
|
+
expect(request.errors.messages).to eq [%(Invalid return_file_code: a)]
|
315
313
|
|
316
314
|
request.return_file_code = 1
|
317
315
|
expect(request.errors.any?).to eq true
|
318
|
-
expect(request.errors.messages).to eq [%
|
316
|
+
expect(request.errors.messages).to eq [%(Invalid return_file_code: 1)]
|
319
317
|
|
320
|
-
request.return_file_code =
|
318
|
+
request.return_file_code = "_"
|
321
319
|
expect(request.errors.any?).to eq true
|
322
|
-
expect(request.errors.messages).to eq [%
|
320
|
+
expect(request.errors.messages).to eq [%(Invalid return_file_code: _)]
|
323
321
|
end
|
324
322
|
end
|
325
323
|
|
326
|
-
context
|
327
|
-
it
|
324
|
+
context "when absent" do
|
325
|
+
it "should fail validation" do
|
328
326
|
request.return_file_code = nil
|
329
327
|
expect(request.errors.any?).to eq true
|
330
|
-
expect(request.errors.messages).to eq [%
|
328
|
+
expect(request.errors.messages).to eq [%(Invalid return_file_code: nil)]
|
331
329
|
end
|
332
330
|
end
|
333
331
|
end
|
334
332
|
|
335
|
-
describe
|
336
|
-
context
|
333
|
+
describe "#response_group" do
|
334
|
+
context "when present" do
|
337
335
|
it "must be a valid code" do
|
338
|
-
%w
|
336
|
+
%w[00 01 02 03].each do |code|
|
339
337
|
request.response_group = code
|
340
338
|
expect(request.errors.any?).to eq false
|
341
339
|
end
|
342
340
|
|
343
|
-
%w
|
341
|
+
%w[a 04 _].each do |wrong_value|
|
344
342
|
request.response_group = wrong_value
|
345
343
|
expect(request.errors.any?).to eq true
|
346
|
-
expect(request.errors.messages).to eq [%
|
344
|
+
expect(request.errors.messages).to eq [%(Invalid response_group: #{wrong_value})]
|
347
345
|
end
|
348
346
|
end
|
349
347
|
end
|
350
348
|
|
351
|
-
context
|
352
|
-
it
|
349
|
+
context "when absent" do
|
350
|
+
it "should fail validation" do
|
353
351
|
request.response_group = nil
|
354
352
|
expect(request.errors.any?).to eq true
|
355
|
-
expect(request.errors.messages).to eq [%
|
353
|
+
expect(request.errors.messages).to eq [%(Invalid response_group: nil)]
|
356
354
|
end
|
357
355
|
end
|
358
356
|
end
|
359
357
|
|
360
|
-
describe
|
361
|
-
context
|
358
|
+
describe "#response_type" do
|
359
|
+
context "when present" do
|
362
360
|
it "must be a valid code combination'" do
|
363
|
-
%w
|
361
|
+
%w[D1 D9 S1 S9].each do |type|
|
364
362
|
request.response_type = type
|
365
363
|
expect(request.errors.any?).to eq false
|
366
364
|
end
|
367
365
|
|
368
|
-
%w
|
366
|
+
%w[a D0 S10 _].each do |bad_type|
|
369
367
|
request.response_type = bad_type
|
370
368
|
expect(request.errors.any?).to eq true
|
371
|
-
expect(request.errors.messages).to eq [%
|
369
|
+
expect(request.errors.messages).to eq [%(Invalid response_type: #{bad_type})]
|
372
370
|
end
|
373
371
|
end
|
374
372
|
end
|
375
373
|
|
376
|
-
context
|
377
|
-
it
|
374
|
+
context "when absent" do
|
375
|
+
it "should fail validation" do
|
378
376
|
request.response_type = nil
|
379
377
|
expect(request.errors.any?).to eq true
|
380
|
-
expect(request.errors.messages).to eq [%
|
378
|
+
expect(request.errors.messages).to eq [%(Invalid response_type: nil)]
|
381
379
|
end
|
382
380
|
end
|
383
381
|
end
|