allscripts_unity_client 2.0.5 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +20 -0
- data/allscripts_unity_client.gemspec +2 -1
- data/lib/allscripts_unity_client.rb +1 -0
- data/lib/allscripts_unity_client/client.rb +27 -20
- data/lib/allscripts_unity_client/client_driver.rb +9 -0
- data/lib/allscripts_unity_client/client_options.rb +6 -1
- data/lib/allscripts_unity_client/json_client_driver.rb +13 -10
- data/lib/allscripts_unity_client/json_unity_response.rb +0 -2
- data/lib/allscripts_unity_client/new_relic_support.rb +19 -0
- data/lib/allscripts_unity_client/soap_client_driver.rb +5 -2
- data/lib/allscripts_unity_client/version.rb +1 -1
- data/spec/allscripts_unity_client_spec.rb +2 -2
- data/spec/client_driver_spec.rb +2 -1
- data/spec/client_options_spec.rb +17 -1
- data/spec/client_spec.rb +1 -1
- data/spec/factories/client_driver_factory.rb +4 -0
- data/spec/factories/client_options.rb +1 -0
- data/spec/factories/unity_request_factory.rb +2 -0
- data/spec/factories/unity_response_factory.rb +2 -0
- data/spec/json_client_driver_spec.rb +8 -2
- data/spec/json_unity_request_spec.rb +1 -1
- data/spec/json_unity_response_spec.rb +1 -1
- data/spec/new_relic_support_spec.rb +49 -0
- data/spec/soap_client_driver_spec.rb +2 -1
- data/spec/support/new_relic.rb +16 -0
- data/spec/support/shared_examples_for_client_driver.rb +12 -0
- data/spec/timezone_spec.rb +1 -1
- data/spec/unity_request_spec.rb +1 -1
- data/spec/unity_response_spec.rb +1 -1
- data/spec/utilities_spec.rb +2 -2
- metadata +21 -8
- data/spec/factories/json_client_driver_factory.rb +0 -3
- data/spec/factories/json_unity_request_factory.rb +0 -3
- data/spec/factories/json_unity_response_factory.rb +0 -3
- data/spec/factories/soap_client_driver_factory.rb +0 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 88cc45a2484b53948ae52a7175a9c633b8cf8108
|
4
|
+
data.tar.gz: c792e3083d2727be7872e47e932348699ceb416f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 20d968b2549340bd6fc496e95bab512970db94bae8f3637d0609c0859fdf1b33f640164eee30e77da9c9f3e223c0c7de428565285a6f9d5245900e7b8e56be61
|
7
|
+
data.tar.gz: 01714c07e5f1568d03b15e27f653d7c4efa8b3571b053bb5f9ebdb2b6473e651ca9116534b6a319e1106e5035ee66635fcc7d3cc6efe3ad41e1c7eec464d2090
|
data/README.md
CHANGED
@@ -244,6 +244,26 @@ unity_client = AllscriptsUnityClient.create({
|
|
244
244
|
This gem uses the [american_date](http://rubygems.org/gems/american_date) gem to force `Date.parse` to
|
245
245
|
accept USA locale dates by default. There are currently no plans to support other locales. Pull requests welcome.
|
246
246
|
|
247
|
+
### New Relic support
|
248
|
+
|
249
|
+
New Relic is supported for tracing Unity HTTP requests and the overall time processing the reqeusts takes. To enable
|
250
|
+
New Relic, simply require the gem in your project and enable it on the client:
|
251
|
+
|
252
|
+
```ruby
|
253
|
+
require 'newrelic_rpm'
|
254
|
+
NewRelic::Agent.manual_start
|
255
|
+
|
256
|
+
unity_client = AllscriptsUnityClient.create({
|
257
|
+
base_unity_url: "http://unity.base.url",
|
258
|
+
appname: "appname",
|
259
|
+
username: "username",
|
260
|
+
password: "password",
|
261
|
+
new_relic: true
|
262
|
+
})
|
263
|
+
```
|
264
|
+
|
265
|
+
For more information on the New Relic gem, go here: (https://github.com/newrelic/rpm)
|
266
|
+
|
247
267
|
## Examples
|
248
268
|
|
249
269
|
### GetServerInfo SOAP
|
@@ -29,11 +29,12 @@ Gem::Specification.new do |gem|
|
|
29
29
|
gem.add_runtime_dependency 'nokogiri', '< 1.6', '>= 1.4.0'
|
30
30
|
gem.add_runtime_dependency 'nori', '~> 2.3.0'
|
31
31
|
gem.add_runtime_dependency 'american_date', '~> 1.1.0'
|
32
|
+
gem.add_runtime_dependency 'oj', '~> 2.9.8'
|
32
33
|
|
33
34
|
gem.add_development_dependency 'factory_girl', '~> 4.4.0'
|
34
35
|
gem.add_development_dependency 'rake', '~> 10.3.1'
|
35
36
|
gem.add_development_dependency 'faker', '~> 1.3.0'
|
36
|
-
gem.add_development_dependency 'rspec', '~> 3.0.0
|
37
|
+
gem.add_development_dependency 'rspec', '~> 3.0.0'
|
37
38
|
gem.add_development_dependency 'simplecov', '~> 0.8.2'
|
38
39
|
gem.add_development_dependency 'webmock', '~> 1.17.4'
|
39
40
|
gem.add_development_dependency 'coveralls', '~> 0.7.0'
|
@@ -9,6 +9,7 @@ require 'allscripts_unity_client/client_driver'
|
|
9
9
|
require 'allscripts_unity_client/client_options'
|
10
10
|
require 'allscripts_unity_client/soap_client_driver'
|
11
11
|
require 'allscripts_unity_client/json_client_driver'
|
12
|
+
require 'allscripts_unity_client/new_relic_support'
|
12
13
|
|
13
14
|
module AllscriptsUnityClient
|
14
15
|
class APIError < RuntimeError
|
@@ -501,26 +501,33 @@ module AllscriptsUnityClient
|
|
501
501
|
# Generate XML structure for rxxml
|
502
502
|
builder = Nokogiri::XML::Builder.new do |xml|
|
503
503
|
xml.saverx {
|
504
|
-
xml.field('name' => 'transid', 'value' => rxxml[:transid]) unless rxxml[:transid]
|
505
|
-
xml.field('name' => 'PharmID', 'value' => rxxml[:pharmid]) unless rxxml[:pharmid]
|
506
|
-
xml.field('name' => 'DDI', 'value' => rxxml[:ddi]) unless rxxml[:ddi]
|
507
|
-
xml.field('name' => 'GPPCCode', 'value' => rxxml[:gppccode]) unless rxxml[:gppccode]
|
508
|
-
xml.field('name' => 'GPPCText', 'value' => rxxml[:gppctext]) unless rxxml[:gppctext]
|
509
|
-
xml.field('name' => 'GPPCCustom', 'value' => rxxml[:gppccustom]) unless rxxml[:gppccustom]
|
510
|
-
xml.field('name' => 'Sig', 'value' => rxxml[:sig]) unless rxxml[:sig]
|
511
|
-
xml.field('name' => 'QuanPresc', 'value' => rxxml[:quanpresc]) unless rxxml[:quanpresc]
|
512
|
-
xml.field('name' => 'Refills', 'value' => rxxml[:refills]) unless rxxml[:refills]
|
513
|
-
xml.field('name' => 'DAW', 'value' => rxxml[:daw]) unless rxxml[:daw]
|
514
|
-
xml.field('name' => 'DaysSupply', 'value' => rxxml[:dayssupply]) unless rxxml[:dayssupply]
|
515
|
-
xml.field('name' => 'startdate', 'value' => utc_to_local(Date.parse(rxxml[:startdate].to_s))) unless rxxml[:startdate]
|
516
|
-
xml.field('name' => 'historicalflag', 'value' => rxxml[:historicalflag]) unless rxxml[:historicalflag]
|
517
|
-
xml.field('name' => 'rxaction', 'value' => rxxml[:rxaction]) unless rxxml[:rxaction]
|
518
|
-
xml.field('name' => 'delivery', 'value' => rxxml[:delivery]) unless rxxml[:delivery]
|
519
|
-
xml.field('name' => 'ignorepharmzero', 'value' => rxxml[:ignorepharmzero]) unless rxxml[:ignorepharmzero]
|
520
|
-
xml.field('name' => 'orderedbyid', 'value' => rxxml[:orderedbyid]) unless rxxml[:orderedbyid]
|
521
|
-
xml.field('name' => 'newqty', 'value' => rxxml[:newqty]) unless rxxml[:newqty]
|
522
|
-
xml.field('name' => 'newrefills', 'value' => rxxml[:newrefills]) unless rxxml[:newrefills]
|
523
|
-
xml.field('name' => 'comments', 'value' => rxxml[:comments]) unless rxxml[:comments]
|
504
|
+
xml.field('name' => 'transid', 'value' => rxxml[:transid]) unless rxxml[:transid]
|
505
|
+
xml.field('name' => 'PharmID', 'value' => rxxml[:pharmid]) unless rxxml[:pharmid]
|
506
|
+
xml.field('name' => 'DDI', 'value' => rxxml[:ddi]) unless rxxml[:ddi]
|
507
|
+
xml.field('name' => 'GPPCCode', 'value' => rxxml[:gppccode]) unless rxxml[:gppccode]
|
508
|
+
xml.field('name' => 'GPPCText', 'value' => rxxml[:gppctext]) unless rxxml[:gppctext]
|
509
|
+
xml.field('name' => 'GPPCCustom', 'value' => rxxml[:gppccustom]) unless rxxml[:gppccustom]
|
510
|
+
xml.field('name' => 'Sig', 'value' => rxxml[:sig]) unless rxxml[:sig]
|
511
|
+
xml.field('name' => 'QuanPresc', 'value' => rxxml[:quanpresc]) unless rxxml[:quanpresc]
|
512
|
+
xml.field('name' => 'Refills', 'value' => rxxml[:refills]) unless rxxml[:refills]
|
513
|
+
xml.field('name' => 'DAW', 'value' => rxxml[:daw]) unless rxxml[:daw]
|
514
|
+
xml.field('name' => 'DaysSupply', 'value' => rxxml[:dayssupply]) unless rxxml[:dayssupply]
|
515
|
+
xml.field('name' => 'startdate', 'value' => utc_to_local(Date.parse(rxxml[:startdate].to_s))) unless rxxml[:startdate]
|
516
|
+
xml.field('name' => 'historicalflag', 'value' => rxxml[:historicalflag]) unless rxxml[:historicalflag]
|
517
|
+
xml.field('name' => 'rxaction', 'value' => rxxml[:rxaction]) unless rxxml[:rxaction]
|
518
|
+
xml.field('name' => 'delivery', 'value' => rxxml[:delivery]) unless rxxml[:delivery]
|
519
|
+
xml.field('name' => 'ignorepharmzero', 'value' => rxxml[:ignorepharmzero]) unless rxxml[:ignorepharmzero]
|
520
|
+
xml.field('name' => 'orderedbyid', 'value' => rxxml[:orderedbyid]) unless rxxml[:orderedbyid]
|
521
|
+
xml.field('name' => 'newqty', 'value' => rxxml[:newqty]) unless rxxml[:newqty]
|
522
|
+
xml.field('name' => 'newrefills', 'value' => rxxml[:newrefills]) unless rxxml[:newrefills]
|
523
|
+
xml.field('name' => 'comments', 'value' => rxxml[:comments]) unless rxxml[:comments]
|
524
|
+
xml.field('name' => 'orderstatus', 'value' => rxxml[:order_status]) unless rxxml[:order_status]
|
525
|
+
|
526
|
+
if rxxml[:problems]
|
527
|
+
rxxml[:problems].each do |problem|
|
528
|
+
xml.field('name' => 'Problem', 'value' => problem)
|
529
|
+
end
|
530
|
+
end
|
524
531
|
}
|
525
532
|
end
|
526
533
|
|
@@ -8,6 +8,15 @@ module AllscriptsUnityClient
|
|
8
8
|
|
9
9
|
def initialize(options)
|
10
10
|
@options = ClientOptions.new(options)
|
11
|
+
|
12
|
+
# If New Relic support is enabled, setup method tracing
|
13
|
+
if @options.new_relic
|
14
|
+
NewRelicSupport.enable_method_tracer(self)
|
15
|
+
|
16
|
+
class << self
|
17
|
+
add_method_tracer :magic
|
18
|
+
end
|
19
|
+
end
|
11
20
|
end
|
12
21
|
|
13
22
|
def security_token?
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module AllscriptsUnityClient
|
2
2
|
class ClientOptions
|
3
|
-
attr_accessor :proxy, :logger, :ca_file, :ca_path, :timeout
|
3
|
+
attr_accessor :proxy, :logger, :ca_file, :ca_path, :timeout, :new_relic
|
4
4
|
attr_reader :base_unity_url, :username, :password, :appname, :timezone
|
5
5
|
|
6
6
|
def initialize(options = {})
|
@@ -12,6 +12,7 @@ module AllscriptsUnityClient
|
|
12
12
|
@ca_file = options[:ca_file]
|
13
13
|
@ca_path = options[:ca_path]
|
14
14
|
@timeout = options[:timeout]
|
15
|
+
@new_relic = options[:new_relic]
|
15
16
|
|
16
17
|
self.timezone = options[:timezone]
|
17
18
|
self.base_unity_url = options[:base_unity_url]
|
@@ -78,5 +79,9 @@ module AllscriptsUnityClient
|
|
78
79
|
def timeout?
|
79
80
|
!@timeout.to_s.strip.empty?
|
80
81
|
end
|
82
|
+
|
83
|
+
def new_relic?
|
84
|
+
!@new_relic.nil?
|
85
|
+
end
|
81
86
|
end
|
82
87
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'oj'
|
2
2
|
require 'faraday'
|
3
3
|
require 'em-http-request'
|
4
4
|
|
@@ -22,17 +22,20 @@ module AllscriptsUnityClient
|
|
22
22
|
def magic(parameters = {})
|
23
23
|
request_data = JSONUnityRequest.new(parameters, @options.timezone, @options.appname, @security_token)
|
24
24
|
|
25
|
-
response =
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
25
|
+
response = nil
|
26
|
+
NewRelicSupport.trace_execution_scoped_if_available(JSONClientDriver, ["Custom/UnityJSON/#{parameters[:action]}"]) do
|
27
|
+
response = @connection.post do |request|
|
28
|
+
request.url "#{UNITY_JSON_ENDPOINT}/MagicJson"
|
29
|
+
request.headers['Content-Type'] = 'application/json'
|
30
|
+
request.body = Oj.dump(request_data.to_hash, mode: :compat)
|
31
|
+
set_request_timeout(request)
|
30
32
|
|
31
|
-
|
33
|
+
start_timer
|
34
|
+
end
|
32
35
|
end
|
33
36
|
end_timer
|
34
37
|
|
35
|
-
response =
|
38
|
+
response = Oj.load(response.body, mode: :strict)
|
36
39
|
|
37
40
|
raise_if_response_error(response)
|
38
41
|
log_magic(request_data)
|
@@ -55,7 +58,7 @@ module AllscriptsUnityClient
|
|
55
58
|
response = @connection.post do |request|
|
56
59
|
request.url "#{UNITY_JSON_ENDPOINT}/GetToken"
|
57
60
|
request.headers['Content-Type'] = 'application/json'
|
58
|
-
request.body =
|
61
|
+
request.body = Oj.dump(request_data, mode: :compat)
|
59
62
|
set_request_timeout(request)
|
60
63
|
|
61
64
|
start_timer
|
@@ -80,7 +83,7 @@ module AllscriptsUnityClient
|
|
80
83
|
response = @connection.post do |request|
|
81
84
|
request.url "#{UNITY_JSON_ENDPOINT}/RetireSecurityToken"
|
82
85
|
request.headers['Content-Type'] = 'application/json'
|
83
|
-
request.body =
|
86
|
+
request.body = Oj.dump(request_data, mode: :compat)
|
84
87
|
set_request_timeout(request)
|
85
88
|
|
86
89
|
start_timer
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module AllscriptsUnityClient
|
2
|
+
module NewRelicSupport
|
3
|
+
def self.enable_method_tracer(instance)
|
4
|
+
class << instance
|
5
|
+
if !respond_to?(:trace_execution_scoped) && !respond_to?(:add_method_tracer)
|
6
|
+
extend ::NewRelic::Agent::MethodTracer
|
7
|
+
end
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.trace_execution_scoped_if_available(klass, scope)
|
12
|
+
if klass.respond_to?(:trace_execution_scoped)
|
13
|
+
klass.trace_execution_scoped(scope, &Proc.new)
|
14
|
+
else
|
15
|
+
yield if block_given?
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -59,10 +59,13 @@ module AllscriptsUnityClient
|
|
59
59
|
soap_action: "#{UNITY_ENDPOINT_NAMESPACE}/Magic"
|
60
60
|
}
|
61
61
|
|
62
|
+
response = nil
|
62
63
|
begin
|
63
64
|
start_timer
|
64
|
-
|
65
|
-
|
65
|
+
NewRelicSupport.trace_execution_scoped_if_available(SOAPClientDriver, ["Custom/UnitySOAP/#{parameters[:action]}"]) do
|
66
|
+
response = @savon_client.call('Magic', call_data)
|
67
|
+
end_timer
|
68
|
+
end
|
66
69
|
rescue Savon::SOAPFault => e
|
67
70
|
raise APIError, e.message
|
68
71
|
end
|
data/spec/client_driver_spec.rb
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe
|
3
|
+
describe AllscriptsUnityClient::ClientDriver do
|
4
4
|
it_behaves_like 'a client driver'
|
5
5
|
|
6
6
|
subject { build(:client_driver) }
|
7
|
+
let(:new_relic_client_driver) { build(:client_driver, new_relic: true) }
|
7
8
|
|
8
9
|
describe '#client_type' do
|
9
10
|
it { expect(subject.client_type).to be(:none) }
|
data/spec/client_options_spec.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe
|
3
|
+
describe AllscriptsUnityClient::ClientOptions do
|
4
4
|
subject { build(:client_options) }
|
5
5
|
|
6
6
|
let(:url_with_slash) { 'http://www.example.com/' }
|
@@ -182,4 +182,20 @@ describe 'ClientOptions' do
|
|
182
182
|
end
|
183
183
|
end
|
184
184
|
end
|
185
|
+
|
186
|
+
describe '#new_relic?' do
|
187
|
+
context 'when new_relic is nil' do
|
188
|
+
it 'returns false' do
|
189
|
+
subject.new_relic = nil
|
190
|
+
expect(subject.new_relic?).to be_falsey
|
191
|
+
end
|
192
|
+
end
|
193
|
+
|
194
|
+
context 'when timeout is not nil' do
|
195
|
+
it 'returns true' do
|
196
|
+
subject.new_relic = true
|
197
|
+
expect(subject.new_relic?).to be_truthy
|
198
|
+
end
|
199
|
+
end
|
200
|
+
end
|
185
201
|
end
|
data/spec/client_spec.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe
|
3
|
+
describe AllscriptsUnityClient::JSONClientDriver do
|
4
4
|
it_behaves_like 'a client driver'
|
5
5
|
|
6
6
|
subject do
|
@@ -9,6 +9,7 @@ describe 'JSONClientDriver' do
|
|
9
9
|
client_driver
|
10
10
|
end
|
11
11
|
|
12
|
+
let(:new_relic_client_driver) { build(:json_client_driver, new_relic: true) }
|
12
13
|
let(:get_server_info) { FixtureLoader.load_file('get_server_info.json') }
|
13
14
|
let(:get_security_token) { FixtureLoader.load_file('get_security_token.json') }
|
14
15
|
let(:retire_security_token) { FixtureLoader.load_file('retire_security_token.json') }
|
@@ -23,7 +24,7 @@ describe 'JSONClientDriver' do
|
|
23
24
|
end
|
24
25
|
|
25
26
|
let(:json_hash) do
|
26
|
-
|
27
|
+
Oj.dump(hash, mode: :strict)
|
27
28
|
end
|
28
29
|
|
29
30
|
describe '#initialize' do
|
@@ -51,6 +52,11 @@ describe 'JSONClientDriver' do
|
|
51
52
|
expect(WebMock).to have_requested(:post, 'http://www.example.com/Unity/UnityService.svc/json/MagicJson').with(body: /\{"Action":(null|"[^"]*"),"AppUserID":(null|"[^"]*"),"Appname":(null|"[^"]*"),"PatientID":(null|"[^"]*"),"Token":(null|"[^"]*"),"Parameter1":(null|"[^"]*"),"Parameter2":(null|"[^"]*"),"Parameter3":(null|"[^"]*"),"Parameter4":(null|"[^"]*"),"Parameter5":(null|"[^"]*"),"Parameter6":(null|"[^"]*"),"Data":(null|"[^"]*")\}/, headers: { 'Content-Type' => 'application/json' })
|
52
53
|
end
|
53
54
|
|
55
|
+
it 'should serialize DateTime to iso8601 when given' do
|
56
|
+
subject.magic(parameter1: DateTime.now)
|
57
|
+
expect(WebMock).to have_requested(:post, 'http://www.example.com/Unity/UnityService.svc/json/MagicJson').with(body: /\{"Action":(null|"[^"]*"),"AppUserID":(null|"[^"]*"),"Appname":(null|"[^"]*"),"PatientID":(null|"[^"]*"),"Token":(null|"[^"]*"),"Parameter1":"\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(-|\+)\d{2}:\d{2}","Parameter2":(null|"[^"]*"),"Parameter3":(null|"[^"]*"),"Parameter4":(null|"[^"]*"),"Parameter5":(null|"[^"]*"),"Parameter6":(null|"[^"]*"),"Data":(null|"[^"]*")\}/, headers: { 'Content-Type' => 'application/json' })
|
58
|
+
end
|
59
|
+
|
54
60
|
it 'should call start_timer' do
|
55
61
|
subject.magic
|
56
62
|
expect(subject).to have_received(:start_timer)
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe AllscriptsUnityClient::NewRelicSupport do
|
4
|
+
subject { described_class }
|
5
|
+
let(:scope) { ['scope'] }
|
6
|
+
let(:block) { lambda {} }
|
7
|
+
|
8
|
+
before :all do
|
9
|
+
# Mock a test class for NewRelic mixin tests.
|
10
|
+
class NewRelicSupportTest
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
describe '.enable_method_tracer' do
|
15
|
+
context 'when given an object that does not have the NewRelic::Agent::MethodTracer module mixed in' do
|
16
|
+
it 'mixes in the NewRelic::Agent::MethodTracer module' do
|
17
|
+
allow(NewRelicSupportTest).to receive(:extend)
|
18
|
+
subject.enable_method_tracer(NewRelicSupportTest.new)
|
19
|
+
expect(NewRelicSupportTest).to have_received(:extend).with(::NewRelic::Agent::MethodTracer)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
context 'when given an object that does have the NewRelic::Agent::MethodTracer module mixed in' do
|
24
|
+
it 'does not mix in the NewRelic::Agent::MethodTracer module' do
|
25
|
+
allow(NewRelicSupportTest).to receive(:extend)
|
26
|
+
allow(NewRelicSupportTest).to receive(:trace_execution_scoped)
|
27
|
+
allow(NewRelicSupportTest).to receive(:add_method_tracer)
|
28
|
+
subject.enable_method_tracer(NewRelicSupportTest.new)
|
29
|
+
expect(NewRelicSupportTest).not_to have_received(:extend).with(::NewRelic::Agent::MethodTracer)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
describe '.trace_execution_scoped_if_available' do
|
35
|
+
context 'when a class does not have trace_execution_scoped and is given block' do
|
36
|
+
it 'will yield to the block' do
|
37
|
+
expect { |b| subject.trace_execution_scoped_if_available(NewRelicSupportTest, scope, &b) }.to yield_control
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
context 'when a class has trace_execution_scoped and is given a block' do
|
42
|
+
it 'will pass the block to trace_execution_scoped' do
|
43
|
+
allow(NewRelicSupportTest).to receive(:trace_execution_scoped)
|
44
|
+
subject.trace_execution_scoped_if_available(NewRelicSupportTest, scope, &block)
|
45
|
+
expect(NewRelicSupportTest).to have_received(:trace_execution_scoped).with(scope)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe
|
3
|
+
describe AllscriptsUnityClient::SOAPClientDriver do
|
4
4
|
include Savon::SpecHelper
|
5
5
|
it_behaves_like 'a client driver'
|
6
6
|
|
@@ -10,6 +10,7 @@ describe 'SOAPClientDriver' do
|
|
10
10
|
client_driver
|
11
11
|
end
|
12
12
|
|
13
|
+
let(:new_relic_client_driver) { build(:soap_client_driver, new_relic: true) }
|
13
14
|
let(:get_server_info) { FixtureLoader.load_file('get_server_info.xml') }
|
14
15
|
let(:get_security_token) { FixtureLoader.load_file('get_security_token.xml') }
|
15
16
|
let(:retire_security_token) { FixtureLoader.load_file('retire_security_token.xml') }
|
@@ -0,0 +1,16 @@
|
|
1
|
+
RSpec.configure do |config|
|
2
|
+
config.before(:suite) do
|
3
|
+
# Mock the NewRelic::Agent::MethodTracer module
|
4
|
+
module NewRelic
|
5
|
+
module Agent
|
6
|
+
module MethodTracer
|
7
|
+
def trace_execution_scoped
|
8
|
+
end
|
9
|
+
|
10
|
+
def add_method_tracer
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -1,4 +1,16 @@
|
|
1
1
|
shared_examples 'a client driver' do
|
2
|
+
describe '#initialize' do
|
3
|
+
context 'when options.new_relic is true' do
|
4
|
+
it 'enables NewRelic tracing' do
|
5
|
+
allow(AllscriptsUnityClient::NewRelicSupport).to receive(:enable_method_tracer)
|
6
|
+
allow(described_class).to receive(:add_method_tracer)
|
7
|
+
new_relic_client_driver
|
8
|
+
expect(AllscriptsUnityClient::NewRelicSupport).to have_received(:enable_method_tracer).with(new_relic_client_driver)
|
9
|
+
expect(described_class).to have_received(:add_method_tracer).with(:magic)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
2
14
|
describe '#security_token?' do
|
3
15
|
context 'when @security_token is nil' do
|
4
16
|
it do
|
data/spec/timezone_spec.rb
CHANGED
data/spec/unity_request_spec.rb
CHANGED
data/spec/unity_response_spec.rb
CHANGED
data/spec/utilities_spec.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: allscripts_unity_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ash Gupta
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-07-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: savon
|
@@ -115,6 +115,20 @@ dependencies:
|
|
115
115
|
- - ~>
|
116
116
|
- !ruby/object:Gem::Version
|
117
117
|
version: 1.1.0
|
118
|
+
- !ruby/object:Gem::Dependency
|
119
|
+
name: oj
|
120
|
+
requirement: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ~>
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: 2.9.8
|
125
|
+
type: :runtime
|
126
|
+
prerelease: false
|
127
|
+
version_requirements: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ~>
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: 2.9.8
|
118
132
|
- !ruby/object:Gem::Dependency
|
119
133
|
name: factory_girl
|
120
134
|
requirement: !ruby/object:Gem::Requirement
|
@@ -163,14 +177,14 @@ dependencies:
|
|
163
177
|
requirements:
|
164
178
|
- - ~>
|
165
179
|
- !ruby/object:Gem::Version
|
166
|
-
version: 3.0.0
|
180
|
+
version: 3.0.0
|
167
181
|
type: :development
|
168
182
|
prerelease: false
|
169
183
|
version_requirements: !ruby/object:Gem::Requirement
|
170
184
|
requirements:
|
171
185
|
- - ~>
|
172
186
|
- !ruby/object:Gem::Version
|
173
|
-
version: 3.0.0
|
187
|
+
version: 3.0.0
|
174
188
|
- !ruby/object:Gem::Dependency
|
175
189
|
name: simplecov
|
176
190
|
requirement: !ruby/object:Gem::Requirement
|
@@ -236,6 +250,7 @@ files:
|
|
236
250
|
- lib/allscripts_unity_client/json_client_driver.rb
|
237
251
|
- lib/allscripts_unity_client/json_unity_request.rb
|
238
252
|
- lib/allscripts_unity_client/json_unity_response.rb
|
253
|
+
- lib/allscripts_unity_client/new_relic_support.rb
|
239
254
|
- lib/allscripts_unity_client/soap_client_driver.rb
|
240
255
|
- lib/allscripts_unity_client/timezone.rb
|
241
256
|
- lib/allscripts_unity_client/unity_request.rb
|
@@ -250,11 +265,7 @@ files:
|
|
250
265
|
- spec/factories/client_driver_factory.rb
|
251
266
|
- spec/factories/client_factory.rb
|
252
267
|
- spec/factories/client_options.rb
|
253
|
-
- spec/factories/json_client_driver_factory.rb
|
254
|
-
- spec/factories/json_unity_request_factory.rb
|
255
|
-
- spec/factories/json_unity_response_factory.rb
|
256
268
|
- spec/factories/magic_request_factory.rb
|
257
|
-
- spec/factories/soap_client_driver_factory.rb
|
258
269
|
- spec/factories/timezone_factory.rb
|
259
270
|
- spec/factories/unity_request_factory.rb
|
260
271
|
- spec/factories/unity_response_factory.rb
|
@@ -281,10 +292,12 @@ files:
|
|
281
292
|
- spec/json_client_driver_spec.rb
|
282
293
|
- spec/json_unity_request_spec.rb
|
283
294
|
- spec/json_unity_response_spec.rb
|
295
|
+
- spec/new_relic_support_spec.rb
|
284
296
|
- spec/soap_client_driver_spec.rb
|
285
297
|
- spec/spec_helper.rb
|
286
298
|
- spec/support/factory_girl.rb
|
287
299
|
- spec/support/fixture_loader.rb
|
300
|
+
- spec/support/new_relic.rb
|
288
301
|
- spec/support/shared_examples_for_client_driver.rb
|
289
302
|
- spec/support/shared_examples_for_unity_request.rb
|
290
303
|
- spec/support/shared_examples_for_unity_response.rb
|