Class: Inferno::Repositories::Requirements
Overview
Repository that deals with persistence for the Requirement
entity.
Instance Method Summary
collapse
all, #exists?, #find, #insert, #remove
Instance Method Details
#add_referenced_requirement_set_requirements(requirements_to_process, requirement_sets, processed_requirements = []) ⇒ Object
rubocop:disable Metrics/CyclomaticComplexity
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
# File 'lib/inferno/repositories/requirements.rb', line 87
def add_referenced_requirement_set_requirements( requirements_to_process,
requirement_sets,
processed_requirements = []
)
return processed_requirements if requirements_to_process.blank?
referenced_requirement_sets = requirement_sets.select(&:referenced?)
referenced_requirement_ids =
requirements_to_process
.flat_map(&:sub_requirements)
.select do |requirement_id|
referenced_requirement_sets.any? do |set|
requirement_id.start_with?("#{set.identifier}@") && (find(requirement_id).actor == set.actor)
end
end
new_requirements =
referenced_requirement_ids.map { |id| find(id) } - requirements_to_process - processed_requirements
add_referenced_requirement_set_requirements(
new_requirements,
referenced_requirement_sets,
(processed_requirements + requirements_to_process).uniq
)
end
|
#complete_requirement_set_requirements(requirement_sets) ⇒ Object
68
69
70
71
72
73
74
75
|
# File 'lib/inferno/repositories/requirements.rb', line 68
def complete_requirement_set_requirements(requirement_sets)
requirement_sets.select(&:complete?)
.flat_map do |requirement_set|
all.select do |requirement|
requirement.requirement_set == requirement_set.identifier && requirement.actor == requirement_set.actor
end
end
end
|
#filter_requirements_by_ids(ids) ⇒ Object
41
42
43
|
# File 'lib/inferno/repositories/requirements.rb', line 41
def filter_requirements_by_ids(ids)
all.select { |requirement| ids.include?(requirement.id) }
end
|
#filtered_requirement_set_requirements(requirement_sets) ⇒ Object
77
78
79
80
81
82
83
84
85
|
# File 'lib/inferno/repositories/requirements.rb', line 77
def filtered_requirement_set_requirements(requirement_sets)
requirement_sets.select(&:filtered?)
.flat_map do |requirement_set|
requirement_set
.expand_requirement_ids
.map { |requirement_id| find(requirement_id) }
.select { |requirement| requirement.actor == requirement_set.actor }
end
end
|
#insert_from_file(path) ⇒ 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
35
36
37
38
39
|
# File 'lib/inferno/repositories/requirements.rb', line 9
def insert_from_file(path)
result = []
CSV.foreach(path, headers: true, header_converters: :symbol) do |row|
req_set = row[:req_set]
id = row[:id]
sub_requirements_field = row[:subrequirements]
combined_id = "#{req_set}@#{id}"
sub_requirements = Inferno::Entities::Requirement.expand_requirement_ids(sub_requirements_field)
result << {
requirement_set: req_set,
id: combined_id,
url: row[:url],
requirement: row[:requirement],
conformance: row[:conformance],
actor: row[:actor],
sub_requirements: sub_requirements,
conditionality: row[:conditionality]&.downcase
}
end
result.each do |raw_req|
requirement = Entities::Requirement.new(raw_req)
insert(requirement)
end
end
|
#requirements_for_suite(test_suite_id, test_session_id = nil) ⇒ Object
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
# File 'lib/inferno/repositories/requirements.rb', line 45
def requirements_for_suite(test_suite_id, test_session_id = nil)
test_suite = Inferno::Repositories::TestSuites.new.find(test_suite_id)
selected_suite_options =
if test_session_id.present?
Inferno::Repositories::TestSessions.new.find(test_session_id).suite_options
else
[]
end
requirement_sets =
test_suite
.requirement_sets
.select do |set|
set.suite_options.all? { |set_option| selected_suite_options.include? set_option }
end
requirements =
complete_requirement_set_requirements(requirement_sets) +
filtered_requirement_set_requirements(requirement_sets)
add_referenced_requirement_set_requirements(requirements, requirement_sets).uniq
end
|