Class: DaVinciPASTestKit::Generator::MustSupportTestGenerator
- Inherits:
-
Object
- Object
- DaVinciPASTestKit::Generator::MustSupportTestGenerator
- Defined in:
- lib/davinci_pas_test_kit/generator/must_support_test_generator.rb
Instance Attribute Summary collapse
-
#base_output_dir ⇒ Object
Returns the value of attribute base_output_dir.
-
#group_metadata ⇒ Object
Returns the value of attribute group_metadata.
-
#request_type ⇒ Object
Returns the value of attribute request_type.
-
#system ⇒ Object
Returns the value of attribute system.
Class Method Summary collapse
Instance Method Summary collapse
- #base_output_file_name ⇒ Object
- #build_must_support_list_string(uscdi_only) ⇒ Object
- #class_name ⇒ Object
- #generate ⇒ Object
-
#initialize(group_metadata, base_output_dir, request_type, system = 'server') ⇒ MustSupportTestGenerator
constructor
A new instance of MustSupportTestGenerator.
- #module_name ⇒ Object
- #must_support_list_string ⇒ Object
- #optional? ⇒ Boolean
- #output ⇒ Object
- #output_file_directory ⇒ Object
- #output_file_name ⇒ Object
- #profile_identifier ⇒ Object
- #profile_name ⇒ Object
- #read_interaction ⇒ Object
- #resource_collection_string ⇒ Object
- #resource_type ⇒ Object
- #template ⇒ Object
- #test_id ⇒ Object
- #uscdi_list_string ⇒ Object
- #verifies_requirements ⇒ Object
Constructor Details
#initialize(group_metadata, base_output_dir, request_type, system = 'server') ⇒ MustSupportTestGenerator
Returns a new instance of MustSupportTestGenerator.
39 40 41 42 43 44 |
# File 'lib/davinci_pas_test_kit/generator/must_support_test_generator.rb', line 39 def initialize(, base_output_dir, request_type, system = 'server') self. = self.base_output_dir = base_output_dir self.request_type = request_type self.system = system end |
Instance Attribute Details
#base_output_dir ⇒ Object
Returns the value of attribute base_output_dir.
37 38 39 |
# File 'lib/davinci_pas_test_kit/generator/must_support_test_generator.rb', line 37 def base_output_dir @base_output_dir end |
#group_metadata ⇒ Object
Returns the value of attribute group_metadata.
37 38 39 |
# File 'lib/davinci_pas_test_kit/generator/must_support_test_generator.rb', line 37 def @group_metadata end |
#request_type ⇒ Object
Returns the value of attribute request_type.
37 38 39 |
# File 'lib/davinci_pas_test_kit/generator/must_support_test_generator.rb', line 37 def request_type @request_type end |
#system ⇒ Object
Returns the value of attribute system.
37 38 39 |
# File 'lib/davinci_pas_test_kit/generator/must_support_test_generator.rb', line 37 def system @system end |
Class Method Details
.generate(ig_metadata, base_output_dir) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/davinci_pas_test_kit/generator/must_support_test_generator.rb', line 9 def generate(, base_output_dir) submit_request_groups = .groups.select do |group| MustSupportCheckProfiles.submit_request_group?(group) end submit_response_groups = .groups.select do |group| MustSupportCheckProfiles.submit_response_group?(group) end inquiry_request_groups = .groups.select do |group| MustSupportCheckProfiles.inquiry_request_group?(group) end inquiry_response_groups = .groups.select do |group| MustSupportCheckProfiles.inquiry_response_group?(group) end submit_request_groups.each do |group| new(group, base_output_dir, 'submit_request').generate new(group, base_output_dir, 'submit_request', 'client').generate end submit_response_groups.each { |group| new(group, base_output_dir, 'submit_response').generate } inquiry_request_groups.each do |group| new(group, base_output_dir, 'inquire_request').generate new(group, base_output_dir, 'inquire_request', 'client').generate end inquiry_response_groups.each { |group| new(group, base_output_dir, 'inquire_response').generate } end |
Instance Method Details
#base_output_file_name ⇒ Object
54 55 56 |
# File 'lib/davinci_pas_test_kit/generator/must_support_test_generator.rb', line 54 def base_output_file_name "#{class_name.underscore}.rb" end |
#build_must_support_list_string(uscdi_only) ⇒ Object
108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 |
# File 'lib/davinci_pas_test_kit/generator/must_support_test_generator.rb', line 108 def build_must_support_list_string(uscdi_only) slice_names = .must_supports[:slices] .select { |slice| slice[:uscdi_only].presence == uscdi_only.presence } .map { |slice| slice[:slice_id] } element_names = .must_supports[:elements] .select { |element| element[:uscdi_only].presence == uscdi_only.presence } .map { |element| "#{resource_type}.#{element[:path]}" } extension_names = .must_supports[:extensions] .select { |extension| extension[:uscdi_only].presence == uscdi_only.presence } .map { |extension| extension[:id] } .must_supports[:choices]&.each do |choice| next unless choice[:uscdi_only].presence == uscdi_only.presence && choice.key?(:paths) choice[:paths].each { |path| element_names.delete("#{resource_type}.#{path}") } choice[:extension_ids].each { |id| extension_names.delete(id.to_s) } if choice[:extension_ids].present? element_paths = choice[:paths].map { |path| "#{resource_type}.#{path}" }.join(' or ') extension_ids = choice[:extension_ids].map(&:to_s).join(' or ') element_names << "#{element_paths} or #{extension_ids}" end (slice_names + element_names + extension_names) .uniq .sort .map { |name| "#{' ' * 8}* #{name}" } .join("\n") end |
#class_name ⇒ Object
78 79 80 81 82 |
# File 'lib/davinci_pas_test_kit/generator/must_support_test_generator.rb', line 78 def class_name # rubocop:disable Layout/LineLength "#{system.capitalize}#{request_type.camelize}#{Naming.upper_camel_case_for_profile()}MustSupportTest" # rubocop:enable Layout/LineLength end |
#generate ⇒ Object
153 154 155 156 157 158 159 160 161 |
# File 'lib/davinci_pas_test_kit/generator/must_support_test_generator.rb', line 153 def generate FileUtils.mkdir_p(output_file_directory) File.write(output_file_name, output) .add_test( id: test_id, file_name: base_output_file_name ) end |
#module_name ⇒ Object
84 85 86 |
# File 'lib/davinci_pas_test_kit/generator/must_support_test_generator.rb', line 84 def module_name "DaVinciPAS#{.reformatted_version.upcase}" end |
#must_support_list_string ⇒ Object
100 101 102 |
# File 'lib/davinci_pas_test_kit/generator/must_support_test_generator.rb', line 100 def must_support_list_string build_must_support_list_string(false) end |
#optional? ⇒ Boolean
149 150 151 |
# File 'lib/davinci_pas_test_kit/generator/must_support_test_generator.rb', line 149 def optional? MustSupportCheckProfiles.optional_group?() end |
#output ⇒ Object
50 51 52 |
# File 'lib/davinci_pas_test_kit/generator/must_support_test_generator.rb', line 50 def output @output ||= ERB.new(template, trim_mode: '-').result(binding) end |
#output_file_directory ⇒ Object
58 59 60 |
# File 'lib/davinci_pas_test_kit/generator/must_support_test_generator.rb', line 58 def output_file_directory File.join(base_output_dir, profile_identifier) end |
#output_file_name ⇒ Object
62 63 64 |
# File 'lib/davinci_pas_test_kit/generator/must_support_test_generator.rb', line 62 def output_file_name File.join(output_file_directory, base_output_file_name) end |
#profile_identifier ⇒ Object
70 71 72 |
# File 'lib/davinci_pas_test_kit/generator/must_support_test_generator.rb', line 70 def profile_identifier Naming.snake_case_for_profile() end |
#profile_name ⇒ Object
92 93 94 |
# File 'lib/davinci_pas_test_kit/generator/must_support_test_generator.rb', line 92 def profile_name .profile_name end |
#read_interaction ⇒ Object
66 67 68 |
# File 'lib/davinci_pas_test_kit/generator/must_support_test_generator.rb', line 66 def read_interaction self.class.read_interaction() end |
#resource_collection_string ⇒ Object
96 97 98 |
# File 'lib/davinci_pas_test_kit/generator/must_support_test_generator.rb', line 96 def resource_collection_string 'all_scratch_resources' end |
#resource_type ⇒ Object
88 89 90 |
# File 'lib/davinci_pas_test_kit/generator/must_support_test_generator.rb', line 88 def resource_type .resource end |
#template ⇒ Object
46 47 48 |
# File 'lib/davinci_pas_test_kit/generator/must_support_test_generator.rb', line 46 def template @template ||= File.read(File.join(__dir__, 'templates', 'must_support.rb.erb')) end |
#test_id ⇒ Object
74 75 76 |
# File 'lib/davinci_pas_test_kit/generator/must_support_test_generator.rb', line 74 def test_id "pas_#{system}_#{request_type}_#{.reformatted_version}_#{profile_identifier}_must_support_test" end |
#uscdi_list_string ⇒ Object
104 105 106 |
# File 'lib/davinci_pas_test_kit/generator/must_support_test_generator.rb', line 104 def uscdi_list_string build_must_support_list_string(true) end |
#verifies_requirements ⇒ Object
140 141 142 143 144 145 146 147 |
# File 'lib/davinci_pas_test_kit/generator/must_support_test_generator.rb', line 140 def verifies_requirements case test_id when 'pas_server_submit_response_v201_claimresponse_must_support_test' ['hl7.fhir.us.davinci-pas_2.0.1@37', 'hl7.fhir.us.davinci-pas_2.0.1@110'] when 'pas_server_inquire_response_v201_claiminquiryresponse_must_support_test' ['hl7.fhir.us.davinci-pas_2.0.1@38'] end end |