ncs_mdes 0.11.0 → 0.12.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 (35) hide show
  1. data/CHANGELOG.md +16 -0
  2. data/Gemfile +1 -1
  3. data/README.md +15 -5
  4. data/bin/mdes-console +3 -1
  5. data/documents/1.2/child_or_parent_instrument_tables.yml +28 -0
  6. data/documents/2.0/child_or_parent_instrument_tables.yml +68 -0
  7. data/documents/2.1/child_or_parent_instrument_tables.yml +74 -0
  8. data/documents/2.2/child_or_parent_instrument_tables.yml +98 -0
  9. data/documents/3.0/child_or_parent_instrument_tables.yml +119 -0
  10. data/documents/3.1/child_or_parent_instrument_tables.yml +187 -0
  11. data/documents/3.2/child_or_parent_instrument_tables.yml +192 -0
  12. data/documents/scan_p_ids_for_children.rb +39 -0
  13. data/lib/ncs_navigator/mdes/code_list.rb +94 -0
  14. data/lib/ncs_navigator/mdes/differences/collection.rb +47 -0
  15. data/lib/ncs_navigator/mdes/differences/collection_criterion.rb +59 -0
  16. data/lib/ncs_navigator/mdes/differences/entry.rb +48 -0
  17. data/lib/ncs_navigator/mdes/differences/value.rb +7 -0
  18. data/lib/ncs_navigator/mdes/differences/value_criterion.rb +58 -0
  19. data/lib/ncs_navigator/mdes/differences.rb +12 -0
  20. data/lib/ncs_navigator/mdes/source_documents.rb +27 -0
  21. data/lib/ncs_navigator/mdes/specification.rb +45 -0
  22. data/lib/ncs_navigator/mdes/transmission_table.rb +61 -0
  23. data/lib/ncs_navigator/mdes/variable.rb +58 -4
  24. data/lib/ncs_navigator/mdes/variable_type.rb +27 -62
  25. data/lib/ncs_navigator/mdes/version.rb +1 -1
  26. data/lib/ncs_navigator/mdes.rb +5 -1
  27. data/spec/differences_matchers.rb +40 -0
  28. data/spec/ncs_navigator/mdes/code_list_spec.rb +178 -0
  29. data/spec/ncs_navigator/mdes/source_documents_spec.rb +14 -0
  30. data/spec/ncs_navigator/mdes/specification_spec.rb +30 -0
  31. data/spec/ncs_navigator/mdes/transmission_table_spec.rb +77 -0
  32. data/spec/ncs_navigator/mdes/variable_spec.rb +244 -0
  33. data/spec/ncs_navigator/mdes/variable_type_spec.rb +161 -40
  34. data/spec/spec_helper.rb +6 -0
  35. metadata +24 -5
@@ -230,6 +230,250 @@ XSD
230
230
  end
231
231
  end
232
232
 
233
+ describe '#diff' do
234
+ let(:a) { Variable.new('A') }
235
+ let(:aprime) { Variable.new('A') }
236
+
237
+ let(:differences) { a.diff(aprime) }
238
+
239
+ describe 'name' do
240
+ it 'reports a difference when they are different' do
241
+ a.diff(Variable.new('B'))[:name].should be_a_value_diff('A', 'B')
242
+ end
243
+
244
+ it 'reports nothing when they are the same' do
245
+ differences.should be_nil
246
+ end
247
+ end
248
+
249
+ describe 'pii' do
250
+ it 'reports a difference when they are different' do
251
+ a.pii = true
252
+ aprime.pii = :possible
253
+
254
+ differences[:pii].should be_a_value_diff(true, :possible)
255
+ end
256
+
257
+ it 'reports nothing when they are the same' do
258
+ a.pii = :unknown
259
+ aprime.pii = :unknown
260
+
261
+ differences.should be_nil
262
+ end
263
+ end
264
+
265
+ describe 'status' do
266
+ let(:diff) { a.diff(aprime) }
267
+ let(:strict_diff) { a.diff(aprime, :strict => true) }
268
+
269
+ it 'reports nothing when they are the same' do
270
+ a.status = :active
271
+ aprime.status = :active
272
+
273
+ differences.should be_nil
274
+ end
275
+
276
+ loose_same =[
277
+ [ :new, :active],
278
+ [ :new, :modified],
279
+ [ :active, :modified],
280
+ [:modified, :active]
281
+ ]
282
+
283
+ loose_or_strict_different = [
284
+ [ :new, :retired],
285
+ [ :active, :retired],
286
+ [:modified, :retired],
287
+ ['a thing', :retired],
288
+
289
+ [ :new, 'some string'],
290
+ [ :active, 'some string'],
291
+ [:modified, 'some string'],
292
+ [ :retired, 'some string'],
293
+
294
+ [ :active, :new],
295
+ [:modified, :new],
296
+ [ :retired, :new],
297
+ ['a thing', :new],
298
+
299
+ [ :retired, :active],
300
+ ['a thing', :active],
301
+
302
+ [ :retired, :modified],
303
+ ['a thing', :modified],
304
+ ]
305
+
306
+ describe 'for a non-strict diff' do
307
+ loose_same.each do |left, right|
308
+ it "reports nothing for #{left.inspect} -> #{right.inspect}" do
309
+ a.status = left
310
+ aprime.status = right
311
+
312
+ diff.should be_nil
313
+ end
314
+ end
315
+
316
+ loose_or_strict_different.each do |left, right|
317
+ it "reports a difference for #{left.inspect} -> #{right.inspect}" do
318
+ a.status = left
319
+ aprime.status = right
320
+
321
+ diff[:status].should be_a_value_diff(left, right)
322
+ end
323
+ end
324
+ end
325
+
326
+ describe 'for a strict diff' do
327
+ (loose_same + loose_or_strict_different).each do |left, right|
328
+ it "reports a difference for #{left.inspect} -> #{right.inspect}" do
329
+ a.status = left
330
+ aprime.status = right
331
+
332
+ strict_diff[:status].should be_a_value_diff(left, right)
333
+ end
334
+ end
335
+ end
336
+ end
337
+
338
+ describe 'type' do
339
+ let(:type) { VariableType.new }
340
+ let(:typeprime) { VariableType.new }
341
+
342
+ before do
343
+ a.type = type
344
+ aprime.type = typeprime
345
+ end
346
+
347
+ describe 'when both have an anonymous type' do
348
+ it 'reports the differences when they are different' do
349
+ type.base_type = :int
350
+ typeprime.base_type = :string
351
+
352
+ differences[:type][:base_type].should be_a_value_diff(:int, :string)
353
+ end
354
+
355
+ it 'reports nothing for when they are the same' do
356
+ type.max_length = typeprime.max_length = 15
357
+
358
+ differences.should be_nil
359
+ end
360
+ end
361
+
362
+ describe 'when both have a named type' do
363
+ describe 'and the names differ' do
364
+ let(:type) { VariableType.new('f_oo').tap { |vt| vt.min_length = 10 } }
365
+ let(:typeprime) { VariableType.new('b_az') }
366
+
367
+ it 'reports the name difference' do
368
+ differences[:type][:name].should be_a_value_diff('f_oo', 'b_az')
369
+ end
370
+
371
+ it 'reports other differences' do
372
+ differences[:type][:min_length].should be_a_value_diff(10, nil)
373
+ end
374
+ end
375
+
376
+ # Motivation: a named type is resolved from the specification types
377
+ # collection. What's important at the point of this variable is that
378
+ # the type has changed; the details will be covered in the diff of
379
+ # the types. No need to repeat them for every variable that used that
380
+ # type
381
+ describe 'and the names are the same' do
382
+ let(:type) { VariableType.new('b_az').tap { |vt| vt.min_length = 10 } }
383
+ let(:typeprime) { VariableType.new('b_az') }
384
+
385
+ it 'does not report other differences' do
386
+ differences.should be_nil
387
+ end
388
+ end
389
+ end
390
+
391
+ describe 'when the left is named and the right is not' do
392
+ let(:type) { VariableType.new('b_ar').tap { |vt| vt.min_length = 5 } }
393
+ let(:typeprime) { VariableType.new.tap { |vt| vt.min_length = 6 } }
394
+
395
+ it 'reports the name difference' do
396
+ differences[:type][:name].should be_a_value_diff('b_ar', nil)
397
+ end
398
+
399
+ it 'reports the other differences' do
400
+ differences[:type][:min_length].should be_a_value_diff(5, 6)
401
+ end
402
+ end
403
+
404
+ describe 'when the right is named and the left is not' do
405
+ let(:type) { VariableType.new.tap { |vt| vt.min_length = 6 } }
406
+ let(:typeprime) { VariableType.new('b_ar').tap { |vt| vt.min_length = 5 } }
407
+
408
+ it 'reports the name difference' do
409
+ differences[:type][:name].should be_a_value_diff(nil, 'b_ar')
410
+ end
411
+
412
+ it 'reports the other differences' do
413
+ differences[:type][:min_length].should be_a_value_diff(6, 5)
414
+ end
415
+ end
416
+ end
417
+
418
+ describe 'omittable' do
419
+ it 'reports nothing when they are the same' do
420
+ a.omittable = false
421
+ aprime.omittable = nil
422
+
423
+ differences.should be_nil
424
+ end
425
+
426
+ it 'reports a difference when they are different' do
427
+ a.omittable = false
428
+ aprime.omittable = true
429
+
430
+ differences[:omittable?].should be_a_value_diff(false, true)
431
+ end
432
+ end
433
+
434
+ describe 'nillable' do
435
+ it 'reports nothing when they are the same' do
436
+ a.nillable = nil
437
+ aprime.nillable = false
438
+
439
+ differences.should be_nil
440
+ end
441
+
442
+ it 'reports a difference when they are different' do
443
+ a.nillable = true
444
+ aprime.nillable = false
445
+
446
+ differences[:nillable?].should be_a_value_diff(true, false)
447
+ end
448
+ end
449
+
450
+ describe 'table_reference' do
451
+ it 'reports nothing when they are the same' do
452
+ a.table_reference = TransmissionTable.new('Tb')
453
+ aprime.table_reference = TransmissionTable.new('Tb')
454
+
455
+ differences.should be_nil
456
+ end
457
+
458
+ it 'reports nothing when they are both nil' do
459
+ differences.should be_nil
460
+ end
461
+
462
+ it 'reports a change when one has a ref and the other does not' do
463
+ aprime.table_reference = TransmissionTable.new('Tc')
464
+
465
+ differences[:table_reference].should be_a_value_diff(nil, 'Tc')
466
+ end
467
+
468
+ it 'reports a change when the referenced table is different' do
469
+ a.table_reference = TransmissionTable.new('Ty')
470
+ aprime.table_reference = TransmissionTable.new('Tx')
471
+
472
+ differences[:table_reference].should be_a_value_diff('Ty', 'Tx')
473
+ end
474
+ end
475
+ end
476
+
233
477
  describe '#resolve_type!' do
234
478
  let(:reference_type) { VariableType.reference('ncs:color_cl3') }
235
479
  let(:actual_type) { VariableType.new('color_cl3') }
@@ -149,65 +149,186 @@ module NcsNavigator::Mdes
149
149
  subject.should_not be_reference
150
150
  end
151
151
  end
152
- end
153
152
 
154
- describe VariableType::CodeListEntry do
155
- describe '.from_xsd_enumeration' do
156
- def code_list_entry(xml_s)
157
- VariableType::CodeListEntry.from_xsd_enumeration(schema_element(xml_s), :log => logger)
158
- end
153
+ describe '#diff' do
154
+ let(:a) { VariableType.new('A') }
155
+ let(:aprime) { VariableType.new('A') }
159
156
 
160
- let(:missing) {
161
- code_list_entry(<<-XSD)
162
- <xs:enumeration value="-4" ncsdoc:label="Missing in Error" ncsdoc:desc="" ncsdoc:global_value="99-4" ncsdoc:master_cl="missing_data"/>
163
- XSD
164
- }
157
+ let(:diff) { a.diff(aprime) }
158
+ let(:strict_diff) { a.diff(aprime, :strict => true) }
165
159
 
166
- describe '#value' do
167
- it 'is set' do
168
- missing.value.should == "-4"
169
- end
160
+ it 'reports nothing when they are the same' do
161
+ diff.should be_nil
162
+ end
170
163
 
171
- it 'warns when missing' do
172
- code_list_entry('<xs:enumeration ncsdoc:label="Foo"/>')
173
- logger[:warn].first.should == 'Missing value for code list entry on line 2'
164
+ describe 'name' do
165
+ it 'reports a difference' do
166
+ a.diff(VariableType.new('B'))[:name].should be_a_value_diff('A', 'B')
174
167
  end
168
+ end
175
169
 
176
- describe 'with external whitespace on the value' do
177
- let(:missing) {
178
- code_list_entry(<<-XSD)
179
- <xs:enumeration value=" -4 " ncsdoc:label="Missing in Error" ncsdoc:desc="" ncsdoc:global_value="99-4" ncsdoc:master_cl="missing_data"/>
180
- XSD
181
- }
170
+ describe 'base_type' do
171
+ it 'reports a difference' do
172
+ a.base_type = :int
173
+ aprime.base_type = :decimal
182
174
 
183
- it 'removes the whitespace' do
184
- missing.value.should == '-4'
185
- end
175
+ diff[:base_type].should be_a_value_diff(:int, :decimal)
186
176
  end
187
177
  end
188
178
 
189
- describe "#label" do
190
- it 'is set' do
191
- missing.label.should == "Missing in Error"
179
+ describe 'pattern' do
180
+ it 'reports a difference' do
181
+ a.pattern = /^(0-9){4}$/
182
+ aprime.pattern = /^(0-9){5}$/
183
+
184
+ diff[:pattern].should be_a_value_diff(/^(0-9){4}$/, /^(0-9){5}$/)
192
185
  end
193
186
  end
194
187
 
195
- describe '#global_value' do
196
- it 'is set' do
197
- missing.global_value.should == '99-4'
188
+ describe 'max_length' do
189
+ it 'reports a difference' do
190
+ a.max_length = nil
191
+ aprime.max_length = 18
192
+
193
+ diff[:max_length].should be_a_value_diff(nil, 18)
198
194
  end
199
195
  end
200
196
 
201
- describe '#master_cl' do
202
- it 'is set' do
203
- missing.master_cl.should == 'missing_data'
197
+ describe 'min_length' do
198
+ it 'reports a difference' do
199
+ a.min_length = 1
200
+ aprime.min_length = nil
201
+
202
+ diff[:min_length].should be_a_value_diff(1, nil)
204
203
  end
205
204
  end
206
- end
207
205
 
208
- describe '#to_s' do
209
- it 'is the value' do
210
- VariableType::CodeListEntry.new('14').to_s.should == '14'
206
+ describe 'code_list' do
207
+ let(:cl) { CodeList.new }
208
+ let(:clprime) { CodeList.new }
209
+
210
+ def cle(value, label)
211
+ CodeListEntry.new(value).tap { |e| e.label = label }
212
+ end
213
+
214
+ let(:e_one) { cle( '1', 'Hand grenades')}
215
+ let(:e_five) { cle( '5', 'Horseshoes') }
216
+ let(:e_other) { cle('-5', 'Other') }
217
+ let(:e_other_prime) { cle( '5', 'Other') }
218
+
219
+ describe 'when only the left has a code list' do
220
+ before do
221
+ a.code_list = cl
222
+ cl << e_one << e_other
223
+ end
224
+
225
+ it 'reports all entries as left only by value' do
226
+ strict_diff[:code_list_by_value].left_only.should == %w(1 -5)
227
+ end
228
+
229
+ it 'reports all entries as left only by label' do
230
+ strict_diff[:code_list_by_label].left_only.should == ['Hand grenades', 'Other']
231
+ end
232
+ end
233
+
234
+ describe 'when only the right has a code list' do
235
+ before do
236
+ aprime.code_list = clprime
237
+ clprime << e_five << e_other
238
+ end
239
+
240
+ it 'reports all entries as right only by value' do
241
+ strict_diff[:code_list_by_value].right_only.should == %w(5 -5)
242
+ end
243
+
244
+ it 'reports all entries as right only by label' do
245
+ strict_diff[:code_list_by_label].right_only.should == ['Horseshoes', 'Other']
246
+ end
247
+ end
248
+
249
+ describe 'when both have code lists' do
250
+ before do
251
+ a.code_list = cl
252
+ aprime.code_list = clprime
253
+ end
254
+
255
+ describe 'and they are the same' do
256
+ before do
257
+ cl << e_one << e_five
258
+ clprime << e_one << e_five
259
+ end
260
+
261
+ it 'reports no differences' do
262
+ strict_diff.should be_nil
263
+ end
264
+ end
265
+
266
+ describe 'and they differ by values only' do
267
+ before do
268
+ cl << e_other << e_one
269
+ clprime << e_one << e_other_prime
270
+ end
271
+
272
+ it 'reports the entry difference in the by-label attribute' do
273
+ strict_diff[:code_list_by_label]['Other'][:value].
274
+ should be_a_value_diff('-5', '5')
275
+ end
276
+
277
+ it 'reports extra entries in the by-value attribute' do
278
+ strict_diff[:code_list_by_value].left_only.should == ['-5']
279
+ strict_diff[:code_list_by_value].right_only.should == ['5']
280
+ end
281
+ end
282
+
283
+ describe 'and they differ by labels only' do
284
+ before do
285
+ cl << e_one << e_five
286
+ clprime << e_one << e_other_prime
287
+ end
288
+
289
+ it 'reports the entry difference in the by-value attribute' do
290
+ strict_diff[:code_list_by_value]['5'][:label].
291
+ should be_a_value_diff('Horseshoes', 'Other')
292
+ end
293
+
294
+ it 'reports extra entries in the by-label attribute' do
295
+ strict_diff[:code_list_by_label].left_only.should == ['Horseshoes']
296
+ strict_diff[:code_list_by_label].right_only.should == ['Other']
297
+ end
298
+ end
299
+
300
+ describe 'and the differ by whitespace, punctuation and case in the labels only' do
301
+ let(:weird_left) { ' foUR! ' }
302
+ let(:weird_right) { 'FOUR#' }
303
+
304
+ before do
305
+ cl << e_one << cle('4', weird_left)
306
+ clprime << e_one << cle('4', weird_right)
307
+ end
308
+
309
+ describe 'with a strict diff' do
310
+ it 'reports the entry difference in the by-value attribute' do
311
+ strict_diff[:code_list_by_value]['4'][:label].
312
+ should be_a_value_diff(weird_left, weird_right)
313
+ end
314
+
315
+ it 'reports extra entries in the by-label attribute' do
316
+ strict_diff[:code_list_by_label].left_only.should == [weird_left]
317
+ strict_diff[:code_list_by_label].right_only.should == [weird_right]
318
+ end
319
+ end
320
+
321
+ describe 'with a loose diff' do
322
+ it 'reports no by-value differences' do
323
+ diff.should be_nil
324
+ end
325
+
326
+ it 'reports no by-label differences' do
327
+ diff.should be_nil
328
+ end
329
+ end
330
+ end
331
+ end
211
332
  end
212
333
  end
213
334
  end
data/spec/spec_helper.rb CHANGED
@@ -4,7 +4,13 @@ require 'nokogiri'
4
4
  $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
5
5
  require 'ncs_navigator/mdes'
6
6
 
7
+ module NcsNavigator::Mdes::Spec; end
8
+
9
+ require 'differences_matchers'
10
+
7
11
  RSpec.configure do |config|
12
+ config.include(NcsNavigator::Mdes::Spec::Matchers)
13
+
8
14
  def logger
9
15
  @logger ||= NcsNavigator::Mdes::Spec::AccumulatingLogger.new
10
16
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ncs_mdes
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.0
4
+ version: 0.12.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-20 00:00:00.000000000 Z
12
+ date: 2013-03-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogiri
@@ -117,31 +117,46 @@ files:
117
117
  - bin/mdes-console
118
118
  - ci-exec.sh
119
119
  - documents/1.2/Data_Transmission_Schema_V1.2.xsd
120
+ - documents/1.2/child_or_parent_instrument_tables.yml
120
121
  - documents/1.2/heuristic_overrides.yml
121
122
  - documents/2.0/NCS_Transmission_Schema_2.0.01.02.xml
123
+ - documents/2.0/child_or_parent_instrument_tables.yml
122
124
  - documents/2.0/disposition_codes.yml
123
125
  - documents/2.0/heuristic_overrides.yml
124
126
  - documents/2.1/NCS_Transmission_Schema_2.1.00.00.xsd
127
+ - documents/2.1/child_or_parent_instrument_tables.yml
125
128
  - documents/2.1/disposition_codes.yml
126
129
  - documents/2.1/extract_disposition_codes.rb
127
130
  - documents/2.1/heuristic_overrides.yml
128
131
  - documents/2.2/NCS_Transmission_Schema_2.2.01.01.xsd
132
+ - documents/2.2/child_or_parent_instrument_tables.yml
129
133
  - documents/2.2/disposition_codes.yml
130
134
  - documents/2.2/extract_disposition_codes.rb
131
135
  - documents/2.2/heuristic_overrides.yml
132
136
  - documents/3.0/NCS_Transmission_Schema_3.0.00.09.xsd
137
+ - documents/3.0/child_or_parent_instrument_tables.yml
133
138
  - documents/3.0/disposition_codes.yml
134
139
  - documents/3.0/extract_disposition_codes.rb
135
140
  - documents/3.0/heuristic_overrides.yml
136
141
  - documents/3.1/NCS_Transmission_Schema_3.1.01.00.xsd
142
+ - documents/3.1/child_or_parent_instrument_tables.yml
137
143
  - documents/3.1/disposition_codes.yml
138
144
  - documents/3.1/extract_disposition_codes.rb
139
145
  - documents/3.1/heuristic_overrides.yml
140
146
  - documents/3.2/NCS_Transmission_Schema_3.2.00.00.xsd
147
+ - documents/3.2/child_or_parent_instrument_tables.yml
141
148
  - documents/3.2/disposition_codes.yml
142
149
  - documents/3.2/extract_disposition_codes.rb
143
150
  - documents/3.2/heuristic_overrides.yml
151
+ - documents/scan_p_ids_for_children.rb
144
152
  - lib/ncs_navigator/mdes.rb
153
+ - lib/ncs_navigator/mdes/code_list.rb
154
+ - lib/ncs_navigator/mdes/differences.rb
155
+ - lib/ncs_navigator/mdes/differences/collection.rb
156
+ - lib/ncs_navigator/mdes/differences/collection_criterion.rb
157
+ - lib/ncs_navigator/mdes/differences/entry.rb
158
+ - lib/ncs_navigator/mdes/differences/value.rb
159
+ - lib/ncs_navigator/mdes/differences/value_criterion.rb
145
160
  - lib/ncs_navigator/mdes/disposition_code.rb
146
161
  - lib/ncs_navigator/mdes/source_documents.rb
147
162
  - lib/ncs_navigator/mdes/specification.rb
@@ -150,6 +165,8 @@ files:
150
165
  - lib/ncs_navigator/mdes/variable_type.rb
151
166
  - lib/ncs_navigator/mdes/version.rb
152
167
  - ncs_mdes.gemspec
168
+ - spec/differences_matchers.rb
169
+ - spec/ncs_navigator/mdes/code_list_spec.rb
153
170
  - spec/ncs_navigator/mdes/disposition_code_spec.rb
154
171
  - spec/ncs_navigator/mdes/source_documents_spec.rb
155
172
  - spec/ncs_navigator/mdes/specification_spec.rb
@@ -173,7 +190,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
173
190
  version: '0'
174
191
  segments:
175
192
  - 0
176
- hash: -1622356402615803316
193
+ hash: -1618062826933135286
177
194
  required_rubygems_version: !ruby/object:Gem::Requirement
178
195
  none: false
179
196
  requirements:
@@ -182,14 +199,16 @@ required_rubygems_version: !ruby/object:Gem::Requirement
182
199
  version: '0'
183
200
  segments:
184
201
  - 0
185
- hash: -1622356402615803316
202
+ hash: -1618062826933135286
186
203
  requirements: []
187
204
  rubyforge_project:
188
- rubygems_version: 1.8.24
205
+ rubygems_version: 1.8.25
189
206
  signing_key:
190
207
  specification_version: 3
191
208
  summary: A ruby API for various versions of the NCS MDES.
192
209
  test_files:
210
+ - spec/differences_matchers.rb
211
+ - spec/ncs_navigator/mdes/code_list_spec.rb
193
212
  - spec/ncs_navigator/mdes/disposition_code_spec.rb
194
213
  - spec/ncs_navigator/mdes/source_documents_spec.rb
195
214
  - spec/ncs_navigator/mdes/specification_spec.rb