suretax 0.2.3 → 1.0.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.
- 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
|