pokitdok-ruby 0.7.4 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,16 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: pokitdok-ruby 0.7.4 ruby lib
5
+ # stub: pokitdok-ruby 0.8.0 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "pokitdok-ruby"
9
- s.version = "0.7.4"
9
+ s.version = "0.8.0"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib"]
13
13
  s.authors = ["PokitDok, Inc."]
14
- s.date = "2016-05-16"
14
+ s.date = "2016-07-13"
15
15
  s.description = "Gem for easy access to the PokitDok Platform APIs."
16
16
  s.email = "platform@pokitdok.com"
17
17
  s.extra_rdoc_files = [
@@ -28,36 +28,20 @@ Gem::Specification.new do |s|
28
28
  "README.md",
29
29
  "Rakefile",
30
30
  "VERSION",
31
+ "lib/OAuthApplicationClient.rb",
31
32
  "lib/pokitdok.rb",
32
33
  "pokitdok-ruby.gemspec",
34
+ "spec/fixtures/acme_inc_supplemental_identifiers.834",
33
35
  "spec/fixtures/authorizations.json",
36
+ "spec/fixtures/chiropractic_example.837",
34
37
  "spec/fixtures/claim.json",
35
38
  "spec/fixtures/claims_status.json",
36
39
  "spec/fixtures/enrollment.json",
40
+ "spec/fixtures/identity_match.json",
37
41
  "spec/fixtures/referrals.json",
38
42
  "spec/fixtures/sample.270",
39
43
  "spec/pokitdok_spec.rb",
40
- "spec/spec_helper.rb",
41
- "spec/vcr_setup.rb",
42
- "vcr_cassettes/activities.yml",
43
- "vcr_cassettes/auth.yml",
44
- "vcr_cassettes/authorizations.yml",
45
- "vcr_cassettes/cash_prices.yml",
46
- "vcr_cassettes/claims.yml",
47
- "vcr_cassettes/claims_status.yml",
48
- "vcr_cassettes/eligibility.yml",
49
- "vcr_cassettes/enrollment.yml",
50
- "vcr_cassettes/files.yml",
51
- "vcr_cassettes/insurance_prices.yml",
52
- "vcr_cassettes/payers.yml",
53
- "vcr_cassettes/plans.yml",
54
- "vcr_cassettes/plans_no_args.yml",
55
- "vcr_cassettes/providers.yml",
56
- "vcr_cassettes/referrals.yml",
57
- "vcr_cassettes/scheduling.yml",
58
- "vcr_cassettes/scheduling_scoped.yml",
59
- "vcr_cassettes/trading_partners_get.yml",
60
- "vcr_cassettes/trading_partners_index.yml"
44
+ "spec/spec_helper.rb"
61
45
  ]
62
46
  s.homepage = "http://github.com/pokitdok/pokitdok-ruby"
63
47
  s.licenses = ["MIT"]
@@ -79,7 +63,6 @@ Gem::Specification.new do |s|
79
63
  s.add_development_dependency(%q<jeweler>, ["~> 2.0"])
80
64
  s.add_development_dependency(%q<ansi>, ["~> 1.4"])
81
65
  s.add_development_dependency(%q<minitest-reporters>, ["~> 1.0"])
82
- s.add_development_dependency(%q<vcr>, ["~> 2.9"])
83
66
  s.add_development_dependency(%q<webmock>, ["~> 1.17"])
84
67
  s.add_development_dependency(%q<guard>, ["~> 2.6"])
85
68
  s.add_development_dependency(%q<guard-minitest>, ["~> 2.2"])
@@ -99,7 +82,6 @@ Gem::Specification.new do |s|
99
82
  s.add_dependency(%q<jeweler>, ["~> 2.0"])
100
83
  s.add_dependency(%q<ansi>, ["~> 1.4"])
101
84
  s.add_dependency(%q<minitest-reporters>, ["~> 1.0"])
102
- s.add_dependency(%q<vcr>, ["~> 2.9"])
103
85
  s.add_dependency(%q<webmock>, ["~> 1.17"])
104
86
  s.add_dependency(%q<guard>, ["~> 2.6"])
105
87
  s.add_dependency(%q<guard-minitest>, ["~> 2.2"])
@@ -120,7 +102,6 @@ Gem::Specification.new do |s|
120
102
  s.add_dependency(%q<jeweler>, ["~> 2.0"])
121
103
  s.add_dependency(%q<ansi>, ["~> 1.4"])
122
104
  s.add_dependency(%q<minitest-reporters>, ["~> 1.0"])
123
- s.add_dependency(%q<vcr>, ["~> 2.9"])
124
105
  s.add_dependency(%q<webmock>, ["~> 1.17"])
125
106
  s.add_dependency(%q<guard>, ["~> 2.6"])
126
107
  s.add_dependency(%q<guard-minitest>, ["~> 2.2"])
@@ -0,0 +1,35 @@
1
+ ISA*03*MOCKINFO *01*MOCKINFO *30*MOCKID *30*RECEIVER *150807*1714*^*00501*000000001*1*T*:~
2
+ GS*BE*MOCKID*123LOCAL*20150807*1714*1*X*005010X220A1~
3
+ ST*834*0001*005010X220A1~
4
+ BGN*00*a4db5c6981cb418eab3401fa36dbf1b6*20150807*1714****2~
5
+ N1*P5*ACME INC*FI*123456789~
6
+ N1*IN*GET WELL COMPANY*FI*953760001~
7
+ INS*Y*18*021*20*A***FT~
8
+ REF*0F*777999542~
9
+ REF*1L*A64692~
10
+ REF*17*Client Reporting Category~
11
+ REF*23*Client Number~
12
+ REF*3H*Case Number~
13
+ REF*4A*Personal Identification Number (PIN)~
14
+ REF*6O*Cross Reference Number~
15
+ REF*ABB*Personal ID Number~
16
+ REF*D3*Prescription Drug Programs Pharmacy Number~
17
+ REF*DX*Department/Agency Number~
18
+ REF*F6*Health Insurance Claim (HIC) Number~
19
+ REF*P5*Position Code~
20
+ REF*Q4*Prior Identifier Number~
21
+ REF*QQ*Unit Number~
22
+ REF*ZZ*Mutually Defined~
23
+ DTP*356*D8*20150901~
24
+ DTP*336*D8*20150802~
25
+ NM1*IL*1*DOE*JOHN****34*777999542~
26
+ N3*123 MAIN ST~
27
+ N4*CANOGA PARK*CA*91303~
28
+ DMG*D8*19851111*M~
29
+ HD*021**PPO*1K4C~
30
+ DTP*348*D8*20150901~
31
+ HD*021**DEN*1QCS~
32
+ DTP*348*D8*20150901~
33
+ SE*19*0001~
34
+ GE*1*1~
35
+ IEA*1*000000001~
@@ -0,0 +1,33 @@
1
+ ISA*00* *00* *01*0000000000001 *01*0000000000002 *100822*1134*U*00200*000000007*0*T*:~
2
+ GS*HC*000000000001*000000000002*20100822*1615*7*X*005010X222A1~
3
+ ST*837*3701*005010X222A1~
4
+ BHT*0019*00*007227*20050215*075420*CH~
5
+ NM1*41*2*POKITDOK, INC*****46*1912301953~
6
+ PER*IC*FRONT DESK*TE*8001234567~
7
+ NM1*40*2*MEDICARE PART B*****46*12345~
8
+ HL*1**20*1~
9
+ NM1*85*1*CORBIN*BRIAN****XX*1467857193~
10
+ N3*123 MAIN ST~
11
+ N4*SOME TOWN*SC*123450123~
12
+ REF*EI*987654321~
13
+ PER*IC*THE DOCTOR*TE*8001234567~
14
+ HL*2*1*22*0~
15
+ SBR*P*18*******MB~
16
+ NM1*IL*1*DOE*JOHN*J***MI*123456789A~
17
+ N3*123 MAIN ST~
18
+ N4*A TOWN*SC*12345~
19
+ DMG*D8*19500101*M~
20
+ NM1*PR*2*MEDICARE PART B*****PI*12345~
21
+ CLM*CLAIM1*145.5***11:B:1*Y*A*Y*Y~
22
+ DTP*454*D8*20050115~
23
+ DTP*453*D8*20050110~
24
+ DTP*455*D8*20050113~
25
+ CR2********A**CHRONIC PAIN AND DISCOMFORT~
26
+ HI*BK:7215~
27
+ LX*1~
28
+ SV1*HC:98940*145.5*UN*1***1~
29
+ DTP*472*D8*20050215~
30
+ REF*6R*01~
31
+ SE*29*3701~
32
+ GE*1*7~
33
+ IEA*1*000000007~
@@ -0,0 +1,29 @@
1
+ {
2
+ "data_filters": ["filter_a", "filter_b"],
3
+ "match_configuration": [
4
+ {
5
+ "source_field": "first_name",
6
+ "match_algorithm": "levenshtein",
7
+ "search_fields": ["nickname"],
8
+ "weight": 30
9
+ },
10
+ {
11
+ "source_field": "middle_name",
12
+ "match_algorithm": "stemming",
13
+ "weight": 30
14
+ },
15
+ {
16
+ "source_field": "last_name",
17
+ "match_algorithm": "soundex",
18
+ "weight": 30
19
+ },
20
+ {
21
+ "source_field": "birth_date",
22
+ "match_algorithm": "exact",
23
+ "search_fields": ["dob", "date_of_birth"],
24
+ "weight": 10
25
+ }
26
+ ],
27
+ "threshold": 80,
28
+ "callback_url": "https://platform.pokidok.com/callme?handler=thething"
29
+ }
@@ -2,381 +2,698 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- CLIENT_ID = 'jlHrMhG8CZudpJXHp0Rr'
6
- CLIENT_SECRET = '347iuIN8T7zOzE7wtyk1vQGfjxuTE3yjxb8nlFev'
5
+ CLIENT_ID = 'F7q38MzlwOxUwTHb7jvk'
6
+ CLIENT_SECRET = 'O8DRamKmKMLtSTPjK99eUlbfOQEc44VVmp8ARmcY'
7
7
  SCHEDULE_AUTH_CODE = 'KmCCkuYkSmPEf7AxaCIUApX1pUFedJx9CrDWPMD8'
8
- POKITDOK_TEST_URL = 'http://localhost:5002'
8
+ BASE_URL = 'https://platform.pokitdok.com/v4/api'
9
+ MATCH_NETWORK_LOCATION = /(.*\.)?pokitdok\.com/
10
+ MATCH_OAUTH2_PATH = /[\/]oauth2[\/]token/
11
+ TEST_REQUEST_PATH = '/endpoint'
9
12
 
10
- def check_meta_and_data(result)
11
- refute_empty result['meta']
12
- refute_empty result['data']
13
- end
13
+ class PokitDokTest < MiniTest::Test
14
+ @@pokitdok = nil
15
+ @@current_request = nil
14
16
 
15
- describe PokitDok do
16
- describe 'Authenticated functions' do
17
- before do
18
- PokitDok::PokitDok.any_instance.stubs(:url_base).returns(POKITDOK_TEST_URL)
17
+ describe PokitDok do
19
18
 
20
- VCR.use_cassette 'auth' do
21
- @pokitdok = PokitDok::PokitDok.new(CLIENT_ID, CLIENT_SECRET)
22
- @pokitdok.scope_code('user_schedule', SCHEDULE_AUTH_CODE)
23
- end
24
- end
19
+ describe 'Authenticated functions' do
25
20
 
26
- it 'should default to the v4 api specification' do
27
- @pokitdok.api_url.must_match /.*v4.*/
28
- end
21
+ let(:base_headers) {
22
+ {
23
+ :'User-Agent' => "#{@@pokitdok.user_agent}"
24
+ }
25
+ }
26
+ let(:json_headers) {
27
+ {
28
+ :'User-Agent' => "#{@@pokitdok.user_agent}",
29
+ :'Content-Type'=> 'application/json'
30
+ }
31
+ }
32
+
33
+ let(:snub_auth) {
34
+ stub_request(:post, /#{MATCH_NETWORK_LOCATION}#{MATCH_OAUTH2_PATH}/).
35
+ to_return(
36
+ :status => 200,
37
+ :body => '{
38
+ "access_token": "s8KYRJGTO0rWMy0zz1CCSCwsSesDyDlbNdZoRqVR",
39
+ "token_type": "bearer",
40
+ "expires": 1393350569,
41
+ "expires_in": 3600
42
+ }',
43
+ :headers => {
44
+ 'Server'=> 'nginx',
45
+ 'Date' => Time.now(),
46
+ 'Content-type' => 'application/json;charset=UTF-8',
47
+ 'Connection' => 'keep-alive',
48
+ 'Pragma' => 'no-cache',
49
+ 'Cache-Control' => 'no-store'
50
+ }).times(2)
51
+ }
52
+
53
+ before do
54
+ if @@pokitdok.nil?
55
+ snub_auth
56
+
57
+ @@pokitdok = PokitDok::PokitDok.new(CLIENT_ID, CLIENT_SECRET)
58
+ end
59
+ end
29
60
 
30
- it 'should revert to the v3 api specification if requested' do
31
- VCR.use_cassette 'auth' do
32
- @pokitdok3 = PokitDok::PokitDok.new(CLIENT_ID, CLIENT_SECRET, 'v3')
33
- @pokitdok3.api_url.must_match /.*v3.*/
61
+ describe 'Test token reuse' do
62
+ it 'should work with existing token' do
63
+ snub_auth
64
+ pokitdok_for_token = PokitDok::PokitDok.new(CLIENT_ID, CLIENT_SECRET)
65
+ first_token = pokitdok_for_token.token
66
+
67
+ snub_auth
68
+ pokitdok_with_old_token = PokitDok::PokitDok.new(CLIENT_ID, CLIENT_SECRET, nil, nil, nil, nil, nil, token=first_token)
69
+ second_token = pokitdok_with_old_token.token
70
+
71
+ stub_request(:get, MATCH_NETWORK_LOCATION).
72
+ to_return(status: 200, body: '{ "string" : "" }')
73
+ assert first_token == second_token
74
+ results = pokitdok_with_old_token.activities
75
+ refute_nil(results)
76
+
77
+ snub_auth
78
+ pokitdok_for_new_token = PokitDok::PokitDok.new(CLIENT_ID, CLIENT_SECRET)
79
+ third_token = pokitdok_for_new_token.token
80
+ assert (first_token != third_token) && (second_token != third_token)
81
+ end
34
82
  end
35
- end
36
83
 
37
- it 'should instantiate with a client id and client secret' do
38
- refute_nil(@pokitdok, 'New PokitDok was nil.')
39
- end
84
+ describe 'Test Connection' do
85
+ it 'should instantiate the api_client' do
86
+ refute_nil(@@pokitdok.api_client)
87
+ end
88
+ end
40
89
 
41
- it 'should authenticate on a new connection' do
42
- refute_nil @pokitdok.client
43
- end
90
+ describe 'General Request method' do
91
+ it 'should test request post' do
92
+ stub_request(:post, MATCH_NETWORK_LOCATION).
93
+ to_return(lambda { |request|
94
+ @@current_request = request
95
+ {
96
+ status: 200,
97
+ body: '{ "string" : "" }'
98
+ }
99
+ })
100
+
101
+ @@pokitdok.request(TEST_REQUEST_PATH, 'POST', nil, {param: 'value'})
102
+ json_headers.each do |key, value|
103
+ assert_equal(value, @@current_request.headers["#{key}"])
104
+ end
105
+
106
+ # NOTE: Currently this shows as an error in an IDE. I believe this is because it's
107
+ # a reserved property in Ruby
108
+ assert_equal('post', "#{@@current_request.method}")
109
+ end
110
+ it 'should test request put' do
111
+ stub_request(:put, MATCH_NETWORK_LOCATION).
112
+ to_return(lambda { |request|
113
+ @@current_request = request
114
+ {
115
+ status: 200,
116
+ body: '{ "string" : "" }'
117
+ }
118
+ })
119
+
120
+ @@pokitdok.request(TEST_REQUEST_PATH, 'PUT', nil, {param: 'value'})
121
+ json_headers.each do |key, value|
122
+ assert_equal(value, @@current_request.headers["#{key}"])
123
+ end
124
+
125
+ # NOTE: Currently this shows as an error in an IDE. I believe this is because it's
126
+ # a reserved property in Ruby
127
+ assert_equal('put', "#{@@current_request.method}")
128
+ end
129
+ it 'should test request get' do
130
+ stub_request(:get, MATCH_NETWORK_LOCATION).
131
+ to_return(lambda { |request|
132
+ @@current_request = request
133
+ {
134
+ status: 200,
135
+ body: '{ "string" : "" }'
136
+ }
137
+ })
138
+
139
+ @@pokitdok.request(TEST_REQUEST_PATH, 'GET', nil, {param: 'value'})
140
+ base_headers.each do |key, value|
141
+ assert_equal(value, @@current_request.headers["#{key}"])
142
+ end
143
+
144
+ # NOTE: Currently this shows as an error in an IDE. I believe this is because it's
145
+ # a reserved property in Ruby
146
+ assert_equal('get', "#{@@current_request.method}")
147
+ end
148
+ it 'should test request delete' do
149
+ stub_request(:delete, MATCH_NETWORK_LOCATION).
150
+ to_return(lambda { |request|
151
+ @@current_request = request
152
+ {
153
+ status: 200,
154
+ body: '{ "string" : "" }'
155
+ }
156
+ })
157
+
158
+ @@pokitdok.request(TEST_REQUEST_PATH, 'DELETE', nil, {param: 'value'})
159
+ base_headers.each do |key, value|
160
+ assert_equal(value, @@current_request.headers["#{key}"])
161
+ end
162
+
163
+ # NOTE: Currently this shows as an error in an IDE. I believe this is because it's
164
+ # a reserved property in Ruby
165
+ assert_equal('delete', "#{@@current_request.method}")
166
+ end
167
+ end
44
168
 
45
- it 'should refresh the connection if it expires' do
46
- skip 'Not implemented'
47
- end
169
+ describe 'Activities endpoint' do
170
+ it 'should expose the activities endpoint' do
171
+ stub_request(:get, MATCH_NETWORK_LOCATION).
172
+ to_return(status: 200, body: '{ "string" : "" }')
48
173
 
49
- describe 'Activities endpoint' do
50
- it 'should expose the activities endpoint' do
51
- VCR.use_cassette 'activities' do
52
- @activities = @pokitdok.activities
174
+ @activities = @@pokitdok.activities
175
+ refute_nil(@activities)
53
176
  end
54
177
 
55
- check_meta_and_data @activities
56
- refute_empty @activities['data']
178
+ it 'should expose the activities endpoint with an id parameter' do
179
+ stub_request(:get, MATCH_NETWORK_LOCATION).
180
+ to_return(status: 200, body: '{ "string" : "" }')
181
+
182
+ @activities = @@pokitdok.activities(activity_id: 'activity_id')
183
+ refute_nil(@activities)
184
+ end
57
185
  end
58
- end
59
186
 
60
- describe 'Authorizations endpoint' do
61
- it 'should expose the authorizations endpoint' do
62
- query = JSON.parse(IO.read('spec/fixtures/authorizations.json'))
187
+ describe 'Cash Prices endpoint' do
188
+ it 'should expose the cash prices endpoint' do
189
+ stub_request(:get, MATCH_NETWORK_LOCATION).
190
+ to_return(status: 200, body: '{ "string" : "" }')
63
191
 
64
- VCR.use_cassette 'authorizations' do
65
- @authorizations = @pokitdok.authorizations query
66
- end
192
+ query = { cpt_code: '90658', zip_code: '94403' }
193
+ @prices = @@pokitdok.cash_prices query
67
194
 
68
- check_meta_and_data @authorizations
69
- refute_empty @authorizations['data']
195
+ refute_nil(@prices)
196
+ end
70
197
  end
71
- end
72
198
 
73
- describe 'Cash Prices endpoint' do
74
- it 'should expose the cash prices endpoint' do
75
- query = { cpt_code: '90658', zip_code: '94403' }
199
+ describe 'Claims endpoint' do
200
+ it 'should expose the claims endpoint' do
201
+ stub_request(:post, MATCH_NETWORK_LOCATION).
202
+ to_return(status: 200, body: '{ "string" : "" }')
203
+
204
+ query = JSON.parse(IO.read('spec/fixtures/claim.json'))
205
+ @claim = @@pokitdok.claims(query)
76
206
 
77
- VCR.use_cassette 'cash_prices' do
78
- @prices = @pokitdok.cash_prices query
207
+ refute_nil(@claim)
79
208
  end
209
+ end
210
+
211
+ describe 'Claims status endpoint' do
212
+ it 'should expose the claims status endpoint' do
213
+ stub_request(:post, MATCH_NETWORK_LOCATION).
214
+ to_return(status: 200, body: '{ "string" : "" }')
80
215
 
81
- check_meta_and_data @prices
82
- refute_empty @prices['data']
216
+ query = JSON.parse(IO.read('spec/fixtures/claims_status.json'))
217
+ @claims_status = @@pokitdok.claims_status(query)
218
+
219
+ refute_nil(@claims_status)
220
+ end
83
221
  end
84
- end
85
222
 
86
- describe 'Insurance Prices endpoint' do
87
- it 'should expose the insurance prices endpoint' do
88
- query = { cpt_code: '87799', zip_code: '32218' }
223
+ describe 'Medical Procedure Endpoint endpoint' do
224
+ it 'should expose the mpc endpoint when a code is specified' do
225
+ stub_request(:get, MATCH_NETWORK_LOCATION).
226
+ to_return(status: 200, body: '{ "string" : "" }')
227
+
228
+ query = { code: '99213' }
229
+ @mpc = @@pokitdok.mpc(query)
89
230
 
90
- VCR.use_cassette 'insurance_prices' do
91
- @prices = @pokitdok.insurance_prices query
231
+ refute_nil(@mpc)
92
232
  end
233
+ it 'should expose the mpc endpoint when name is specified' do
234
+ stub_request(:get, MATCH_NETWORK_LOCATION).
235
+ to_return(status: 200, body: '{ "string" : "" }')
93
236
 
94
- check_meta_and_data @prices
95
- refute_empty @prices['data']
237
+ query = { name: 'office' }
238
+ @mpc = @@pokitdok.mpc(query)
239
+
240
+ refute_nil(@mpc)
241
+ end
96
242
  end
97
- end
98
243
 
244
+ describe 'ICD Convert endpoint' do
245
+ it 'should expose the icd convert endpoint' do
246
+ stub_request(:get, MATCH_NETWORK_LOCATION).
247
+ to_return(status: 200, body: '{ "string" : "" }')
99
248
 
100
- describe 'Claims endpoint' do
101
- it 'should expose the claims endpoint' do
102
- query = JSON.parse(IO.read('spec/fixtures/claim.json'))
103
- VCR.use_cassette 'claims' do
104
- @claim = @pokitdok.claims(query)
249
+ @icd = @@pokitdok.icd_convert({code: '250.12'})
250
+ refute_nil(@icd)
105
251
  end
252
+ end
106
253
 
107
- check_meta_and_data @claim
108
- refute_empty @claim['data']
109
- @claim['data']['units_of_work'].must_equal 1
110
- assert_nil @claim['errors']
254
+ describe 'Claims convert endpoint' do
255
+ it 'should expose the claims convert endpoint' do
256
+ stub_request(:post, MATCH_NETWORK_LOCATION).
257
+ to_return(status: 200, body: '{ "string" : "" }')
258
+
259
+ @converted_claim = @@pokitdok.claims_convert('spec/fixtures/chiropractic_example.837')
260
+
261
+ refute_nil(@converted_claim)
262
+ end
111
263
  end
112
- end
113
264
 
114
- describe 'Claims status endpoint' do
115
- it 'should expose the claims status endpoint' do
116
- query = JSON.parse(IO.read('spec/fixtures/claims_status.json'))
117
- VCR.use_cassette 'claims_status' do
118
- @claims_status = @pokitdok.claims_status(query)
265
+ describe 'Eligibility endpoint' do
266
+ it 'should expose the eligibility endpoint' do
267
+ stub_request(:post, MATCH_NETWORK_LOCATION).
268
+ to_return(status: 200, body: '{ "string" : "" }')
269
+
270
+ @eligibility_query = {
271
+ member: {
272
+ birth_date: '1970-01-01',
273
+ first_name: 'Jane',
274
+ last_name: 'Doe',
275
+ id: 'W000000000'
276
+ },
277
+ provider: {
278
+ first_name: 'JEROME',
279
+ last_name: 'AYA-AY',
280
+ npi: '1467560003'
281
+ },
282
+ service_types: ['health_benefit_plan_coverage'],
283
+ trading_partner_id: 'MOCKPAYER'
284
+ }
285
+ @eligibility = @@pokitdok.eligibility(@eligibility_query)
286
+
287
+ refute_nil(@eligibility)
119
288
  end
289
+ end
290
+
291
+ describe 'Enrollment endpoint' do
292
+ it 'should expose the enrollment endpoint' do
293
+ stub_request(:post, MATCH_NETWORK_LOCATION).
294
+ to_return(status: 200, body: '{ "string" : "" }')
120
295
 
121
- check_meta_and_data @claims_status
122
- refute_empty @claims_status['data']
296
+ query = JSON.parse(IO.read('spec/fixtures/enrollment.json'))
297
+ @enrollment = @@pokitdok.enrollment(query)
123
298
 
124
- assert_nil @claims_status['errors']
299
+ refute_nil(@enrollment)
300
+ end
125
301
  end
126
- end
127
302
 
128
- describe 'Eligibility endpoint' do
129
- it 'should expose the eligibility endpoint' do
130
- @eligibility_query = {
131
- member: {
132
- birth_date: '1970-01-01',
133
- first_name: 'Jane',
134
- last_name: 'Doe',
135
- id: 'W000000000'
136
- },
137
- provider: {
138
- first_name: 'JEROME',
139
- last_name: 'AYA-AY',
140
- npi: '1467560003'
141
- },
142
- service_types: ['health_benefit_plan_coverage'],
143
- trading_partner_id: 'MOCKPAYER'
144
- }
303
+ describe 'Enrollment Snapshot endpoint' do
304
+ it 'should expose the enrollment snapshot endpoint' do
305
+ stub_request(:post, MATCH_NETWORK_LOCATION).
306
+ to_return(status: 200, body: '{ "string" : "" }')
307
+
308
+ @enrollment_snapshot_activity = @@pokitdok.enrollment_snapshot('MOCKPAYER', 'spec/fixtures/acme_inc_supplemental_identifiers.834')
145
309
 
146
- VCR.use_cassette 'eligibility' do
147
- @eligibility = @pokitdok.eligibility(@eligibility_query)
310
+ refute_nil(@enrollment_snapshot_activity)
148
311
  end
312
+ it 'should expose the enrollment snapshots endpoint' do
313
+ stub_request(:get, MATCH_NETWORK_LOCATION).
314
+ to_return(status: 200, body: '{ "string" : "" }')
149
315
 
150
- check_meta_and_data @eligibility
151
- refute_nil @eligibility['data']
152
- assert_nil @eligibility['data']['errors']
153
- end
154
- end
316
+ @enrollment_snapshot = @@pokitdok.enrollment_snapshots({snapshot_id: '577294e00640fd5ce02d493f'})
155
317
 
156
- describe 'Enrollment endpoint' do
157
- it 'should expose the enrollment endpoint' do
158
- query = JSON.parse(IO.read('spec/fixtures/enrollment.json'))
318
+ refute_nil(@enrollment_snapshot)
319
+ end
320
+ it 'should expose the enrollment snapshot data endpoint' do
321
+ stub_request(:get, MATCH_NETWORK_LOCATION).
322
+ to_return(status: 200, body: '{ "string" : "" }')
323
+
324
+ @enrollment_snapshot_data = @@pokitdok.enrollment_snapshot_data({snapshot_id: '577294e00640fd5ce02d493f'})
159
325
 
160
- VCR.use_cassette 'enrollment' do
161
- @enrollment = @pokitdok.enrollment(query)
326
+ refute_nil(@enrollment_snapshot_data)
162
327
  end
328
+ end
329
+
330
+ describe 'Files endpoint' do
331
+ it 'should expose the files endpoint' do
332
+ stub_request(:post, MATCH_NETWORK_LOCATION).
333
+ to_return(status: 200, body: '{ "string" : "" }')
163
334
 
164
- check_meta_and_data @enrollment
165
- @enrollment['data']['units_of_work'].must_equal 1
166
- assert_nil @enrollment['data']['errors']
335
+ @files = @@pokitdok.files('MOCKPAYER', 'spec/fixtures/sample.270')
336
+
337
+ refute_nil(@files)
338
+ end
167
339
  end
168
- end
169
340
 
170
- describe 'Files endpoint' do
171
- it 'should expose the files endpoint' do
172
- VCR.use_cassette 'files' do
173
- @response = @pokitdok.files('MOCKPAYER',
174
- 'spec/fixtures/sample.270')
341
+ describe 'Insurance Prices endpoint' do
342
+ it 'should expose the insurance prices endpoint' do
343
+ stub_request(:get, MATCH_NETWORK_LOCATION).
344
+ to_return(status: 200, body: '{ "string" : "" }')
345
+
346
+ query = { cpt_code: '87799', zip_code: '32218' }
347
+ @prices = @@pokitdok.insurance_prices query
348
+
349
+ refute_nil(@prices)
175
350
  end
351
+ end
352
+
353
+ describe 'Payers endpoint' do
354
+ it 'should expose the payers endpoint' do
355
+ stub_request(:get, MATCH_NETWORK_LOCATION).
356
+ to_return(status: 200, body: '{ "string" : "" }')
357
+
358
+ @payers = @@pokitdok.payers(state: 'CA')
176
359
 
177
- check_meta_and_data @response
178
- refute_nil @response
179
- # TODO: should get back an activity id
360
+ refute_nil(@payers)
361
+ end
180
362
  end
181
- end
182
363
 
183
- describe 'Payers endpoint' do
184
- it 'should expose the payers endpoint' do
185
- VCR.use_cassette 'payers' do
186
- @payers = @pokitdok.payers(state: 'CA')
364
+ describe 'Plans endpoint' do
365
+ it 'should expose the plans endpoint' do
366
+ stub_request(:get, MATCH_NETWORK_LOCATION).
367
+ to_return(status: 200, body: '{ "string" : "" }')
368
+
369
+ @plans = @@pokitdok.plans
370
+
371
+ refute_nil(@plans)
187
372
  end
188
373
 
189
- check_meta_and_data @payers
190
- refute_nil @payers['data']
191
- @payers['data'].length.must_be :>, 1
374
+ it 'should expose the plans endpoint withe state and plan type' do
375
+ stub_request(:get, MATCH_NETWORK_LOCATION).
376
+ to_return(status: 200, body: '{ "string" : "" }')
377
+
378
+ query = {state: 'TX', plan_type: 'PPO'}
379
+ @plans = @@pokitdok.plans(query)
380
+
381
+ refute_nil(@plans)
382
+ end
192
383
  end
193
- end
194
384
 
195
- describe 'Plans endpoint no args' do
196
- it 'should expose the plans endpoint' do
197
- query = {}
385
+ describe 'Providers endpoint' do
386
+ it 'should expose the providers endpoint' do
387
+ stub_request(:get, MATCH_NETWORK_LOCATION).
388
+ to_return(status: 200, body: '{ "string" : "" }')
389
+
390
+ query = { npi: '1467560003' }
391
+ @providers = @@pokitdok.providers(query)
198
392
 
199
- VCR.use_cassette 'plans_no_args' do
200
- @plans = @pokitdok.plans(query)
393
+ refute_nil(@providers)
201
394
  end
202
395
 
203
- check_meta_and_data @plans
204
- @plans['data'].must_be_instance_of Array
396
+ it 'should expose the providers endpoint with args' do
397
+ stub_request(:get, MATCH_NETWORK_LOCATION).
398
+ to_return(status: 200, body: '{ "string" : "" }')
399
+
400
+ query = {
401
+ zipcode: '29307',
402
+ specialty: 'rheumatology',
403
+ radius: '20mi'
404
+ }
405
+ @providers = @@pokitdok.providers(query)
406
+
407
+ refute_nil(@providers)
408
+ end
205
409
  end
206
- end
207
410
 
208
- describe 'Plans endpoint' do
209
- it 'should expose the plans endpoint' do
210
- query = {'state' => 'TX', 'plan_type' => 'PPO'}
411
+ describe 'Trading Partners endpoints' do
412
+ it 'should expose the trading partners endpoint (index call)' do
413
+ stub_request(:get, MATCH_NETWORK_LOCATION).
414
+ to_return(status: 200, body: '{ "string" : "" }')
211
415
 
212
- VCR.use_cassette 'plans' do
213
- @plans = @pokitdok.plans(query)
416
+ @trading_partners = @@pokitdok.trading_partners
417
+
418
+ refute_nil(@trading_partners)
214
419
  end
215
420
 
216
- check_meta_and_data @plans
217
- @plans['data'].must_be_instance_of Array
421
+ it 'should expose the trading partners endpoint (get call)' do
422
+ stub_request(:get, MATCH_NETWORK_LOCATION).
423
+ to_return(status: 200, body: '{ "string" : "" }')
424
+
425
+ @trading_partners = @@pokitdok.trading_partners({ trading_partner_id: 'aetna' })
426
+
427
+ refute_nil(@trading_partners)
428
+ end
218
429
  end
219
- end
220
430
 
221
- describe 'Providers endpoint' do
222
- it 'should expose the providers endpoint' do
223
- query = { npi: '1467560003' }
431
+ describe 'Referrals endpoint' do
432
+ it 'should expose the referrals endpoint' do
433
+ stub_request(:post, MATCH_NETWORK_LOCATION).
434
+ to_return(status: 200, body: '{ "string" : "" }')
435
+
436
+ query = JSON.parse(IO.read('spec/fixtures/referrals.json'))
437
+ @referrals = @@pokitdok.referrals(query)
224
438
 
225
- VCR.use_cassette 'providers' do
226
- @providers = @pokitdok.providers(query)
439
+ refute_nil(@referrals)
227
440
  end
441
+ end
442
+
443
+ describe 'Authorizations endpoint' do
444
+ it 'should expose the authorizations endpoint' do
445
+ stub_request(:post, MATCH_NETWORK_LOCATION).
446
+ to_return(status: 200, body: '{ "string" : "" }')
228
447
 
229
- check_meta_and_data @providers
230
- refute_nil @providers['data']
231
- @providers['data'].size.must_equal 4
448
+ query = JSON.parse(IO.read('spec/fixtures/authorizations.json'))
449
+ @authorizations = @@pokitdok.authorizations query
450
+
451
+ refute_nil(@authorizations)
452
+ end
232
453
  end
233
- end
234
454
 
235
- describe 'Referrals endpoint' do
236
- it 'should expose the referrals endpoint' do
237
- query = JSON.parse(IO.read('spec/fixtures/referrals.json'))
455
+ describe 'Scheduling endpoints' do
456
+ it 'should list the schedulers' do
457
+ stub_request(:get, MATCH_NETWORK_LOCATION).
458
+ to_return(status: 200, body: '{ "string" : "" }')
459
+
460
+ @schedulers = @@pokitdok.schedulers
238
461
 
239
- VCR.use_cassette 'referrals' do
240
- @referrals = @pokitdok.referrals(query)
462
+ refute_nil(@schedulers)
241
463
  end
242
464
 
243
- check_meta_and_data @referrals
244
- refute_nil @referrals['data']
245
- @referrals['data']['valid_request'].must_equal true
246
- end
247
- end
465
+ it 'should give details on a specific scheduler' do
466
+ stub_request(:get, MATCH_NETWORK_LOCATION).
467
+ to_return(status: 200, body: '{ "string" : "" }')
248
468
 
249
- describe 'Scheduling endpoints' do
250
- it 'should list the schedulers' do
251
- VCR.use_cassette 'scheduling' do
252
- @schedulers = @pokitdok.schedulers
469
+ @scheduler = @@pokitdok.scheduler({ uuid: '967d207f-b024-41cc-8cac-89575a1f6fef' })
470
+
471
+ refute_nil(@scheduler)
253
472
  end
254
473
 
255
- check_meta_and_data @schedulers
256
- @schedulers['data'].length.must_be :>, 1
257
- end
474
+ it 'should list appointment types' do
475
+ stub_request(:get, MATCH_NETWORK_LOCATION).
476
+ to_return(status: 200, body: '{ "string" : "" }')
258
477
 
259
- it 'should give details on a specific scheduler' do
260
- VCR.use_cassette 'scheduling' do
261
- @scheduler = @pokitdok.scheduler({ uuid: '967d207f-b024-41cc-8cac-89575a1f6fef' })
478
+ @appointment_types = @@pokitdok.appointment_types
479
+
480
+ refute_nil(@appointment_types)
262
481
  end
263
482
 
264
- check_meta_and_data @scheduler
265
- @scheduler['data'].length.must_equal 1
266
- @scheduler['data'].first['name'].must_equal "Greenway"
267
- end
483
+ it 'should give details on a specific appointment type' do
484
+ stub_request(:get, MATCH_NETWORK_LOCATION).
485
+ to_return(status: 200, body: '{ "string" : "" }')
268
486
 
269
- it 'should list appointment types' do
270
- VCR.use_cassette 'scheduling' do
271
- @appointment_types = @pokitdok.appointment_types
487
+ @appointment_type = @@pokitdok.appointment_type({ uuid: 'ef987695-0a19-447f-814d-f8f3abbf4860' })
488
+
489
+ refute_nil(@appointment_type)
272
490
  end
273
491
 
274
- check_meta_and_data @appointment_types
275
- @appointment_types['data'].length.must_be :>, 1
276
- end
492
+ it 'should create an open schedule slot' do
493
+ # Special Case: The scheduling endpoint reauthenticates for the scope (user_schedule),
494
+ # which would be caught by the below 'stub_request'. This would cause the OAuth module
495
+ # to fail because of an empty return body (to see what is required on an OAuth) POST
496
+ # refer to the 'before' code block above. This 'stub_request' will only catch the /schedule/slots/ request.
497
+ stub_request(:post, MATCH_NETWORK_LOCATION).
498
+ to_return(status: 200, body: '{ "string" : "" }')
499
+
500
+ query = {
501
+ pd_provider_uuid: "b691b7f9-bfa8-486d-a689-214ae47ea6f8",
502
+ location: [32.788110, -79.932364],
503
+ appointment_type: "AT1",
504
+ start_date: "2014-12-25T15:09:34.197709",
505
+ end_date: "2014-12-25T16:09:34.197717"
506
+ }
507
+ @slot = @@pokitdok.schedule_slots(query)
508
+
509
+ refute_nil(@slot)
510
+ end
511
+
512
+ it 'should give details on a specific appointment' do
513
+ stub_request(:get, MATCH_NETWORK_LOCATION).
514
+ to_return(status: 200, body: '{ "string" : "" }')
277
515
 
278
- it 'should give details on a specific appointment type' do
279
- VCR.use_cassette 'scheduling' do
280
- @appointment_type = @pokitdok.appointment_type({ uuid: 'ef987695-0a19-447f-814d-f8f3abbf4860' })
516
+ @appointment = @@pokitdok.appointments({ uuid: 'ef987691-0a19-447f-814d-f8f3abbf4859' })
517
+
518
+ refute_nil(@appointment)
281
519
  end
282
520
 
283
- check_meta_and_data @appointment_type
284
- @appointment_type['data'].length.must_equal 1
285
- @appointment_type['data'].first['type'].must_equal "OV1"
286
- end
521
+ it 'should give details on a searched appointments' do
522
+ stub_request(:get, MATCH_NETWORK_LOCATION).
523
+ to_return(status: 200, body: '{ "string" : "" }')
287
524
 
288
- it 'should query for open appointment slots' do
289
- VCR.use_cassette 'scheduling_scoped' do
290
- @slots = @pokitdok.open_appointment_slots({
291
- start_date: "2015-01-01T00:00:00",
292
- end_date: "2015-02-05T00:00:00",
293
- appointment_type: "office_visit",
294
- patient_uuid: "8ae236ff-9ccc-44b0-8717-42653cd719d0"
295
- })
525
+ query = {
526
+ 'appointment_type' => 'AT1',
527
+ 'start_date' => Time.now.strftime("%Y/%m/%d"),
528
+ 'end_date' => Time.now.strftime("%Y/%m/%d"),
529
+ }
530
+ @appointments = @@pokitdok.appointments(query)
531
+
532
+ refute_nil(@appointments)
533
+ end
534
+
535
+ it 'should book appointment for an open slot' do
536
+ stub_request(:put, MATCH_NETWORK_LOCATION).
537
+ to_return(status: 200, body: '{ "string" : "" }')
538
+
539
+ appt_uuid = "ef987691-0a19-447f-814d-f8f3abbf4859"
540
+ booking_query = {
541
+ patient: {
542
+ uuid: "500ef469-2767-4901-b705-425e9b6f7f83",
543
+ email: "john@johndoe.com",
544
+ phone: "800-555-1212",
545
+ birth_date: "1970-01-01",
546
+ first_name: "John",
547
+ last_name: "Doe"
548
+ },
549
+ description: "Welcome to M0d3rN Healthcare"
550
+ }
551
+ @slot = @@pokitdok.book_appointment(appt_uuid, booking_query)
552
+
553
+ refute_nil(@slot)
296
554
  end
297
555
 
298
- check_meta_and_data @slots
299
- @slots['data'].length.must_be :>, 1
556
+ it 'should cancel a specified appointment' do
557
+ stub_request(:delete, MATCH_NETWORK_LOCATION).
558
+ to_return(status: 200, body: '{ "string" : "" }')
559
+
560
+ @cancel_response = @@pokitdok.cancel_appointment "ef987691-0a19-447f-814d-f8f3abbf4859"
561
+
562
+ refute_nil(@cancel_response)
563
+ end
300
564
  end
301
565
 
302
- it 'should book appointment for an open slot' do
303
- appt_uuid = "ef987691-0a19-447f-814d-f8f3abbf4859"
304
- booking_query = {
305
- patient: {
306
- _uuid: "500ef469-2767-4901-b705-425e9b6f7f83",
307
- email: "john@johndoe.com",
308
- phone: "800-555-1212",
309
- birth_date: "1970-01-01",
310
- first_name: "John",
311
- last_name: "Doe",
312
- member_id: "M000001"
313
- },
314
- description: "Welcome to M0d3rN Healthcare"
315
- }
566
+ describe 'Identity Endpoint' do
567
+ it 'should expose the identity endpoint for creation' do
568
+ stub_request(:post, MATCH_NETWORK_LOCATION).
569
+ to_return(status: 200, body: '{ "string" : "" }')
570
+
571
+ query = {
572
+ prefix: "Mr.",
573
+ first_name: "Gerald",
574
+ middle_name: "Harold",
575
+ last_name: "Whitmire",
576
+ suffix: "IV",
577
+ birth_date: "2000-05-25",
578
+ gender: "male",
579
+ email: "oscar@@pokitdok.com",
580
+ phone: "555-555-5555",
581
+ secondary_phone: "333-333-4444",
582
+ address: {
583
+ address_lines: ["1400 Anyhoo Avenue"],
584
+ city: "Springfield",
585
+ state: "IL",
586
+ zipcode: "90210"
587
+ }
588
+ }
589
+ @identity = @@pokitdok.create_identity(query)
590
+
591
+ refute_nil(@identity)
592
+ end
316
593
 
317
- VCR.use_cassette 'scheduling_scoped' do
318
- @response = @pokitdok.book_appointment(appt_uuid, booking_query)
594
+ it 'should expose the identity endpoint for querying via id' do
595
+ stub_request(:get, MATCH_NETWORK_LOCATION).
596
+ to_return(status: 200, body: '{ "string" : "" }')
597
+
598
+ @identity = @@pokitdok.identity(identity_uuid: '1a0a60b2-3e07-11e6-94c0-08002778b074')
599
+
600
+ refute_nil(@identity)
319
601
  end
320
602
 
321
- check_meta_and_data @response
322
- @response['data']['booked'].must_equal true
323
- end
603
+ it 'should expose the identity endpoint for querying via params' do
604
+ stub_request(:get, MATCH_NETWORK_LOCATION).
605
+ to_return(status: 200, body: '{ "string" : "" }')
324
606
 
325
- it 'should update appointment attributes' do
326
- appt_uuid = "ef987691-0a19-447f-814d-f8f3abbf4859"
327
- update_query = {
328
- description: "Welcome to M0d3rN Healthcare"
329
- }
607
+ query = {first_name: 'Gerald', last_name: 'Whitmire'}
608
+ @identities = @@pokitdok.identity(query)
330
609
 
331
- VCR.use_cassette 'scheduling_scoped' do
332
- @response = @pokitdok.update_appointment(appt_uuid, update_query)
610
+ refute_nil(@identities)
333
611
  end
334
612
 
335
- check_meta_and_data @response
336
- end
613
+ it 'should expose the identity endpoint for updating' do
614
+ stub_request(:put, MATCH_NETWORK_LOCATION).
615
+ to_return(status: 200, body: '{ "string" : "" }')
616
+
617
+ @identity = @@pokitdok.update_identity('1a0a60b2-3e07-11e6-94c0-08002778b074', { first_name: 'John' })
337
618
 
338
- it 'should cancel a specified appointment' do
339
- VCR.use_cassette 'scheduling_scoped' do
340
- @cancel_response =
341
- @pokitdok.cancel_appointment "ef987691-0a19-447f-814d-f8f3abbf4859"
619
+ refute_nil(@identity)
342
620
  end
343
621
 
344
- @cancel_response.must_equal true
345
- end
622
+ it 'should expose the identity history endpoint' do
623
+ stub_request(:get, MATCH_NETWORK_LOCATION).
624
+ to_return(status: 200, body: '{ "string" : "" }')
625
+
626
+ @identity = @@pokitdok.identity_history('1a0a60b2-3e07-11e6-94c0-08002778b074')
346
627
 
347
- it 'should raise an ArgumentError if a scoped method is' \
348
- ' called without a scope code being set' do
349
- VCR.use_cassette 'auth' do
350
- @pd = PokitDok::PokitDok.new(CLIENT_ID, CLIENT_SECRET)
628
+ refute_nil(@identity)
351
629
  end
352
630
 
353
- assert_raises(ArgumentError) do
354
- @pd.cancel_appointment({ id: '123456' })
631
+ it 'should expose the identity history endpoint with version number' do
632
+ stub_request(:get, MATCH_NETWORK_LOCATION).
633
+ to_return(status: 200, body: '{ "string" : "" }')
634
+
635
+ @identity = @@pokitdok.identity_history('1a0a60b2-3e07-11e6-94c0-08002778b074', 1)
636
+
637
+ refute_nil(@identity)
638
+ end
639
+
640
+ it 'should expose the identity match endpoint' do
641
+ stub_request(:post, MATCH_NETWORK_LOCATION).
642
+ to_return(status: 200, body: '{ "string" : "" }')
643
+
644
+ query = JSON.parse(IO.read('spec/fixtures/identity_match.json'))
645
+ @identity = @@pokitdok.identity_match(query)
646
+
647
+ refute_nil(@identity)
355
648
  end
356
649
  end
357
- end
358
650
 
359
- describe 'Trading Partners endpoints' do
360
- it 'should expose the trading partners endpoint (index call)' do
361
- query = {}
651
+ describe 'Pharmacy Plans Endpoint' do
652
+ it 'should expose the pharmacy plans endpoint' do
653
+ stub_request(:get, MATCH_NETWORK_LOCATION).
654
+ to_return(status: 200, body: '{ "string" : "" }')
655
+
656
+ query = {trading_partner_id: 'MOCKPAYER', plan_number: 'S5820003'}
657
+ @pharmacy_plans = @@pokitdok.pharmacy_plans(query)
362
658
 
363
- VCR.use_cassette 'trading_partners_index' do
364
- @trading_partners = @pokitdok.trading_partners(query)
659
+ refute_nil(@pharmacy_plans)
365
660
  end
661
+ end
662
+
663
+ describe 'Pharmacy Formulary Endpoint' do
664
+ it 'should expose the pharmacy formulary endpoint' do
665
+ stub_request(:get, MATCH_NETWORK_LOCATION).
666
+ to_return(status: 200, body: '{ "string" : "" }')
366
667
 
367
- check_meta_and_data @trading_partners
368
- @trading_partners['data'].must_be_instance_of Array
369
- @trading_partners['data'].length.must_be :>, 1
668
+ query = {trading_partner_id: 'MOCKPAYER', plan_number: 'S5820003',
669
+ ndc: '59310-579-22'}
670
+ @pharmacy_formulary = @@pokitdok.pharmacy_formulary(query)
671
+
672
+ refute_nil(@pharmacy_formulary)
673
+ end
370
674
  end
371
675
 
372
- it 'should expose the trading partners endpoint (get call)' do
373
- VCR.use_cassette 'trading_partners_get' do
374
- @trading_partners = @pokitdok.trading_partners({ trading_partner_id: 'aetna' })
676
+ describe 'Pharmacy Network Endpoint' do
677
+ it 'should expose the pharmacy formulary endpoint by NPI' do
678
+ stub_request(:get, MATCH_NETWORK_LOCATION).
679
+ to_return(status: 200, body: '{ "string" : "" }')
680
+
681
+ query = {trading_partner_id: 'MOCKPAYER', plan_number: 'S5596033',
682
+ npi: '1912301953'}
683
+ @pharmacy_network = @@pokitdok.pharmacy_network(query)
684
+
685
+ refute_nil(@pharmacy_network)
375
686
  end
687
+ it 'should expose the pharmacy formulary endpoint by searching' do
688
+ stub_request(:get, MATCH_NETWORK_LOCATION).
689
+ to_return(status: 200, body: '{ "string" : "" }')
376
690
 
377
- check_meta_and_data @trading_partners
378
- @trading_partners['data'].must_be_instance_of Hash
379
- @trading_partners['data']['name'].must_equal "Aetna"
691
+ query = {trading_partner_id: 'MOCKPAYER', plan_number: 'S5596033',
692
+ zipcode: '94401', radius: '10mi'}
693
+ @pharmacy_network = @@pokitdok.pharmacy_network(query)
694
+
695
+ refute_nil(@pharmacy_network)
696
+ end
380
697
  end
381
698
  end
382
699
  end