us_core_test_kit 0.2.1 → 0.2.4

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 (85) hide show
  1. checksums.yaml +4 -4
  2. data/lib/us_core_test_kit/custom_groups/clinical_note_attachment_test.rb +2 -2
  3. data/lib/us_core_test_kit/custom_groups/clinical_note_type_test.rb +11 -6
  4. data/lib/us_core_test_kit/fhir_resource_navigation.rb +11 -3
  5. data/lib/us_core_test_kit/generated/v3.1.1/allergy_intolerance/allergy_intolerance_validation_test.rb +5 -2
  6. data/lib/us_core_test_kit/generated/v3.1.1/bodyheight/bodyheight_validation_test.rb +5 -2
  7. data/lib/us_core_test_kit/generated/v3.1.1/bodytemp/bodytemp_validation_test.rb +5 -2
  8. data/lib/us_core_test_kit/generated/v3.1.1/bodyweight/bodyweight_validation_test.rb +5 -2
  9. data/lib/us_core_test_kit/generated/v3.1.1/bp/bp_validation_test.rb +5 -2
  10. data/lib/us_core_test_kit/generated/v3.1.1/care_plan/care_plan_validation_test.rb +5 -2
  11. data/lib/us_core_test_kit/generated/v3.1.1/care_team/care_team_validation_test.rb +5 -2
  12. data/lib/us_core_test_kit/generated/v3.1.1/condition/condition_validation_test.rb +5 -2
  13. data/lib/us_core_test_kit/generated/v3.1.1/device/device_must_support_test.rb +1 -2
  14. data/lib/us_core_test_kit/generated/v3.1.1/device/device_validation_test.rb +5 -2
  15. data/lib/us_core_test_kit/generated/v3.1.1/diagnostic_report_lab/diagnostic_report_lab_validation_test.rb +5 -2
  16. data/lib/us_core_test_kit/generated/v3.1.1/diagnostic_report_note/diagnostic_report_note_validation_test.rb +5 -2
  17. data/lib/us_core_test_kit/generated/v3.1.1/document_reference/document_reference_must_support_test.rb +1 -2
  18. data/lib/us_core_test_kit/generated/v3.1.1/document_reference/document_reference_validation_test.rb +5 -2
  19. data/lib/us_core_test_kit/generated/v3.1.1/encounter/encounter_validation_test.rb +5 -2
  20. data/lib/us_core_test_kit/generated/v3.1.1/goal/goal_validation_test.rb +5 -2
  21. data/lib/us_core_test_kit/generated/v3.1.1/head_circumference/head_circumference_validation_test.rb +5 -2
  22. data/lib/us_core_test_kit/generated/v3.1.1/heartrate/heartrate_validation_test.rb +5 -2
  23. data/lib/us_core_test_kit/generated/v3.1.1/immunization/immunization_validation_test.rb +5 -2
  24. data/lib/us_core_test_kit/generated/v3.1.1/medication_request/medication_request_validation_test.rb +5 -2
  25. data/lib/us_core_test_kit/generated/v3.1.1/medication_request/medication_validation_test.rb +4 -2
  26. data/lib/us_core_test_kit/generated/v3.1.1/observation_lab/observation_lab_validation_test.rb +5 -2
  27. data/lib/us_core_test_kit/generated/v3.1.1/organization/organization_validation_test.rb +5 -2
  28. data/lib/us_core_test_kit/generated/v3.1.1/patient/patient_validation_test.rb +5 -2
  29. data/lib/us_core_test_kit/generated/v3.1.1/pediatric_bmi_for_age/pediatric_bmi_for_age_validation_test.rb +5 -2
  30. data/lib/us_core_test_kit/generated/v3.1.1/pediatric_weight_for_height/pediatric_weight_for_height_validation_test.rb +5 -2
  31. data/lib/us_core_test_kit/generated/v3.1.1/practitioner/practitioner_validation_test.rb +5 -2
  32. data/lib/us_core_test_kit/generated/v3.1.1/procedure/procedure_validation_test.rb +5 -2
  33. data/lib/us_core_test_kit/generated/v3.1.1/provenance/provenance_validation_test.rb +5 -2
  34. data/lib/us_core_test_kit/generated/v3.1.1/pulse_oximetry/pulse_oximetry_validation_test.rb +5 -2
  35. data/lib/us_core_test_kit/generated/v3.1.1/resprate/resprate_validation_test.rb +5 -2
  36. data/lib/us_core_test_kit/generated/v3.1.1/smokingstatus/smokingstatus_validation_test.rb +5 -2
  37. data/lib/us_core_test_kit/generated/v3.1.1/us_core_test_suite.rb +2 -2
  38. data/lib/us_core_test_kit/generated/v4.0.0/allergy_intolerance/allergy_intolerance_validation_test.rb +5 -2
  39. data/lib/us_core_test_kit/generated/v4.0.0/blood_pressure/blood_pressure_validation_test.rb +5 -2
  40. data/lib/us_core_test_kit/generated/v4.0.0/bmi/bmi_validation_test.rb +5 -2
  41. data/lib/us_core_test_kit/generated/v4.0.0/body_height/body_height_validation_test.rb +5 -2
  42. data/lib/us_core_test_kit/generated/v4.0.0/body_temperature/body_temperature_validation_test.rb +5 -2
  43. data/lib/us_core_test_kit/generated/v4.0.0/body_weight/body_weight_validation_test.rb +5 -2
  44. data/lib/us_core_test_kit/generated/v4.0.0/care_plan/care_plan_validation_test.rb +5 -2
  45. data/lib/us_core_test_kit/generated/v4.0.0/care_team/care_team_validation_test.rb +5 -2
  46. data/lib/us_core_test_kit/generated/v4.0.0/condition/condition_validation_test.rb +5 -2
  47. data/lib/us_core_test_kit/generated/v4.0.0/device/device_validation_test.rb +5 -2
  48. data/lib/us_core_test_kit/generated/v4.0.0/diagnostic_report_lab/diagnostic_report_lab_validation_test.rb +5 -2
  49. data/lib/us_core_test_kit/generated/v4.0.0/diagnostic_report_note/diagnostic_report_note_validation_test.rb +5 -2
  50. data/lib/us_core_test_kit/generated/v4.0.0/document_reference/document_reference_must_support_test.rb +1 -2
  51. data/lib/us_core_test_kit/generated/v4.0.0/document_reference/document_reference_validation_test.rb +5 -2
  52. data/lib/us_core_test_kit/generated/v4.0.0/encounter/encounter_must_support_test.rb +2 -4
  53. data/lib/us_core_test_kit/generated/v4.0.0/encounter/encounter_validation_test.rb +5 -2
  54. data/lib/us_core_test_kit/generated/v4.0.0/goal/goal_validation_test.rb +5 -2
  55. data/lib/us_core_test_kit/generated/v4.0.0/head_circumference/head_circumference_validation_test.rb +5 -2
  56. data/lib/us_core_test_kit/generated/v4.0.0/head_circumference_percentile/head_circumference_percentile_validation_test.rb +5 -2
  57. data/lib/us_core_test_kit/generated/v4.0.0/heart_rate/heart_rate_validation_test.rb +5 -2
  58. data/lib/us_core_test_kit/generated/v4.0.0/immunization/immunization_validation_test.rb +5 -2
  59. data/lib/us_core_test_kit/generated/v4.0.0/medication_request/medication_request_must_support_test.rb +1 -2
  60. data/lib/us_core_test_kit/generated/v4.0.0/medication_request/medication_request_validation_test.rb +5 -2
  61. data/lib/us_core_test_kit/generated/v4.0.0/medication_request/medication_validation_test.rb +4 -2
  62. data/lib/us_core_test_kit/generated/v4.0.0/metadata.yml +20 -2
  63. data/lib/us_core_test_kit/generated/v4.0.0/observation_lab/observation_lab_validation_test.rb +5 -2
  64. data/lib/us_core_test_kit/generated/v4.0.0/organization/organization_validation_test.rb +5 -2
  65. data/lib/us_core_test_kit/generated/v4.0.0/patient/metadata.yml +20 -1
  66. data/lib/us_core_test_kit/generated/v4.0.0/patient/patient_must_support_test.rb +9 -5
  67. data/lib/us_core_test_kit/generated/v4.0.0/patient/patient_validation_test.rb +5 -2
  68. data/lib/us_core_test_kit/generated/v4.0.0/pediatric_bmi_for_age/pediatric_bmi_for_age_validation_test.rb +5 -2
  69. data/lib/us_core_test_kit/generated/v4.0.0/pediatric_weight_for_height/pediatric_weight_for_height_validation_test.rb +5 -2
  70. data/lib/us_core_test_kit/generated/v4.0.0/practitioner/practitioner_validation_test.rb +5 -2
  71. data/lib/us_core_test_kit/generated/v4.0.0/procedure/procedure_validation_test.rb +5 -2
  72. data/lib/us_core_test_kit/generated/v4.0.0/provenance/metadata.yml +0 -1
  73. data/lib/us_core_test_kit/generated/v4.0.0/provenance/provenance_validation_test.rb +5 -2
  74. data/lib/us_core_test_kit/generated/v4.0.0/pulse_oximetry/pulse_oximetry_validation_test.rb +5 -2
  75. data/lib/us_core_test_kit/generated/v4.0.0/respiratory_rate/respiratory_rate_validation_test.rb +5 -2
  76. data/lib/us_core_test_kit/generated/v4.0.0/smokingstatus/smokingstatus_validation_test.rb +5 -2
  77. data/lib/us_core_test_kit/generated/v4.0.0/us_core_test_suite.rb +2 -2
  78. data/lib/us_core_test_kit/generator/must_support_metadata_extractor.rb +35 -22
  79. data/lib/us_core_test_kit/generator/must_support_test_generator.rb +26 -3
  80. data/lib/us_core_test_kit/generator/validation_test_generator.rb +7 -0
  81. data/lib/us_core_test_kit/must_support_test.rb +19 -3
  82. data/lib/us_core_test_kit/search_test.rb +104 -46
  83. data/lib/us_core_test_kit/validation_test.rb +9 -3
  84. data/lib/us_core_test_kit/version.rb +3 -1
  85. metadata +2 -2
@@ -84,6 +84,12 @@ module USCoreTestKit
84
84
  read_interaction[:expectation]
85
85
  end
86
86
 
87
+ def skip_if_empty
88
+ # Return true if a system must demonstrate at least one example of the resource type.
89
+ # This drives omit vs. skip result statuses in this test.
90
+ resource_type != 'Medication'
91
+ end
92
+
87
93
  def generate
88
94
  FileUtils.mkdir_p(output_file_directory)
89
95
  File.open(output_file_name, 'w') { |f| f.write(output) }
@@ -121,6 +127,7 @@ module USCoreTestKit
121
127
  <<~GENERIC_INTRO
122
128
  This test verifies resources returned from the first search conform to
123
129
  the [#{profile_name}](#{profile_url}).
130
+ Systems must demonstrate at least one valid example in order to pass this test.
124
131
  GENERIC_INTRO
125
132
  end
126
133
  end
@@ -36,8 +36,16 @@ module USCoreTestKit
36
36
  end
37
37
  end
38
38
 
39
+ def include_uscdi_only_test?
40
+ config.options[:include_uscdi_only_test] == true
41
+ end
42
+
39
43
  def must_support_extensions
40
- metadata.must_supports[:extensions]
44
+ if include_uscdi_only_test?
45
+ metadata.must_supports[:extensions]
46
+ else
47
+ metadata.must_supports[:extensions].reject{ |extension| extension[:uscdi_only] }
48
+ end
41
49
  end
42
50
 
43
51
  def missing_extensions(resources = [])
@@ -50,7 +58,11 @@ module USCoreTestKit
50
58
  end
51
59
 
52
60
  def must_support_elements
53
- metadata.must_supports[:elements]
61
+ if include_uscdi_only_test?
62
+ metadata.must_supports[:elements]
63
+ else
64
+ metadata.must_supports[:elements].reject{ |element| element[:uscdi_only] }
65
+ end
54
66
  end
55
67
 
56
68
  def missing_elements(resources = [])
@@ -85,7 +97,11 @@ module USCoreTestKit
85
97
  end
86
98
 
87
99
  def must_support_slices
88
- metadata.must_supports[:slices]
100
+ if include_uscdi_only_test?
101
+ metadata.must_supports[:slices]
102
+ else
103
+ metadata.must_supports[:slices].reject{ |slice| slice[:uscdi_only] }
104
+ end
89
105
  end
90
106
 
91
107
  def missing_slices(resources = [])
@@ -31,7 +31,7 @@ module USCoreTestKit
31
31
  if fixed_value_search?
32
32
  fixed_value_search_param_values.map { |value| fixed_value_search_params(value, patient_id) }
33
33
  else
34
- [search_params_with_values(patient_id)]
34
+ [search_params_with_values(search_param_names, patient_id)]
35
35
  end
36
36
  new_params.reject! do |params|
37
37
  params.any? { |_key, value| value.blank? }
@@ -135,6 +135,9 @@ module USCoreTestKit
135
135
  check_search_response
136
136
 
137
137
  post_search_resources = fetch_all_bundled_resources.select { |resource| resource.resourceType == resource_type }
138
+
139
+ filter_devices(post_search_resources) if resource_type == 'Device'
140
+
138
141
  get_resource_count = get_search_resources.length
139
142
  post_resource_count = post_search_resources.length
140
143
 
@@ -240,10 +243,11 @@ module USCoreTestKit
240
243
  new_search_params = params.merge('patient' => "Patient/#{params['patient']}")
241
244
  search_and_check_response(new_search_params)
242
245
 
243
- new_resource_count =
244
- fetch_all_bundled_resources
245
- .select { |resource| resource.resourceType == resource_type }
246
- .count
246
+ reference_with_type_resources = fetch_all_bundled_resources.select { |resource| resource.resourceType == resource_type }
247
+
248
+ filter_devices(reference_with_type_resources) if resource_type == 'Device'
249
+
250
+ new_resource_count = reference_with_type_resources.count
247
251
 
248
252
  assert new_resource_count == resource_count,
249
253
  "Expected search by `#{params['patient']}` to to return the same results as searching " \
@@ -256,9 +260,7 @@ module USCoreTestKit
256
260
  def perform_search_with_system(params, patient_id)
257
261
  return if search_variant_test_records[:token_variants]
258
262
 
259
- new_search_params = token_search_params.each_with_object({}) do |name, search_params|
260
- search_params[name] = search_param_value(name, patient_id, include_system: true)
261
- end
263
+ new_search_params = search_params_with_values(token_search_params, patient_id, include_system: true)
262
264
  return if new_search_params.any? { |_name, value| value.blank? }
263
265
 
264
266
  search_params = params.merge(new_search_params)
@@ -308,7 +310,7 @@ module USCoreTestKit
308
310
  definition = metadata.search_definitions[param_name]
309
311
  return [] if definition.blank?
310
312
 
311
- definition[:multiple_or] == 'SHALL' ? [definition[:values].join(',')] : [definition[:values]]
313
+ definition[:multiple_or] == 'SHALL' ? [definition[:values].join(',')] : Array.wrap(definition[:values])
312
314
  end
313
315
 
314
316
 
@@ -317,7 +319,7 @@ module USCoreTestKit
317
319
 
318
320
  all_search_params.each do |patient_id, params_list|
319
321
  next unless params_list.present?
320
-
322
+
321
323
  search_params = params_list.first
322
324
  existing_values = {}
323
325
  missing_values = {}
@@ -423,11 +425,29 @@ module USCoreTestKit
423
425
  end
424
426
  end
425
427
 
426
- def search_params_with_values(patient_id)
427
- search_param_names.each_with_object({}) do |name, params|
428
- value = patient_id_param?(name) ? patient_id : search_param_value(name, patient_id)
429
- params[name] = value
428
+ def search_params_with_values(search_param_names, patient_id, include_system: false)
429
+ resources = scratch_resources_for_patient(patient_id)
430
+
431
+ if resources.empty?
432
+ return search_param_names.each_with_object({}) do |name, params|
433
+ value = patient_id_param?(name) ? patient_id : nil
434
+ params[name] = value
435
+ end
436
+ end
437
+
438
+ params_with_partial_value = resources.each_with_object({}) do |resource, outer_params|
439
+ results_from_one_resource = search_param_names.each_with_object({}) do |name, params|
440
+ value = patient_id_param?(name) ? patient_id : search_param_value(name, resource, include_system: include_system)
441
+ params[name] = value
442
+ end
443
+
444
+ outer_params.merge!(results_from_one_resource)
445
+
446
+ # stop if all parameter values are found
447
+ return outer_params if outer_params.all? { |_key, value| value.present? }
430
448
  end
449
+
450
+ params_with_partial_value
431
451
  end
432
452
 
433
453
  def patient_id_list
@@ -446,10 +466,10 @@ module USCoreTestKit
446
466
 
447
467
  def search_param_paths(name)
448
468
  paths = metadata.search_definitions[name.to_sym][:paths]
449
- if paths.first =='class'
469
+ if paths.first =='class'
450
470
  paths[0] = 'local_class'
451
471
  end
452
-
472
+
453
473
  paths
454
474
  end
455
475
 
@@ -470,8 +490,13 @@ module USCoreTestKit
470
490
  end
471
491
 
472
492
  def no_resources_skip_message(resource_type = self.resource_type)
473
- "No #{resource_type} resources appear to be available. " \
474
- "Please use patients with more information"
493
+ msg = "No #{resource_type} resources appear to be available"
494
+
495
+ if (resource_type == 'Device' && implantable_device_codes.present?)
496
+ msg.concat(" with the following Device Type Code filter: #{implantable_device_codes}")
497
+ end
498
+
499
+ msg + ". Please use patients with more information"
475
500
  end
476
501
 
477
502
  def fetch_all_bundled_resources(
@@ -507,11 +532,16 @@ module USCoreTestKit
507
532
  valid_resource_types = [resource_type, 'OperationOutcome'].concat(additional_resource_types)
508
533
  valid_resource_types << 'Medication' if resource_type == 'MedicationRequest'
509
534
 
510
- all_valid_resource_types =
511
- resources.all? { |entry| valid_resource_types.include? entry.resourceType }
535
+ invalid_resource_types =
536
+ resources.reject { |entry| valid_resource_types.include? entry.resourceType }
537
+ .map(&:resourceType)
538
+ .uniq
512
539
 
513
- assert all_valid_resource_types,
514
- "All resources returned must be of the type: #{valid_resource_types.join(', ')}"
540
+ if invalid_resource_types.any?
541
+ info "Received resource type(s) #{invalid_resource_types.join(', ')} in search bundle, " \
542
+ "but only expected resource types #{valid_resource_types.join(', ')}. " + \
543
+ "This is unusual but allowed if the server believes additional resource types are relevant."
544
+ end
515
545
 
516
546
  resources
517
547
  end
@@ -520,11 +550,11 @@ module USCoreTestKit
520
550
  "Could not resolve next bundle: #{link}"
521
551
  end
522
552
 
523
- def search_param_value(name, patient_id, include_system: false)
553
+ def search_param_value(name, resource, include_system: false)
524
554
  paths = search_param_paths(name)
525
555
  search_value = nil
526
556
  paths.each do |path|
527
- element = find_a_value_at(scratch_resources_for_patient(patient_id), path)
557
+ element = find_a_value_at(resource, path) { |element| element_has_valid_value?(element, include_system) }
528
558
 
529
559
  search_value =
530
560
  case element
@@ -541,34 +571,37 @@ module USCoreTestKit
541
571
  if include_system
542
572
  coding =
543
573
  find_a_value_at(element, 'coding') { |coding| coding.code.present? && coding.system.present? }
544
- coding.present? ? "#{coding.system}|#{coding.code}" : nil
574
+ "#{coding.system}|#{coding.code}"
545
575
  else
546
576
  find_a_value_at(element, 'coding.code')
547
577
  end
548
578
  when FHIR::Identifier
549
- if include_system
550
- identifier = find_a_value_at(scratch_resources_for_patient(patient_id), path) do |identifier|
551
- identifier.value.present? && identifier.system.present?
552
- end
553
- identifier.present? ? "#{identifier.system}|#{identifier.value}" : nil
554
- else
555
- element.value
556
- end
579
+ include_system ? "#{element.system}|#{element.value}" : element.value
557
580
  when FHIR::Coding
558
- if include_system
559
- coding = find_a_value_at(scratch_resources_for_patient(patient_id), path) do |coding|
560
- coding.code.present? && coding.system.present?
561
- end
562
- coding.present? ? "#{coding.system}|#{coding.code}" : nil
563
- else
564
- element.code
565
- end
581
+ include_system ? "#{element.system}|#{element.code}" : element.code
566
582
  when FHIR::HumanName
567
583
  element.family || element.given&.first || element.text
568
584
  when FHIR::Address
569
585
  element.text || element.city || element.state || element.postalCode || element.country
570
586
  else
571
- element
587
+ if metadata.version != 'v3.1.1' &&
588
+ metadata.search_definitions[name.to_sym][:type] == 'date' &&
589
+ params_with_comparators&.include?(name)
590
+ # convert date search to greath-than comparator search with correct precision
591
+ # For all date search parameters:
592
+ # Patient.birthDate does not mandate comparators so cannot be converted
593
+ # Goal.target-date has day precision
594
+ # All others have second + time offset precision
595
+ if /^\d{4}$/.match?(element) || # YYYY
596
+ /^\d{4}-\d{2}$/.match?(element) || # YYYY-MM
597
+ (/^\d{4}-\d{2}-\d{2}$/.match?(element) && resource_type != "Goal") # YYYY-MM-DD AND Resource is NOT Goal
598
+ "gt#{(DateTime.xmlschema(element)-1).xmlschema}"
599
+ else
600
+ element
601
+ end
602
+ else
603
+ element
604
+ end
572
605
  end
573
606
 
574
607
  break if search_value.present?
@@ -578,6 +611,31 @@ module USCoreTestKit
578
611
  escaped_value
579
612
  end
580
613
 
614
+ def element_has_valid_value?(element, include_system)
615
+ case element
616
+ when FHIR::Reference
617
+ element.reference.present?
618
+ when FHIR::CodeableConcept
619
+ if include_system
620
+ coding =
621
+ find_a_value_at(element, 'coding') { |coding| coding.code.present? && coding.system.present? }
622
+ coding.present?
623
+ else
624
+ find_a_value_at(element, 'coding.code').present?
625
+ end
626
+ when FHIR::Identifier
627
+ include_system ? element.value.present? && element.system.present? : element.value.present?
628
+ when FHIR::Coding
629
+ include_system ? element.code.present? && element.system.present? : element.code.present?
630
+ when FHIR::HumanName
631
+ (element.family || element.given&.first || element.text).present?
632
+ when FHIR::Address
633
+ (element.text || element.city || element.state || element.postalCode || element.country).present?
634
+ else
635
+ true
636
+ end
637
+ end
638
+
581
639
  def save_resource_reference(resource_type, reference)
582
640
  scratch[:references] ||= {}
583
641
  scratch[:references][resource_type] ||= Set.new
@@ -647,9 +705,9 @@ module USCoreTestKit
647
705
  address&.country&.downcase&.start_with?(search_value_downcase)
648
706
  end
649
707
  when 'CodeableConcept'
650
- # FHIR token search (https://www.hl7.org/fhir/search.html#token): "When in doubt, servers SHOULD
651
- # treat tokens in a case-insensitive manner, on the grounds that including undesired data has
652
- # less safety implications than excluding desired behavior".
708
+ # FHIR token search (https://www.hl7.org/fhir/search.html#token): "When in doubt, servers SHOULD
709
+ # treat tokens in a case-insensitive manner, on the grounds that including undesired data has
710
+ # less safety implications than excluding desired behavior".
653
711
  codings = values_found.flat_map(&:coding)
654
712
  if search_value.include? '|'
655
713
  system = search_value.split('|').first
@@ -691,7 +749,7 @@ module USCoreTestKit
691
749
  values_found.any? { |value_found| search_values.include? value_found }
692
750
  end
693
751
  end
694
-
752
+
695
753
  break if match_found
696
754
  end
697
755
 
@@ -3,9 +3,15 @@ module USCoreTestKit
3
3
  DAR_CODE_SYSTEM_URL = 'http://terminology.hl7.org/CodeSystem/data-absent-reason'.freeze
4
4
  DAR_EXTENSION_URL = 'http://hl7.org/fhir/StructureDefinition/data-absent-reason'.freeze
5
5
 
6
- def perform_validation_test(resources, profile_url)
7
- skip_if resources.blank?,
8
- "No #{resource_type} resources conforming to the #{profile_url} profile were returned."
6
+ def perform_validation_test(resources,
7
+ profile_url,
8
+ skip_if_empty: true)
9
+
10
+ skip_if skip_if_empty && resources.blank?,
11
+ "No #{resource_type} resources conforming to the #{profile_url} profile were returned"
12
+
13
+ omit_if resources.blank?,
14
+ "No #{resource_type} resources provided so the #{profile_url} profile does not apply"
9
15
 
10
16
  resources.each do |resource|
11
17
  resource_is_valid?(resource: resource, profile_url: profile_url)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module USCoreTestKit
2
- VERSION = '0.2.1'
4
+ VERSION = '0.2.4'
3
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: us_core_test_kit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stephen MacVicar
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-04-11 00:00:00.000000000 Z
11
+ date: 2022-07-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: inferno_core