Class: AUCoreTestKit::Generator::ChainSearchTestGenerator
- Inherits:
-
Object
- Object
- AUCoreTestKit::Generator::ChainSearchTestGenerator
show all
- Defined in:
- lib/au_core_test_kit/generator/chain_search_test_generator.rb
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(search_name, group_metadata, search_metadata, base_output_dir, chain_item) ⇒ ChainSearchTestGenerator
Returns a new instance of ChainSearchTestGenerator.
34
35
36
37
38
39
40
|
# File 'lib/au_core_test_kit/generator/chain_search_test_generator.rb', line 34
def initialize(search_name, group_metadata, search_metadata, base_output_dir, chain_item)
self.search_name = search_name
self.group_metadata = group_metadata
self.search_metadata = search_metadata
self.base_output_dir = base_output_dir
self.chain_item = chain_item
end
|
Instance Attribute Details
#base_output_dir ⇒ Object
Returns the value of attribute base_output_dir.
32
33
34
|
# File 'lib/au_core_test_kit/generator/chain_search_test_generator.rb', line 32
def base_output_dir
@base_output_dir
end
|
#chain_item ⇒ Object
Returns the value of attribute chain_item.
32
33
34
|
# File 'lib/au_core_test_kit/generator/chain_search_test_generator.rb', line 32
def chain_item
@chain_item
end
|
Returns the value of attribute group_metadata.
32
33
34
|
# File 'lib/au_core_test_kit/generator/chain_search_test_generator.rb', line 32
def group_metadata
@group_metadata
end
|
Returns the value of attribute search_metadata.
32
33
34
|
# File 'lib/au_core_test_kit/generator/chain_search_test_generator.rb', line 32
def search_metadata
@search_metadata
end
|
#search_name ⇒ Object
Returns the value of attribute search_name.
32
33
34
|
# File 'lib/au_core_test_kit/generator/chain_search_test_generator.rb', line 32
def search_name
@search_name
end
|
Class Method Details
.generate(ig_metadata, base_output_dir) ⇒ Object
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
# File 'lib/au_core_test_kit/generator/chain_search_test_generator.rb', line 10
def generate(ig_metadata, base_output_dir)
ig_metadata.groups
.select { |group| group.searches.present? }
.each do |group|
group.search_definitions.each_key do |search_key|
current_search_definition = group.search_definitions[search_key]
next unless current_search_definition.key?(:chain) && current_search_definition[:chain].length.positive?
current_search_definition[:chain].each do |chain_item|
new(
search_key.to_s,
group,
group.search_definitions[search_key],
base_output_dir,
chain_item
).generate
end
end
end
end
|
Instance Method Details
#array_of_strings(array) ⇒ Object
126
127
128
129
|
# File 'lib/au_core_test_kit/generator/chain_search_test_generator.rb', line 126
def array_of_strings(array)
quoted_strings = array.map { |element| "'#{element}'" }
"[#{quoted_strings.join(', ')}]"
end
|
#attribute_paths ⇒ Object
114
115
116
|
# File 'lib/au_core_test_kit/generator/chain_search_test_generator.rb', line 114
def attribute_paths
search_metadata[:paths]
end
|
#base_output_file_name ⇒ Object
50
51
52
|
# File 'lib/au_core_test_kit/generator/chain_search_test_generator.rb', line 50
def base_output_file_name
"#{class_name.underscore}.rb"
end
|
#class_name ⇒ Object
78
79
80
|
# File 'lib/au_core_test_kit/generator/chain_search_test_generator.rb', line 78
def class_name
"#{Naming.upper_camel_case_for_profile(group_metadata)}#{search_title}ChainSearchTest"
end
|
90
91
92
|
# File 'lib/au_core_test_kit/generator/chain_search_test_generator.rb', line 90
def conformance_expectation
chain_item[:expectation]
end
|
#description ⇒ Object
158
159
160
161
162
163
164
165
166
|
# File 'lib/au_core_test_kit/generator/chain_search_test_generator.rb', line 158
def description
" A server \#{conformance_expectation} support searching by\n \#{search_param_names.first} on the \#{resource_type} resource. This test\n will pass if the server returns a success response to the request.\n\n [AU Core Server CapabilityStatement](http://hl7.org.au/fhir/core/\#{url_version}/CapabilityStatement-au-core-server.html)\n DESCRIPTION\nend\n".gsub(/\n{3,}/, "\n\n")
|
#generate ⇒ Object
144
145
146
147
148
149
150
151
152
|
# File 'lib/au_core_test_kit/generator/chain_search_test_generator.rb', line 144
def generate
FileUtils.mkdir_p(output_file_directory)
File.open(output_file_name, 'w') { |f| f.write(output) }
group_metadata.add_test(
id: test_id,
file_name: base_output_file_name
)
end
|
#module_name ⇒ Object
82
83
84
|
# File 'lib/au_core_test_kit/generator/chain_search_test_generator.rb', line 82
def module_name
"AUCore#{group_metadata.reformatted_version.upcase}"
end
|
#optional? ⇒ Boolean
118
119
120
|
# File 'lib/au_core_test_kit/generator/chain_search_test_generator.rb', line 118
def optional?
conformance_expectation != 'SHALL'
end
|
#output ⇒ Object
46
47
48
|
# File 'lib/au_core_test_kit/generator/chain_search_test_generator.rb', line 46
def output
@output ||= ERB.new(template).result(binding)
end
|
#output_file_directory ⇒ Object
54
55
56
|
# File 'lib/au_core_test_kit/generator/chain_search_test_generator.rb', line 54
def output_file_directory
File.join(base_output_dir, profile_identifier)
end
|
#output_file_name ⇒ Object
58
59
60
|
# File 'lib/au_core_test_kit/generator/chain_search_test_generator.rb', line 58
def output_file_name
File.join(output_file_directory, base_output_file_name)
end
|
#profile_identifier ⇒ Object
62
63
64
|
# File 'lib/au_core_test_kit/generator/chain_search_test_generator.rb', line 62
def profile_identifier
Naming.snake_case_for_profile(group_metadata)
end
|
#resource_type ⇒ Object
86
87
88
|
# File 'lib/au_core_test_kit/generator/chain_search_test_generator.rb', line 86
def resource_type
group_metadata.resource
end
|
#search_definition(name) ⇒ Object
122
123
124
|
# File 'lib/au_core_test_kit/generator/chain_search_test_generator.rb', line 122
def search_definition(name)
group_metadata.search_definitions[name.to_sym]
end
|
#search_identifier ⇒ Object
70
71
72
|
# File 'lib/au_core_test_kit/generator/chain_search_test_generator.rb', line 70
def search_identifier
search_name.to_s.tr('-', '_')
end
|
#search_param_name_string ⇒ Object
102
103
104
|
# File 'lib/au_core_test_kit/generator/chain_search_test_generator.rb', line 102
def search_param_name_string
search_name
end
|
#search_param_names ⇒ Object
94
95
96
|
# File 'lib/au_core_test_kit/generator/chain_search_test_generator.rb', line 94
def search_param_names
["#{search_name}:#{chain_item[:target]}.#{chain_item[:chain]}"]
end
|
#search_param_names_array ⇒ Object
98
99
100
|
# File 'lib/au_core_test_kit/generator/chain_search_test_generator.rb', line 98
def search_param_names_array
array_of_strings(search_param_names)
end
|
#search_properties ⇒ Object
106
107
108
109
110
111
112
|
# File 'lib/au_core_test_kit/generator/chain_search_test_generator.rb', line 106
def search_properties
{}.tap do |properties|
properties[:resource_type] = "'#{resource_type}'"
properties[:search_param_names] = search_param_names_array
properties[:attr_paths] = attribute_paths
end
end
|
#search_test_properties_string ⇒ Object
131
132
133
134
135
|
# File 'lib/au_core_test_kit/generator/chain_search_test_generator.rb', line 131
def search_test_properties_string
search_properties
.map { |key, value| "#{' ' * 8}#{key}: #{value}" }
.join(",\n")
end
|
#search_title ⇒ Object
74
75
76
|
# File 'lib/au_core_test_kit/generator/chain_search_test_generator.rb', line 74
def search_title
search_identifier.camelize
end
|
#template ⇒ Object
42
43
44
|
# File 'lib/au_core_test_kit/generator/chain_search_test_generator.rb', line 42
def template
@template ||= File.read(File.join(__dir__, 'templates', 'chain_search.rb.erb'))
end
|
#test_id ⇒ Object
66
67
68
|
# File 'lib/au_core_test_kit/generator/chain_search_test_generator.rb', line 66
def test_id
"au_core_#{group_metadata.reformatted_version}_#{profile_identifier}_#{search_identifier}_chain_search_test"
end
|
#title ⇒ Object
154
155
156
|
# File 'lib/au_core_test_kit/generator/chain_search_test_generator.rb', line 154
def title
"Server returns valid results for #{resource_type} search by #{search_param_name_string} (chained parameters)"
end
|
#url_version ⇒ Object
137
138
139
140
141
142
|
# File 'lib/au_core_test_kit/generator/chain_search_test_generator.rb', line 137
def url_version
case group_metadata.version
when 'v0.3.0-ballot'
'0.3.0-ballot'
end
end
|