Class: Cucumber::Query
- Inherits:
-
Object
- Object
- Cucumber::Query
- Includes:
- Messages::Helpers::TestStepResultComparator, Messages::Helpers::TimeConversion
- Defined in:
- lib/cucumber/query.rb
Instance Method Summary collapse
-
#count_test_cases_started ⇒ Object
TODO: find****By methods (16/25) Complete Missing: findSuggestionsBy (2 variants) Missing: findUnambiguousStepDefinitionBy (1 variant) Missing: findTestStepFinishedAndTestStepBy (1 variant) Missing: findAttachmentsBy (2 variants) Missing: findTestCaseDurationBy (2 variant) REDUNDANT: findLineageBy (9 variants!) REDUNDANT: findLocationOf (1 variant) - This strictly speaking isn’t a findBy but is located within them To Review: findMostSevereTestStepResultBy (2 variants) To Review: findTestRunDuration (1 variant) - This strictly speaking isn’t a findBy but is located within them.
- #find_all_pickle_steps ⇒ Object
- #find_all_pickles ⇒ Object
- #find_all_step_definitions ⇒ Object
-
#find_all_test_case_finished ⇒ Object
This finds all test cases that have finished AND will not be retried.
-
#find_all_test_case_started ⇒ Object
This finds all test cases from the following conditions (UNION) -> Test cases that have started, but not yet finished -> Test cases that have started, finished, but that will NOT be retried.
- #find_all_test_cases ⇒ Object
- #find_all_test_run_hook_finished ⇒ Object
- #find_all_test_run_hook_started ⇒ Object
- #find_all_test_step_finished ⇒ Object
- #find_all_test_step_started ⇒ Object
- #find_all_test_steps ⇒ Object
-
#find_hook_by(message) ⇒ Object
This method will be called with 1 of these 3 messages [TestStep || TestRunHookStarted || TestRunHookFinished].
- #find_meta ⇒ Object
-
#find_most_severe_test_step_result_by(message) ⇒ Object
This method will be called with 1 of these 2 messages [TestCaseStarted || TestCaseFinished].
-
#find_pickle_by(message) ⇒ Object
This method will be called with 1 of these 5 messages [TestCase || TestCaseStarted || TestCaseFinished || TestStepStarted || TestStepFinished].
-
#find_pickle_step_by(test_step) ⇒ Object
This method will be called with only 1 message [TestStep].
-
#find_step_by(pickle_step) ⇒ Object
This method will be called with only 1 message [PickleStep].
-
#find_step_definitions_by(test_step) ⇒ Object
This method will be called with only 1 message [TestStep].
-
#find_test_case_by(message) ⇒ Object
This method will be called with 1 of these 4 messages [TestCaseStarted || TestCaseFinished || TestStepStarted || TestStepFinished].
-
#find_test_case_finished_by(test_case_started) ⇒ Object
This method will be called with only 1 message [TestCaseStarted].
-
#find_test_case_started_by(message) ⇒ Object
This method will be called with 1 of these 3 messages [TestCaseFinished || TestStepStarted || TestStepFinished].
- #find_test_run_duration ⇒ Object
- #find_test_run_finished ⇒ Object
-
#find_test_run_hook_finished_by(test_run_hook_started) ⇒ Object
This method will be called with only 1 message [TestRunHookStarted].
-
#find_test_run_hook_started_by(test_run_hook_finished) ⇒ Object
This method will be called with only 1 message [TestRunHookFinished].
- #find_test_run_started ⇒ Object
-
#find_test_step_by(message) ⇒ Object
This method will be called with 1 of these 2 messages [TestStepStarted || TestStepFinished].
-
#find_test_steps_finished_by(message) ⇒ Object
This method will be called with 1 of these 2 messages [TestCaseStarted || TestCaseFinished].
-
#find_test_steps_started_by(message) ⇒ Object
This method will be called with 1 of these 2 messages [TestCaseStarted || TestCaseFinished].
-
#initialize(repository) ⇒ Query
constructor
A new instance of Query.
Constructor Details
#initialize(repository) ⇒ Query
Returns a new instance of Query.
19 20 21 |
# File 'lib/cucumber/query.rb', line 19 def initialize(repository) @repository = repository end |
Instance Method Details
#count_test_cases_started ⇒ Object
TODO: find****By methods (16/25) Complete
Missing: findSuggestionsBy (2 variants)
Missing: findUnambiguousStepDefinitionBy (1 variant)
Missing: findTestStepFinishedAndTestStepBy (1 variant)
Missing: findAttachmentsBy (2 variants)
Missing: findTestCaseDurationBy (2 variant)
REDUNDANT: findLineageBy (9 variants!)
REDUNDANT: findLocationOf (1 variant) - This strictly speaking isn't a findBy but is located within them
To Review: findMostSevereTestStepResultBy (2 variants)
To Review: findTestRunDuration (1 variant) - This strictly speaking isn't a findBy but is located within them
40 41 42 |
# File 'lib/cucumber/query.rb', line 40 def count_test_cases_started find_all_test_case_started.length end |
#find_all_pickle_steps ⇒ Object
48 49 50 |
# File 'lib/cucumber/query.rb', line 48 def find_all_pickle_steps repository.pickle_step_by_id.values end |
#find_all_pickles ⇒ Object
44 45 46 |
# File 'lib/cucumber/query.rb', line 44 def find_all_pickles repository.pickle_by_id.values end |
#find_all_step_definitions ⇒ Object
52 53 54 |
# File 'lib/cucumber/query.rb', line 52 def find_all_step_definitions repository.step_definition_by_id.values end |
#find_all_test_case_finished ⇒ Object
This finds all test cases that have finished AND will not be retried
67 68 69 |
# File 'lib/cucumber/query.rb', line 67 def find_all_test_case_finished repository.test_case_finished_by_test_case_started_id.values.reject(&:will_be_retried) end |
#find_all_test_case_started ⇒ Object
This finds all test cases from the following conditions (UNION)
-> Test cases that have started, but not yet finished
-> Test cases that have started, finished, but that will NOT be retried
59 60 61 62 63 64 |
# File 'lib/cucumber/query.rb', line 59 def find_all_test_case_started repository.test_case_started_by_id.values.select do |test_case_started| test_case_finished = find_test_case_finished_by(test_case_started) test_case_finished.nil? || !test_case_finished.will_be_retried end end |
#find_all_test_cases ⇒ Object
71 72 73 |
# File 'lib/cucumber/query.rb', line 71 def find_all_test_cases repository.test_case_by_id.values end |
#find_all_test_run_hook_finished ⇒ Object
79 80 81 |
# File 'lib/cucumber/query.rb', line 79 def find_all_test_run_hook_finished repository.test_run_hook_finished_by_test_run_hook_started_id.values end |
#find_all_test_run_hook_started ⇒ Object
75 76 77 |
# File 'lib/cucumber/query.rb', line 75 def find_all_test_run_hook_started repository.test_run_hook_started_by_id.values end |
#find_all_test_step_finished ⇒ Object
87 88 89 |
# File 'lib/cucumber/query.rb', line 87 def find_all_test_step_finished repository.test_steps_finished_by_test_case_started_id.values.flatten end |
#find_all_test_step_started ⇒ Object
83 84 85 |
# File 'lib/cucumber/query.rb', line 83 def find_all_test_step_started repository.test_steps_started_by_test_case_started_id.values.flatten end |
#find_all_test_steps ⇒ Object
91 92 93 |
# File 'lib/cucumber/query.rb', line 91 def find_all_test_steps repository.test_step_by_id.values end |
#find_hook_by(message) ⇒ Object
This method will be called with 1 of these 3 messages
[TestStep || TestRunHookStarted || TestRunHookFinished]
97 98 99 100 101 102 103 104 105 106 |
# File 'lib/cucumber/query.rb', line 97 def find_hook_by() (, %i[test_step test_run_hook_started test_run_hook_finished], '#find_hook_by') if .is_a?(Cucumber::Messages::TestRunHookFinished) = find_test_run_hook_started_by() ? find_hook_by() : nil else repository.hook_by_id[.hook_id] end end |
#find_meta ⇒ Object
108 109 110 |
# File 'lib/cucumber/query.rb', line 108 def repository. end |
#find_most_severe_test_step_result_by(message) ⇒ Object
This method will be called with 1 of these 2 messages
[TestCaseStarted || TestCaseFinished]
114 115 116 117 118 119 120 121 122 123 124 125 126 127 |
# File 'lib/cucumber/query.rb', line 114 def find_most_severe_test_step_result_by() (, %i[test_case_started test_case_finished], '#find_most_severe_test_step_result_by') if .is_a?(Cucumber::Messages::TestCaseStarted) find_test_steps_finished_by() .map(&:test_step_result) .max_by { |test_step_result| test_step_result_rankings[test_step_result.status] } # Java code: "PREVIOUS".max(comparing(TestStepResult::getStatus, new TestStepResultStatusComparator())); else = find_test_case_started_by() && find_most_severe_test_step_result_by() # Java code: return findTestCaseStartedBy(testCaseFinished).flatMap(this::findMostSevereTestStepResultBy); end end |
#find_pickle_by(message) ⇒ Object
This method will be called with 1 of these 5 messages
[TestCase || TestCaseStarted || TestCaseFinished || TestStepStarted || TestStepFinished]
131 132 133 134 135 136 |
# File 'lib/cucumber/query.rb', line 131 def find_pickle_by() (, %i[test_case test_case_started test_case_finished test_step_started test_step_finished], '#find_pickle_by') = .is_a?(Cucumber::Messages::TestCase) ? : find_test_case_by() repository.pickle_by_id[.pickle_id] end |
#find_pickle_step_by(test_step) ⇒ Object
This method will be called with only 1 message
[TestStep]
140 141 142 143 144 |
# File 'lib/cucumber/query.rb', line 140 def find_pickle_step_by(test_step) (test_step, %i[test_step], '#find_pickle_step_by') repository.pickle_step_by_id[test_step.pickle_step_id] end |
#find_step_by(pickle_step) ⇒ Object
This method will be called with only 1 message
[PickleStep]
148 149 150 151 152 |
# File 'lib/cucumber/query.rb', line 148 def find_step_by(pickle_step) (pickle_step, %i[pickle_step], '#find_step_by') repository.step_by_id[pickle_step.ast_node_ids.first] end |
#find_step_definitions_by(test_step) ⇒ Object
This method will be called with only 1 message
[TestStep]
156 157 158 159 160 161 |
# File 'lib/cucumber/query.rb', line 156 def find_step_definitions_by(test_step) (test_step, %i[test_step], '#find_step_definitions_by') ids = test_step.step_definition_ids.nil? ? [] : test_step.step_definition_ids ids.map { |id| repository.step_definition_by_id[id] }.compact end |
#find_test_case_by(message) ⇒ Object
This method will be called with 1 of these 4 messages
[TestCaseStarted || TestCaseFinished || TestStepStarted || TestStepFinished]
165 166 167 168 169 170 |
# File 'lib/cucumber/query.rb', line 165 def find_test_case_by() (, %i[test_case_started test_case_finished test_step_started test_step_finished], '#find_test_case_by') = .is_a?(Cucumber::Messages::TestCaseStarted) ? : find_test_case_started_by() repository.test_case_by_id[.test_case_id] end |
#find_test_case_finished_by(test_case_started) ⇒ Object
This method will be called with only 1 message
[TestCaseStarted]
182 183 184 185 186 |
# File 'lib/cucumber/query.rb', line 182 def find_test_case_finished_by(test_case_started) (test_case_started, %i[test_case_started], '#find_test_case_finished_by') repository.test_case_finished_by_test_case_started_id[test_case_started.id] end |
#find_test_case_started_by(message) ⇒ Object
This method will be called with 1 of these 3 messages
[TestCaseFinished || TestStepStarted || TestStepFinished]
174 175 176 177 178 |
# File 'lib/cucumber/query.rb', line 174 def find_test_case_started_by() (, %i[test_case_finished test_step_started test_step_finished], '#find_test_case_started_by') repository.test_case_started_by_id[.test_case_started_id] end |
#find_test_run_duration ⇒ Object
188 189 190 191 192 193 194 |
# File 'lib/cucumber/query.rb', line 188 def find_test_run_duration if repository.test_run_started.nil? || repository.test_run_finished.nil? nil else (repository.test_run_finished.) - (repository.test_run_started.) end end |
#find_test_run_finished ⇒ Object
216 217 218 |
# File 'lib/cucumber/query.rb', line 216 def find_test_run_finished repository.test_run_finished end |
#find_test_run_hook_finished_by(test_run_hook_started) ⇒ Object
This method will be called with only 1 message
[TestRunHookStarted]
206 207 208 209 210 |
# File 'lib/cucumber/query.rb', line 206 def find_test_run_hook_finished_by(test_run_hook_started) (test_run_hook_started, %i[test_run_hook_started], '#find_test_run_hook_finished_by') repository.test_run_hook_finished_by_test_run_hook_started_id[test_run_hook_started.id] end |
#find_test_run_hook_started_by(test_run_hook_finished) ⇒ Object
This method will be called with only 1 message
[TestRunHookFinished]
198 199 200 201 202 |
# File 'lib/cucumber/query.rb', line 198 def find_test_run_hook_started_by(test_run_hook_finished) (test_run_hook_finished, %i[test_run_hook_finished], '#find_test_run_hook_started_by') repository.test_run_hook_started_by_id[test_run_hook_finished.test_run_hook_started_id] end |
#find_test_run_started ⇒ Object
212 213 214 |
# File 'lib/cucumber/query.rb', line 212 def find_test_run_started repository.test_run_started end |
#find_test_step_by(message) ⇒ Object
This method will be called with 1 of these 2 messages
[TestStepStarted || TestStepFinished]
222 223 224 225 226 |
# File 'lib/cucumber/query.rb', line 222 def find_test_step_by() (, %i[test_case_started test_case_finished], '#find_test_step_by') repository.test_step_by_id[.test_step_id] end |
#find_test_steps_finished_by(message) ⇒ Object
This method will be called with 1 of these 2 messages
[TestCaseStarted || TestCaseFinished]
239 240 241 242 243 244 245 246 247 248 |
# File 'lib/cucumber/query.rb', line 239 def find_test_steps_finished_by() (, %i[test_case_started test_case_finished], '#find_test_steps_finished_by') if .is_a?(Cucumber::Messages::TestCaseStarted) repository.test_steps_finished_by_test_case_started_id.fetch(.id, []) else = find_test_case_started_by() .nil? ? [] : find_test_steps_finished_by() end end |
#find_test_steps_started_by(message) ⇒ Object
This method will be called with 1 of these 2 messages
[TestCaseStarted || TestCaseFinished]
230 231 232 233 234 235 |
# File 'lib/cucumber/query.rb', line 230 def find_test_steps_started_by() (, %i[test_case_started test_case_finished], '#find_test_steps_started_by') key = .is_a?(Cucumber::Messages::TestCaseStarted) ? .id : .test_case_started_id repository.test_steps_started_by_test_case_started_id.fetch(key, []) end |