allscripts_unity_client 1.0.3
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/.gitignore +20 -0
- data/.travis.yml +3 -0
- data/Gemfile +2 -0
- data/LICENSE +22 -0
- data/README.md +180 -0
- data/Rakefile +7 -0
- data/allscripts_unity_client.gemspec +39 -0
- data/lib/allscripts_unity_client.rb +43 -0
- data/lib/allscripts_unity_client/client.rb +594 -0
- data/lib/allscripts_unity_client/client_driver.rb +95 -0
- data/lib/allscripts_unity_client/json_client_driver.rb +110 -0
- data/lib/allscripts_unity_client/json_unity_request.rb +33 -0
- data/lib/allscripts_unity_client/json_unity_response.rb +27 -0
- data/lib/allscripts_unity_client/soap_client_driver.rb +128 -0
- data/lib/allscripts_unity_client/timezone.rb +99 -0
- data/lib/allscripts_unity_client/unity_request.rb +63 -0
- data/lib/allscripts_unity_client/unity_response.rb +110 -0
- data/lib/allscripts_unity_client/utilities.rb +66 -0
- data/lib/allscripts_unity_client/version.rb +3 -0
- data/spec/allscripts_unity_client_spec.rb +57 -0
- data/spec/client_driver_spec.rb +71 -0
- data/spec/client_spec.rb +406 -0
- data/spec/factories/allscripts_unity_client_parameters_factory.rb +13 -0
- data/spec/factories/client_driver_factory.rb +14 -0
- data/spec/factories/client_factory.rb +7 -0
- data/spec/factories/json_client_driver_factory.rb +3 -0
- data/spec/factories/json_unity_request_factory.rb +3 -0
- data/spec/factories/json_unity_response_factory.rb +3 -0
- data/spec/factories/magic_request_factory.rb +33 -0
- data/spec/factories/soap_client_driver_factory.rb +3 -0
- data/spec/factories/timezone_factory.rb +7 -0
- data/spec/factories/unity_request_factory.rb +10 -0
- data/spec/factories/unity_response_factory.rb +8 -0
- data/spec/fixtures/attributes_hash.yml +15 -0
- data/spec/fixtures/date_hash.yml +8 -0
- data/spec/fixtures/date_string_hash.yml +8 -0
- data/spec/fixtures/error.json +3 -0
- data/spec/fixtures/get_providers.json +69 -0
- data/spec/fixtures/get_providers.xml +119 -0
- data/spec/fixtures/get_providers_json.yml +65 -0
- data/spec/fixtures/get_providers_xml.yml +270 -0
- data/spec/fixtures/get_security_token.json +1 -0
- data/spec/fixtures/get_security_token.xml +7 -0
- data/spec/fixtures/get_server_info.json +10 -0
- data/spec/fixtures/get_server_info.xml +40 -0
- data/spec/fixtures/get_server_info_json.yml +8 -0
- data/spec/fixtures/get_server_info_xml.yml +55 -0
- data/spec/fixtures/no_attributes_hash.yml +7 -0
- data/spec/fixtures/retire_security_token.json +1 -0
- data/spec/fixtures/retire_security_token.xml +5 -0
- data/spec/fixtures/soap_fault.xml +13 -0
- data/spec/fixtures/string_keyed_hash.yml +8 -0
- data/spec/fixtures/symbol_keyed_hash.yml +8 -0
- data/spec/json_client_driver_spec.rb +209 -0
- data/spec/json_unity_request_spec.rb +37 -0
- data/spec/json_unity_response_spec.rb +44 -0
- data/spec/soap_client_driver_spec.rb +201 -0
- data/spec/spec_helper.rb +44 -0
- data/spec/support/fixture_loader.rb +22 -0
- data/spec/support/shared_examples_for_client_driver.rb +139 -0
- data/spec/support/shared_examples_for_unity_request.rb +94 -0
- data/spec/support/shared_examples_for_unity_response.rb +26 -0
- data/spec/timezone_spec.rb +161 -0
- data/spec/unity_request_spec.rb +37 -0
- data/spec/unity_response_spec.rb +36 -0
- data/spec/utilities_spec.rb +69 -0
- metadata +323 -0
@@ -0,0 +1,201 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'SOAPClientDriver' do
|
4
|
+
include Savon::SpecHelper
|
5
|
+
it_behaves_like 'a client driver'
|
6
|
+
|
7
|
+
subject do
|
8
|
+
client_driver = FactoryGirl.build(:soap_client_driver)
|
9
|
+
client_driver.security_token = SecureRandom.uuid
|
10
|
+
client_driver
|
11
|
+
end
|
12
|
+
|
13
|
+
let(:get_server_info) { FixtureLoader.load_file("get_server_info.xml") }
|
14
|
+
let(:get_security_token) { FixtureLoader.load_file("get_security_token.xml") }
|
15
|
+
let(:retire_security_token) { FixtureLoader.load_file("retire_security_token.xml") }
|
16
|
+
let(:soap_fault) { FixtureLoader.load_file("soap_fault.xml") }
|
17
|
+
let(:url) { Faker::Internet.url }
|
18
|
+
|
19
|
+
before(:all) { savon.mock! }
|
20
|
+
after(:all) { savon.unmock! }
|
21
|
+
|
22
|
+
describe '#initialize' do
|
23
|
+
context 'when nil is given for base_unity_url' do
|
24
|
+
it { expect { FactoryGirl.build(:soap_client_driver, :base_unity_url => nil) }.to raise_error(ArgumentError) }
|
25
|
+
end
|
26
|
+
|
27
|
+
context 'when nil is given for username' do
|
28
|
+
it { expect { FactoryGirl.build(:soap_client_driver, :username => nil) }.to raise_error(ArgumentError) }
|
29
|
+
end
|
30
|
+
|
31
|
+
context 'when nil is given for password' do
|
32
|
+
it { expect { FactoryGirl.build(:soap_client_driver, :password => nil) }.to raise_error(ArgumentError) }
|
33
|
+
end
|
34
|
+
|
35
|
+
context 'when nil is given for appname' do
|
36
|
+
it { expect { FactoryGirl.build(:soap_client_driver, :appname => nil) }.to raise_error(ArgumentError) }
|
37
|
+
end
|
38
|
+
|
39
|
+
context 'when given a base_unity_url with a trailing /' do
|
40
|
+
it 'sets @base_unity_url without the trailing /' do
|
41
|
+
client_driver = FactoryGirl.build(:soap_client_driver, :base_unity_url => "http://www.example.com/")
|
42
|
+
expect(client_driver.base_unity_url).to eq("http://www.example.com")
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
context 'when nil is given for timezone' do
|
47
|
+
it 'sets @timezone to UTC' do
|
48
|
+
client_driver = FactoryGirl.build(:soap_client_driver, :timezone => nil)
|
49
|
+
utc_timezone = FactoryGirl.build(:timezone, :zone_identifier => "UTC")
|
50
|
+
expect(client_driver.timezone.tzinfo).to eq(utc_timezone.tzinfo)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
context 'when nil is given for proxy' do
|
55
|
+
it 'sets Savon proxy option to nil' do
|
56
|
+
client_driver = FactoryGirl.build(:soap_client_driver, :proxy => nil)
|
57
|
+
expect(client_driver.savon_client.globals.instance_variable_get("@options")[:proxy]).to be_nil
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
context 'when proxy is given' do
|
62
|
+
it 'sets Savon proxy option to the given url' do
|
63
|
+
client_driver = FactoryGirl.build(:soap_client_driver, :proxy => url)
|
64
|
+
expect(client_driver.savon_client.globals.instance_variable_get("@options")[:proxy]).to eq(url)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
context 'when nil is given for logger' do
|
69
|
+
it 'sets @logger to Logger' do
|
70
|
+
client_driver = FactoryGirl.build(:soap_client_driver, :logger => nil)
|
71
|
+
expect(client_driver.logger).to be_instance_of(Logger)
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
context 'when logger is set' do
|
76
|
+
it 'sets @logger to logger' do
|
77
|
+
logger = double("logger")
|
78
|
+
client_driver = FactoryGirl.build(:soap_client_driver, :logger => logger)
|
79
|
+
expect(client_driver.logger).to be(logger)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
describe '#client_type' do
|
85
|
+
it { expect(subject.client_type).to be(:soap) }
|
86
|
+
end
|
87
|
+
|
88
|
+
describe '#magic' do
|
89
|
+
before(:each) {
|
90
|
+
allow(subject).to receive(:start_timer)
|
91
|
+
allow(subject).to receive(:end_timer)
|
92
|
+
allow(subject).to receive(:log_magic)
|
93
|
+
}
|
94
|
+
|
95
|
+
it 'should send a SOAP request to Magic endpoint' do
|
96
|
+
savon.expects("Magic").with(:message => :any).returns(get_server_info)
|
97
|
+
subject.magic
|
98
|
+
end
|
99
|
+
|
100
|
+
context 'when a Savon::SOAPFault is raised' do
|
101
|
+
it 'should raise an APIError' do
|
102
|
+
savon.expects("Magic").with(:message => :any).returns({ code: 500, headers: {}, body: soap_fault })
|
103
|
+
expect { subject.magic }.to raise_error(AllscriptsUnityClient::APIError)
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
it 'should call start_timer' do
|
108
|
+
savon.expects("Magic").with(:message => :any).returns(get_server_info)
|
109
|
+
subject.magic
|
110
|
+
expect(subject).to have_received(:start_timer)
|
111
|
+
end
|
112
|
+
|
113
|
+
it 'should call end_timer' do
|
114
|
+
savon.expects("Magic").with(:message => :any).returns(get_server_info)
|
115
|
+
subject.magic
|
116
|
+
expect(subject).to have_received(:start_timer)
|
117
|
+
end
|
118
|
+
|
119
|
+
it 'should call log_magic' do
|
120
|
+
savon.expects("Magic").with(:message => :any).returns(get_server_info)
|
121
|
+
subject.magic
|
122
|
+
expect(subject).to have_received(:log_magic)
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
describe '#get_security_token!' do
|
127
|
+
before(:each) {
|
128
|
+
allow(subject).to receive(:start_timer)
|
129
|
+
allow(subject).to receive(:end_timer)
|
130
|
+
allow(subject).to receive(:log_get_security_token)
|
131
|
+
}
|
132
|
+
|
133
|
+
it 'should send a SOAP request to GetSecurityToken endpoint' do
|
134
|
+
savon.expects("GetSecurityToken").with(:message => :any).returns(get_security_token)
|
135
|
+
subject.get_security_token!
|
136
|
+
end
|
137
|
+
|
138
|
+
context 'when a Savon::SOAPFault is raised' do
|
139
|
+
it 'should raise an APIError' do
|
140
|
+
savon.expects("GetSecurityToken").with(:message => :any).returns({ code: 500, headers: {}, body: soap_fault })
|
141
|
+
expect { subject.get_security_token! }.to raise_error(AllscriptsUnityClient::APIError)
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
it 'should call start_timer' do
|
146
|
+
savon.expects("GetSecurityToken").with(:message => :any).returns(get_security_token)
|
147
|
+
subject.get_security_token!
|
148
|
+
expect(subject).to have_received(:start_timer)
|
149
|
+
end
|
150
|
+
|
151
|
+
it 'should call end_timer' do
|
152
|
+
savon.expects("GetSecurityToken").with(:message => :any).returns(get_security_token)
|
153
|
+
subject.get_security_token!
|
154
|
+
expect(subject).to have_received(:start_timer)
|
155
|
+
end
|
156
|
+
|
157
|
+
it 'should call log_get_security_token' do
|
158
|
+
savon.expects("GetSecurityToken").with(:message => :any).returns(get_security_token)
|
159
|
+
subject.get_security_token!
|
160
|
+
expect(subject).to have_received(:log_get_security_token)
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
164
|
+
describe '#retire_security_token!' do
|
165
|
+
before(:each) {
|
166
|
+
allow(subject).to receive(:start_timer)
|
167
|
+
allow(subject).to receive(:end_timer)
|
168
|
+
allow(subject).to receive(:log_retire_security_token)
|
169
|
+
}
|
170
|
+
|
171
|
+
it 'should send a SOAP request to RetireSecurityToken endpoint' do
|
172
|
+
savon.expects("RetireSecurityToken").with(:message => :any).returns(retire_security_token)
|
173
|
+
subject.retire_security_token!
|
174
|
+
end
|
175
|
+
|
176
|
+
context 'when a Savon::SOAPFault is raised' do
|
177
|
+
it 'should raise an APIError' do
|
178
|
+
savon.expects("RetireSecurityToken").with(:message => :any).returns({ code: 500, headers: {}, body: soap_fault })
|
179
|
+
expect { subject.retire_security_token! }.to raise_error(AllscriptsUnityClient::APIError)
|
180
|
+
end
|
181
|
+
end
|
182
|
+
|
183
|
+
it 'should call start_timer' do
|
184
|
+
savon.expects("RetireSecurityToken").with(:message => :any).returns(retire_security_token)
|
185
|
+
subject.retire_security_token!
|
186
|
+
expect(subject).to have_received(:start_timer)
|
187
|
+
end
|
188
|
+
|
189
|
+
it 'should call end_timer' do
|
190
|
+
savon.expects("RetireSecurityToken").with(:message => :any).returns(retire_security_token)
|
191
|
+
subject.retire_security_token!
|
192
|
+
expect(subject).to have_received(:start_timer)
|
193
|
+
end
|
194
|
+
|
195
|
+
it 'should call log_retire_security_token' do
|
196
|
+
savon.expects("RetireSecurityToken").with(:message => :any).returns(retire_security_token)
|
197
|
+
subject.retire_security_token!
|
198
|
+
expect(subject).to have_received(:log_retire_security_token)
|
199
|
+
end
|
200
|
+
end
|
201
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'pathname'
|
2
|
+
require 'simplecov'
|
3
|
+
require 'coveralls'
|
4
|
+
|
5
|
+
# Configure coverage stats.
|
6
|
+
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
|
7
|
+
SimpleCov::Formatter::HTMLFormatter,
|
8
|
+
Coveralls::SimpleCov::Formatter
|
9
|
+
]
|
10
|
+
SimpleCov.start do
|
11
|
+
add_filter do |source_file|
|
12
|
+
filename = Pathname.new(source_file.filename).basename
|
13
|
+
ignored_files = [
|
14
|
+
"version.rb",
|
15
|
+
"allscripts_unity_client.gemspec",
|
16
|
+
"Gemfile",
|
17
|
+
"Rakefile"
|
18
|
+
]
|
19
|
+
|
20
|
+
ignored_files.include?(filename) || source_file.filename.include?("spec/")
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
lib = File.expand_path('../lib/', __FILE__)
|
25
|
+
$:.unshift lib unless $:.include?(lib)
|
26
|
+
|
27
|
+
require 'allscripts_unity_client'
|
28
|
+
|
29
|
+
require 'rspec'
|
30
|
+
require 'webmock/rspec'
|
31
|
+
require 'savon/mock/spec_helper'
|
32
|
+
require 'securerandom'
|
33
|
+
require 'faker'
|
34
|
+
require 'factory_girl'
|
35
|
+
require 'json'
|
36
|
+
|
37
|
+
# Include all support files
|
38
|
+
Dir["./spec/support/**/*.rb"].sort.each { |f| require f }
|
39
|
+
|
40
|
+
# Include all factories
|
41
|
+
FactoryGirl.find_definitions
|
42
|
+
|
43
|
+
RSpec.configure do |config|
|
44
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
require 'json'
|
3
|
+
|
4
|
+
class FixtureLoader
|
5
|
+
def self.load_yaml(filename)
|
6
|
+
YAML.load(read(filename))
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.load_json(filename)
|
10
|
+
JSON.parse(read(filename))
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.load_file(filename)
|
14
|
+
read(filename)
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def self.read(filename)
|
20
|
+
File.read(File.expand_path("../../fixtures/#{filename}", __FILE__))
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,139 @@
|
|
1
|
+
shared_examples 'a client driver' do
|
2
|
+
describe '#security_token?' do
|
3
|
+
context 'when @security_token is nil' do
|
4
|
+
it do
|
5
|
+
subject.security_token = nil
|
6
|
+
expect(subject.security_token?).to be_false
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
context 'when @security_token is not nil' do
|
11
|
+
it do
|
12
|
+
subject.security_token = "security token"
|
13
|
+
expect(subject.security_token?).to be_true
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe "#log?" do
|
19
|
+
context 'when log is false' do
|
20
|
+
it 'return false' do
|
21
|
+
subject.log = false
|
22
|
+
expect(subject.log).to be_false
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
context 'when log is true' do
|
27
|
+
it 'return false' do
|
28
|
+
subject.log = true
|
29
|
+
expect(subject.log).to be_true
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
describe "#log_get_security_token" do
|
35
|
+
it 'should call log_info' do
|
36
|
+
allow(subject).to receive(:log_info)
|
37
|
+
subject.send(:log_get_security_token)
|
38
|
+
expect(subject).to have_received(:log_info)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
describe "#log_retire_security_token" do
|
43
|
+
it 'should call log_info' do
|
44
|
+
allow(subject).to receive(:log_info)
|
45
|
+
subject.send(:log_retire_security_token)
|
46
|
+
expect(subject).to have_received(:log_info)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
describe "#log_magic" do
|
51
|
+
it 'should call log_info' do
|
52
|
+
allow(subject).to receive(:log_info)
|
53
|
+
subject.send(:log_magic, double(:parameters => { :action => "action" }))
|
54
|
+
expect(subject).to have_received(:log_info)
|
55
|
+
end
|
56
|
+
|
57
|
+
context 'when given nil for request' do
|
58
|
+
it { expect { subject.send(:log_magic, nil) }.to raise_error(ArgumentError) }
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
describe '#log_info' do
|
63
|
+
context 'when log? is true' do
|
64
|
+
it 'should call @logger.info' do
|
65
|
+
subject.log = true
|
66
|
+
allow(subject.logger).to receive(:info)
|
67
|
+
subject.send(:log_info, "test")
|
68
|
+
expect(subject.logger).to have_received(:info)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
context 'when log? is false' do
|
73
|
+
it 'should not call @logger.info' do
|
74
|
+
subject.log = false
|
75
|
+
allow(subject.logger).to receive(:info)
|
76
|
+
subject.send(:log_info, "test")
|
77
|
+
expect(subject.logger).to_not have_received(:info)
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
context 'when given nil for message' do
|
82
|
+
it 'should not call @logger.info' do
|
83
|
+
subject.log = true
|
84
|
+
allow(subject.logger).to receive(:info)
|
85
|
+
subject.send(:log_info, nil)
|
86
|
+
expect(subject.logger).to_not have_received(:info)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
context 'when @logger is nil and log is true' do
|
91
|
+
it 'should not call @logger.info' do
|
92
|
+
subject.log = true
|
93
|
+
subject.logger = nil
|
94
|
+
expect { subject.send(:log_info, "test") }.to_not raise_error
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
context 'when @timer is nil and log is true' do
|
99
|
+
it 'should not include seconds in the log' do
|
100
|
+
subject.log = true
|
101
|
+
subject.instance_variable_set("@timer", nil)
|
102
|
+
allow(subject.logger).to receive(:info)
|
103
|
+
subject.send(:log_info, "test")
|
104
|
+
expect(subject.logger).to_not have_received(:info).with(match(/seconds/))
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
context 'when @timer is not nil and log is true' do
|
109
|
+
it 'should include seconds in log' do
|
110
|
+
subject.log = true
|
111
|
+
subject.instance_variable_set("@timer", 1.2)
|
112
|
+
allow(subject.logger).to receive(:info)
|
113
|
+
subject.send(:log_info, "test")
|
114
|
+
expect(subject.logger).to have_received(:info).with(match(/seconds/))
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
describe '#start_timer' do
|
120
|
+
it 'sets @start_time' do
|
121
|
+
subject.send(:start_timer)
|
122
|
+
expect(subject.instance_variable_get("@start_time")).to_not be_nil
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
describe '#end_timer' do
|
127
|
+
it 'sets @end_time' do
|
128
|
+
subject.send(:start_timer)
|
129
|
+
subject.send(:end_timer)
|
130
|
+
expect(subject.instance_variable_get("@end_time")).to_not be_nil
|
131
|
+
end
|
132
|
+
|
133
|
+
it 'sets @timer to @end_time - @start_time' do
|
134
|
+
subject.send(:start_timer)
|
135
|
+
subject.send(:end_timer)
|
136
|
+
expect(subject.instance_variable_get("@timer")).to eq(subject.instance_variable_get("@end_time") - subject.instance_variable_get("@start_time"))
|
137
|
+
end
|
138
|
+
end
|
139
|
+
end
|
@@ -0,0 +1,94 @@
|
|
1
|
+
shared_examples 'a unity request' do
|
2
|
+
let(:magic_request) { FactoryGirl.build(:magic_request) }
|
3
|
+
|
4
|
+
describe '#to_hash' do
|
5
|
+
it ':action maps to Action' do
|
6
|
+
subject.parameters = FactoryGirl.build(:magic_request, :action => 'Action')
|
7
|
+
expect(subject.to_hash['Action']).to eq('Action')
|
8
|
+
end
|
9
|
+
|
10
|
+
it ':appname maps to Appname' do
|
11
|
+
subject.parameters = FactoryGirl.build(:magic_request, :appname => 'Appname')
|
12
|
+
expect(subject.to_hash['Appname']).to eq('Appname')
|
13
|
+
end
|
14
|
+
|
15
|
+
it ':patientid maps to PatientID' do
|
16
|
+
subject.parameters = FactoryGirl.build(:magic_request, :patientid => 'PatientID')
|
17
|
+
expect(subject.to_hash['PatientID']).to eq('PatientID')
|
18
|
+
end
|
19
|
+
|
20
|
+
it ':token maps to Token' do
|
21
|
+
subject.parameters = FactoryGirl.build(:magic_request, :token => 'Token')
|
22
|
+
expect(subject.to_hash['Token']).to eq('Token')
|
23
|
+
end
|
24
|
+
|
25
|
+
it ':parameter1 maps to Parameter1' do
|
26
|
+
subject.parameters = FactoryGirl.build(:magic_request, :parameter1 => 'Parameter1')
|
27
|
+
expect(subject.to_hash['Parameter1']).to eq('Parameter1')
|
28
|
+
end
|
29
|
+
|
30
|
+
it ':parameter2 maps to Parameter2' do
|
31
|
+
subject.parameters = FactoryGirl.build(:magic_request, :parameter2 => 'Parameter2')
|
32
|
+
expect(subject.to_hash['Parameter2']).to eq('Parameter2')
|
33
|
+
end
|
34
|
+
|
35
|
+
it ':parameter3 maps to Parameter3' do
|
36
|
+
subject.parameters = FactoryGirl.build(:magic_request, :parameter3 => 'Parameter3')
|
37
|
+
expect(subject.to_hash['Parameter3']).to eq('Parameter3')
|
38
|
+
end
|
39
|
+
|
40
|
+
it ':parameter4 maps to Parameter4' do
|
41
|
+
subject.parameters = FactoryGirl.build(:magic_request, :parameter4 => 'Parameter4')
|
42
|
+
expect(subject.to_hash['Parameter4']).to eq('Parameter4')
|
43
|
+
end
|
44
|
+
|
45
|
+
it ':parameter5 maps to Parameter5' do
|
46
|
+
subject.parameters = FactoryGirl.build(:magic_request, :parameter5 => 'Parameter5')
|
47
|
+
expect(subject.to_hash['Parameter5']).to eq('Parameter5')
|
48
|
+
end
|
49
|
+
|
50
|
+
it ':parameter6 maps to Parameter6' do
|
51
|
+
subject.parameters = FactoryGirl.build(:magic_request, :parameter6 => 'Parameter6')
|
52
|
+
expect(subject.to_hash['Parameter6']).to eq('Parameter6')
|
53
|
+
end
|
54
|
+
|
55
|
+
it 'calls process_date on parameters' do
|
56
|
+
subject.parameters = FactoryGirl.build(:populated_magic_request)
|
57
|
+
allow(subject).to receive(:process_date)
|
58
|
+
subject.to_hash
|
59
|
+
expect(subject).to have_received(:process_date).exactly(6).times
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
describe '#process_date' do
|
64
|
+
context 'when given nil' do
|
65
|
+
it { expect(subject.send(:process_date, nil)).to be_nil }
|
66
|
+
end
|
67
|
+
|
68
|
+
context 'when given a non-date string' do
|
69
|
+
it do
|
70
|
+
not_a_date = Faker::Name.name
|
71
|
+
expect(subject.send(:process_date, not_a_date)).to eq(not_a_date)
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
context 'when given a date string' do
|
76
|
+
it do
|
77
|
+
date = "2013-10-24"
|
78
|
+
expect(subject.send(:process_date, date)).to be_instance_of(Date)
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
context 'when given a Date' do
|
83
|
+
it { expect(subject.send(:process_date, Date.today)).to be_instance_of(Date) }
|
84
|
+
end
|
85
|
+
|
86
|
+
context 'when given a Time' do
|
87
|
+
it { expect(subject.send(:process_date, Time.now)).to be_instance_of(Time) }
|
88
|
+
end
|
89
|
+
|
90
|
+
context 'when given a DateTime' do
|
91
|
+
it { expect(subject.send(:process_date, DateTime.now)).to be_instance_of(DateTime) }
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|