allscripts_unity_client 4.0.0 → 5.1.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.
Files changed (61) hide show
  1. checksums.yaml +5 -5
  2. data/lib/allscripts_unity_client.rb +4 -0
  3. data/lib/allscripts_unity_client/client.rb +11 -4
  4. data/lib/allscripts_unity_client/client_driver.rb +15 -5
  5. data/lib/allscripts_unity_client/client_options.rb +13 -4
  6. data/lib/allscripts_unity_client/json_client_driver.rb +37 -3
  7. data/lib/allscripts_unity_client/unity_request.rb +9 -2
  8. data/lib/allscripts_unity_client/version.rb +1 -1
  9. metadata +20 -59
  10. data/.gitignore +0 -21
  11. data/.rspec +0 -2
  12. data/.rubocop.yml +0 -340
  13. data/.travis.yml +0 -11
  14. data/Gemfile +0 -2
  15. data/LICENSE +0 -22
  16. data/README.md +0 -347
  17. data/Rakefile +0 -7
  18. data/allscripts_unity_client.gemspec +0 -40
  19. data/spec/allscripts_unity_client_spec.rb +0 -30
  20. data/spec/client_driver_spec.rb +0 -23
  21. data/spec/client_options_spec.rb +0 -185
  22. data/spec/client_spec.rb +0 -471
  23. data/spec/factories/allscripts_unity_client_parameters_factory.rb +0 -18
  24. data/spec/factories/client_driver_factory.rb +0 -20
  25. data/spec/factories/client_factory.rb +0 -9
  26. data/spec/factories/client_options.rb +0 -18
  27. data/spec/factories/magic_request_factory.rb +0 -37
  28. data/spec/factories/unity_request_factory.rb +0 -13
  29. data/spec/factories/unity_response_factory.rb +0 -12
  30. data/spec/fixtures/attributes_hash.yml +0 -15
  31. data/spec/fixtures/date_hash.yml +0 -8
  32. data/spec/fixtures/date_string_hash.yml +0 -8
  33. data/spec/fixtures/error.json +0 -3
  34. data/spec/fixtures/get_providers.json +0 -69
  35. data/spec/fixtures/get_providers.xml +0 -119
  36. data/spec/fixtures/get_providers_json.yml +0 -65
  37. data/spec/fixtures/get_providers_xml.yml +0 -270
  38. data/spec/fixtures/get_security_token.json +0 -1
  39. data/spec/fixtures/get_security_token.xml +0 -7
  40. data/spec/fixtures/get_server_info.json +0 -10
  41. data/spec/fixtures/get_server_info.xml +0 -40
  42. data/spec/fixtures/get_server_info_json.yml +0 -8
  43. data/spec/fixtures/get_server_info_xml.yml +0 -55
  44. data/spec/fixtures/no_attributes_hash.yml +0 -7
  45. data/spec/fixtures/retire_security_token.json +0 -1
  46. data/spec/fixtures/retire_security_token.xml +0 -5
  47. data/spec/fixtures/soap_fault.xml +0 -13
  48. data/spec/fixtures/string_keyed_hash.yml +0 -8
  49. data/spec/fixtures/symbol_keyed_hash.yml +0 -8
  50. data/spec/json_client_driver_spec.rb +0 -152
  51. data/spec/json_unity_request_spec.rb +0 -37
  52. data/spec/json_unity_response_spec.rb +0 -44
  53. data/spec/spec_helper.rb +0 -85
  54. data/spec/support/factory_bot.rb +0 -10
  55. data/spec/support/fixture_loader.rb +0 -20
  56. data/spec/support/shared_examples_for_client_driver.rb +0 -118
  57. data/spec/support/shared_examples_for_unity_request.rb +0 -114
  58. data/spec/support/shared_examples_for_unity_response.rb +0 -26
  59. data/spec/unity_request_spec.rb +0 -37
  60. data/spec/unity_response_spec.rb +0 -36
  61. data/spec/utilities_spec.rb +0 -144
@@ -1,10 +0,0 @@
1
- # Include all factories
2
- FactoryBot.find_definitions
3
-
4
- RSpec.configure do |config|
5
- config.include FactoryBot::Syntax::Methods
6
-
7
- config.before(:suite) do
8
- FactoryBot.lint
9
- end
10
- end
@@ -1,20 +0,0 @@
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
- def self.read(filename)
18
- File.read(File.expand_path("../../fixtures/#{filename}", __FILE__))
19
- end
20
- end
@@ -1,118 +0,0 @@
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_falsey
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_truthy
14
- end
15
- end
16
- end
17
-
18
- describe '#log_get_security_token' do
19
- it 'should call log_info' do
20
- allow(subject).to receive(:log_info)
21
- subject.send(:log_get_security_token)
22
- expect(subject).to have_received(:log_info)
23
- end
24
- end
25
-
26
- describe '#log_retire_security_token' do
27
- it 'should call log_info' do
28
- allow(subject).to receive(:log_info)
29
- subject.send(:log_retire_security_token)
30
- expect(subject).to have_received(:log_info)
31
- end
32
- end
33
-
34
- describe '#log_magic' do
35
- it 'should call log_info' do
36
- allow(subject).to receive(:log_info)
37
- subject.send(:log_magic, double(parameters: { action: 'action'}))
38
- expect(subject).to have_received(:log_info)
39
- end
40
-
41
- context 'when given nil for request' do
42
- it { expect { subject.send(:log_magic, nil) }.to raise_error(ArgumentError) }
43
- end
44
- end
45
-
46
- describe '#log_info' do
47
- context 'when @options.logger? is true' do
48
- it 'should call @options.logger.info' do
49
- subject.options.logger = double('logger', info: true)
50
- subject.send(:log_info, 'test')
51
- expect(subject.options.logger).to have_received(:info)
52
- end
53
- end
54
-
55
- context 'when @options.logger? is false' do
56
- it 'should not call @options.logger.info' do
57
- allow_message_expectations_on_nil
58
- subject.options.logger = nil
59
- allow(subject.options.logger).to receive(:info)
60
- subject.send(:log_info, 'test')
61
- expect(subject.options.logger).not_to have_received(:info)
62
- end
63
- end
64
-
65
- context 'when given nil for message' do
66
- it 'should not call @options.logger.info' do
67
- subject.options.logger = double('logger', info: true)
68
- subject.send(:log_info, nil)
69
- expect(subject.options.logger).not_to have_received(:info)
70
- end
71
- end
72
-
73
- context 'when @options.logger? is false' do
74
- it 'should not call @logger.info' do
75
- expect { subject.send(:log_info, 'test') }.not_to raise_error
76
- end
77
- end
78
-
79
- context 'when @timer is nil and @options.logger is true' do
80
- it 'should not include seconds in the log' do
81
- subject.options.logger = double('logger', info: true)
82
- subject.instance_variable_set('@timer', nil)
83
- subject.send(:log_info, 'test')
84
- expect(subject.options.logger).not_to have_received(:info).with(match(/seconds/))
85
- end
86
- end
87
-
88
- context 'when @timer is not nil and @options.logger? is true' do
89
- it 'should include seconds in log' do
90
- subject.options.logger = double('logger', info: true)
91
- subject.instance_variable_set('@timer', 1.2)
92
- subject.send(:log_info, 'test')
93
- expect(subject.options.logger).to have_received(:info).with(match(/seconds/))
94
- end
95
- end
96
- end
97
-
98
- describe '#start_timer' do
99
- it 'sets @start_time' do
100
- subject.send(:start_timer)
101
- expect(subject.instance_variable_get('@start_time')).not_to be_nil
102
- end
103
- end
104
-
105
- describe '#end_timer' do
106
- it 'sets @end_time' do
107
- subject.send(:start_timer)
108
- subject.send(:end_timer)
109
- expect(subject.instance_variable_get('@end_time')).not_to be_nil
110
- end
111
-
112
- it 'sets @timer to @end_time - @start_time' do
113
- subject.send(:start_timer)
114
- subject.send(:end_timer)
115
- expect(subject.instance_variable_get('@timer')).to eq(subject.instance_variable_get('@end_time') - subject.instance_variable_get('@start_time'))
116
- end
117
- end
118
- end
@@ -1,114 +0,0 @@
1
- shared_examples 'a unity request' do
2
- let(:magic_request) { build(:magic_request) }
3
-
4
- describe '#to_hash' do
5
- it ':action maps to Action' do
6
- subject.parameters = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 'returns an ISO8601 string' do
77
- date = '10/24/2013'
78
- expect(subject.send(:process_date, date)).to eq('2013-10-24')
79
- end
80
- end
81
-
82
- context 'when given a UTC date time string' do
83
- it 'returns an ISO8601 string' do
84
- now = DateTime.now.utc
85
- now_iso8601 = now.strftime('%Y-%m-%dT%H:%M:%S%:z')
86
- expect(subject.send(:process_date, now_iso8601)).to eq(now_iso8601)
87
- end
88
- end
89
-
90
- context 'when given a Date' do
91
- it 'returns an ISO8601 string' do
92
- today = Date.today
93
- today_iso8601 = Date.today.iso8601
94
- expect(subject.send(:process_date, today)).to eq(today_iso8601)
95
- end
96
- end
97
-
98
- context 'when given a UTC Time' do
99
- it 'returns an ISO8601 string' do
100
- now = Time.now.utc
101
- now_iso8601 = now.strftime('%Y-%m-%dT%H:%M:%S%:z')
102
- expect(subject.send(:process_date, now)).to eq(now_iso8601)
103
- end
104
- end
105
-
106
- context 'when given a UTC DateTime' do
107
- it 'returns an ISO8601 string' do
108
- now = DateTime.now.utc
109
- now_iso8601 = now.strftime('%Y-%m-%dT%H:%M:%S%:z')
110
- expect(subject.send(:process_date, now)).to eq(now_iso8601)
111
- end
112
- end
113
- end
114
- end
@@ -1,26 +0,0 @@
1
- shared_examples 'a unity response' do
2
- let(:attributes_hash) { FixtureLoader.load_yaml('attributes_hash.yml') }
3
- let(:no_attributes_hash) { FixtureLoader.load_yaml('no_attributes_hash.yml') }
4
- let(:date_string_hash) { FixtureLoader.load_yaml('date_string_hash.yml') }
5
- let(:date_hash) { FixtureLoader.load_yaml('date_hash.yml') }
6
-
7
- describe '#strip_attributes' do
8
- context 'when given nil' do
9
- it { expect(subject.send(:strip_attributes, nil)).to be_nil }
10
- end
11
-
12
- it 'recursively strips attribute keys off hashes' do
13
- expect(subject.send(:strip_attributes, attributes_hash)).to eq(no_attributes_hash)
14
- end
15
- end
16
-
17
- describe '#convert_dates_to_utc' do
18
- context 'when given nil' do
19
- it { expect(subject.send(:convert_dates_to_utc, nil)).to be_nil }
20
- end
21
-
22
- it 'recursively converts date strings' do
23
- expect(subject.send(:convert_dates_to_utc, date_string_hash)).to eq(date_hash)
24
- end
25
- end
26
- end
@@ -1,37 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe AllscriptsUnityClient::UnityRequest do
4
- it_behaves_like 'a unity request'
5
-
6
- subject { build(:unity_request) }
7
-
8
- describe '#initialize' do
9
- context 'when nil is given for parameters' do
10
- it { expect { build(:unity_request, parameters: nil) }.to raise_error(ArgumentError) }
11
- end
12
-
13
- context 'when nil is given for timezone' do
14
- it { expect { build(:unity_request, timezone: nil) }.to raise_error(ArgumentError) }
15
- end
16
-
17
- context 'when nil is given for appname' do
18
- it { expect { build(:unity_request, appname: nil) }.to raise_error(ArgumentError) }
19
- end
20
-
21
- context 'when nil is given for security_token' do
22
- it { expect { build(:unity_request, security_token: nil) }.to raise_error(ArgumentError) }
23
- end
24
- end
25
-
26
- describe '#to_hash' do
27
- it ':userid maps to UserID' do
28
- subject.parameters = build(:magic_request, userid: 'UserID')
29
- expect(subject.to_hash['UserID']).to eq('UserID')
30
- end
31
-
32
- it ':data maps to Base64 encoded data' do
33
- subject.parameters = build(:magic_request, data: 'data')
34
- expect(subject.to_hash['data']).to eq(['data'].pack('m'))
35
- end
36
- end
37
- end
@@ -1,36 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe AllscriptsUnityClient::UnityResponse do
4
- it_behaves_like 'a unity response'
5
-
6
- subject { build(:unity_response, response: get_server_info) }
7
-
8
- let(:get_server_info) { FixtureLoader.load_yaml('get_server_info_xml.yml') }
9
-
10
- describe '#initialize' do
11
- context 'when nil is given for response' do
12
- it { expect { build(:unity_response, response: nil) }.to raise_error(ArgumentError) }
13
- end
14
-
15
- context 'when nil is given for timezone' do
16
- it { expect { build(:unity_response, timezone: nil) }.to raise_error(ArgumentError) }
17
- end
18
- end
19
-
20
- describe '#to_hash' do
21
- context 'when given a GetServerInfo SOAP response hash' do
22
- it 'strips Unity SOAP wrappers' do
23
- expect(subject.to_hash[:server_time_zone]).to_not be_nil
24
- end
25
-
26
- context 'when given nil magic_result' do
27
- it 'returns []' do
28
- magic_response = get_server_info
29
- magic_response[:magic_response][:magic_result][:diffgram] = nil
30
- subject.response = magic_response
31
- expect(subject.to_hash).to eq([])
32
- end
33
- end
34
- end
35
- end
36
- end
@@ -1,144 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe AllscriptsUnityClient::Utilities do
4
- subject { described_class }
5
-
6
- let(:date_string) { '2013-02-15' }
7
- let(:date) { Date.parse(date_string) }
8
- let(:datetime_string) { '2013-02-15T00:00:00Z' }
9
- let(:datetime) { timezone.parse(datetime_string) }
10
- let(:timezone) { ActiveSupport::TimeZone['Etc/UTC'] }
11
-
12
- let(:string) { 'string' }
13
- let(:string_array) { ['string'] }
14
- let(:base64_string) { "c3RyaW5n\n" }
15
-
16
- let(:string_keyed_hash) { FixtureLoader.load_yaml('string_keyed_hash.yml') }
17
- let(:symbol_keyed_hash) { FixtureLoader.load_yaml('symbol_keyed_hash.yml') }
18
-
19
- let(:datetime_string_one) { 'Feb 27 2013 12:37PM' }
20
- let(:datetime_string_two) { 'Feb 28 2013 1:34PM' }
21
- let(:datetime_string_three) { '12/25/2013 12:37 PM' }
22
- let(:datetime_string_four) { 'Nov 1 2011 11:31AM' }
23
- let(:datetime_one) { timezone.parse(datetime_string_one) }
24
- let(:datetime_two) { timezone.parse(datetime_string_two) }
25
- let(:datetime_three) { timezone.parse(datetime_string_three) }
26
- let(:datetime_four) { timezone.parse(datetime_string_four) }
27
- let(:date_string_one) { '20-Jul-2014' }
28
- let(:date_string_two) { '12/25/2013' }
29
- let(:date_string_three) { 'Nov 1 2011' }
30
- let(:date_one) { Date.parse(date_string_one) }
31
- let(:date_two) { Date.parse(date_string_two) }
32
- let(:date_three) { Date.parse(date_string_three) }
33
-
34
- let(:invalid_date_string_one) { "32-13-2014\n02/21/2014"}
35
-
36
- describe '.try_to_encode_as_date' do
37
- context 'when given nil' do
38
- it { expect(subject.try_to_encode_as_date(timezone, nil)).to be_nil }
39
- end
40
-
41
- context 'when given date string' do
42
- it 'returns the string as a Date' do
43
- expect(subject.try_to_encode_as_date(timezone, date_string)).to eq(date)
44
- end
45
- end
46
-
47
- context 'when given date time string' do
48
- it 'returns the string as a DateTime' do
49
- expect(subject.try_to_encode_as_date(timezone, datetime_string)).to eq(datetime)
50
- end
51
- end
52
-
53
- context 'when given datetime_string_one' do
54
- it 'returns the string as a DateTime' do
55
- expect(subject.try_to_encode_as_date(timezone, datetime_string_one)).to eq(datetime_one)
56
- end
57
- end
58
-
59
- context 'when given datetime_string_two' do
60
- it 'returns the string as a DateTime' do
61
- expect(subject.try_to_encode_as_date(timezone, datetime_string_two)).to eq(datetime_two)
62
- end
63
- end
64
-
65
- context 'when given datetime_string_three' do
66
- it 'returns the string as a DateTime' do
67
- expect(subject.try_to_encode_as_date(timezone, datetime_string_three)).to eq(datetime_three)
68
- end
69
- end
70
-
71
- context 'when given datetime_string_four' do
72
- it 'returns the string as a DateTime' do
73
- expect(subject.try_to_encode_as_date(timezone, datetime_string_four)).to eq(datetime_four)
74
- end
75
- end
76
-
77
- context 'when given date_string_one' do
78
- it 'returns the string as a Date' do
79
- expect(subject.try_to_encode_as_date(timezone, date_string_one)).to eq(date_one)
80
- end
81
- end
82
-
83
- context 'when given date_string_two' do
84
- it 'returns the string as a Date' do
85
- expect(subject.try_to_encode_as_date(timezone, date_string_two)).to eq(date_two)
86
- end
87
- end
88
-
89
- context 'when given date_string_three' do
90
- it 'returns the string as a Date' do
91
- expect(subject.try_to_encode_as_date(timezone, date_string_three)).to eq(date_three)
92
- end
93
- end
94
-
95
- context 'when given a non-date string' do
96
- it 'returns that string' do
97
- expect(subject.try_to_encode_as_date(timezone, string)).to eq(string)
98
- end
99
- end
100
-
101
- context 'when given an invalid date string' do
102
- it 'returns that string' do
103
- expect(subject.try_to_encode_as_date(timezone, invalid_date_string_one)).to eq(invalid_date_string_one)
104
- end
105
- end
106
-
107
- context 'when givn an valid date string that represents an invalid date' do
108
- it 'it returns the string' do
109
- date = "10/00/1999"
110
- date_time = "10/00/1999 01:01:01"
111
- expect(subject.try_to_encode_as_date(timezone, date)).to be(date)
112
- expect(subject.try_to_encode_as_date(timezone, date_time)).to be(date_time)
113
- end
114
- end
115
- end
116
-
117
- describe '.encode_data' do
118
- context 'when given nil' do
119
- it { expect(subject.encode_data(nil)).to be_nil }
120
- end
121
-
122
- context 'when given a string' do
123
- it 'returns a base64 encoded version of that string' do
124
- expect(subject.encode_data(string)).to eq(base64_string)
125
- end
126
- end
127
-
128
- context 'when given an array of strings' do
129
- it 'returns a base64 encoded version of that string' do
130
- expect(subject.encode_data(string_array)).to eq(base64_string)
131
- end
132
- end
133
- end
134
-
135
- describe '.recursively_symbolize_keys' do
136
- context 'when given nil' do
137
- it { expect(subject.recursively_symbolize_keys(nil)).to be_nil }
138
- end
139
-
140
- context 'when given a hash with string keys' do
141
- it { expect(subject.recursively_symbolize_keys(string_keyed_hash)).to eq(symbol_keyed_hash) }
142
- end
143
- end
144
- end