Class: Cucumber::Ast::ScenarioOutline
Overview
Defined Under Namespace
Modules: ExamplesArray
Instance Attribute Summary collapse
#feature, #gherkin_statement, #raw_steps
Instance Method Summary
collapse
#accept_hook?, #add_step, #attach_steps, #backtrace_line, #file_colon_line, #first_line_length, #language, #matches_scenario_names?, #max_line_length, #name_line_lengths, #source_indent, #source_tag_names, #text_length
Constructor Details
#initialize(background, comment, tags, line, keyword, name, raw_steps, example_sections) ⇒ ScenarioOutline
The example_sections
argument must be an Array where each element is another array representing an Examples section. This array has 3 elements:
-
Examples keyword
-
Examples section name
-
Raw matrix
23
24
25
|
# File 'lib/cucumber/ast/scenario_outline.rb', line 23
def initialize(background, , tags, line, keyword, name, raw_steps, example_sections)
@background, @comment, @tags, @line, @keyword, @name, @raw_steps, @example_sections = background, , tags, line, keyword, name, raw_steps, example_sections
end
|
Instance Attribute Details
Returns the value of attribute name.
6
7
8
|
# File 'lib/cucumber/ast/scenario_outline.rb', line 6
def name
@name
end
|
Instance Method Details
#accept(visitor) ⇒ Object
57
58
59
60
61
62
63
64
65
66
|
# File 'lib/cucumber/ast/scenario_outline.rb', line 57
def accept(visitor)
return if Cucumber.wants_to_quit
visitor.(@comment) unless @comment.empty?
visitor.visit_tags(@tags)
visitor.visit_scenario_name(@keyword, @name, file_colon_line(@line), source_indent(first_line_length))
visitor.visit_steps(@steps)
skip_invoke! if @background && @background.failed?
visitor.visit_examples_array(@examples_array) unless @examples_array.empty?
end
|
#add_examples(example_section, gherkin_examples) ⇒ Object
27
28
29
|
# File 'lib/cucumber/ast/scenario_outline.rb', line 27
def add_examples(example_section, gherkin_examples)
@example_sections << [example_section, gherkin_examples]
end
|
#each_example_row(&proc) ⇒ Object
89
90
91
92
93
|
# File 'lib/cucumber/ast/scenario_outline.rb', line 89
def each_example_row(&proc)
@examples_array.each do |examples|
examples.each_example_row(&proc)
end
end
|
#fail!(exception) ⇒ Object
68
69
70
71
|
# File 'lib/cucumber/ast/scenario_outline.rb', line 68
def fail!(exception)
end
|
#failed? ⇒ Boolean
104
105
106
|
# File 'lib/cucumber/ast/scenario_outline.rb', line 104
def failed?
@examples_array.select{|examples| examples.failed?}.any?
end
|
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
# File 'lib/cucumber/ast/scenario_outline.rb', line 31
def init
return if @steps
attach_steps(@raw_steps)
@steps = StepCollection.new(@raw_steps)
@examples_array = @example_sections.map do |example_section_and_gherkin_examples|
example_section = example_section_and_gherkin_examples[0]
gherkin_examples = example_section_and_gherkin_examples[1]
= example_section[0]
examples_line = example_section[1]
examples_keyword = example_section[2]
examples_name = example_section[3]
examples_matrix = example_section[4]
examples_table = OutlineTable.new(examples_matrix, self)
ex = Examples.new(, examples_line, examples_keyword, examples_name, examples_table)
ex.gherkin_statement(gherkin_examples)
ex
end
@examples_array.extend(ExamplesArray)
@background.feature_elements << self if @background
end
|
#skip_invoke! ⇒ Object
73
74
75
76
77
78
|
# File 'lib/cucumber/ast/scenario_outline.rb', line 73
def skip_invoke!
@examples_array.each{|examples| examples.skip_invoke!}
@feature.next_feature_element(self) do |next_one|
next_one.skip_invoke!
end
end
|
#step_invocations(cells) ⇒ Object
80
81
82
83
84
85
86
87
|
# File 'lib/cucumber/ast/scenario_outline.rb', line 80
def step_invocations(cells)
step_invocations = @steps.step_invocations_from_cells(cells)
if @background
@background.step_collection(step_invocations)
else
StepCollection.new(step_invocations)
end
end
|
108
109
110
111
112
113
114
115
116
117
118
119
|
# File 'lib/cucumber/ast/scenario_outline.rb', line 108
def to_sexp
init
sexp = [:scenario_outline, @keyword, @name]
= @comment.to_sexp
sexp += [] if
tags = @tags.to_sexp
sexp += tags if tags.any?
steps = @steps.to_sexp
sexp += steps if steps.any?
sexp += @examples_array.map{|e| e.to_sexp}
sexp
end
|
#visit_scenario_name(visitor, row) ⇒ Object
95
96
97
98
99
100
101
102
|
# File 'lib/cucumber/ast/scenario_outline.rb', line 95
def visit_scenario_name(visitor, row)
visitor.visit_scenario_name(
@feature.language.keywords('scenario')[0],
row.name,
file_colon_line(row.line),
source_indent(first_line_length)
)
end
|