Class: Cucumber::Tree::Scenario

Inherits:
BaseScenario show all
Defined in:
lib/cucumber/tree/scenario.rb

Constant Summary collapse

MIN_PADDING =
2
INDENT =
2

Instance Attribute Summary collapse

Attributes inherited from BaseScenario

#feature

Instance Method Summary collapse

Methods inherited from BaseScenario

#accept, #at_line?, #file, #pending?, #previous_step

Constructor Details

#initialize(feature, name, line, &proc) ⇒ Scenario

Returns a new instance of Scenario.



45
46
47
48
49
50
# File 'lib/cucumber/tree/scenario.rb', line 45

def initialize(feature, name, line, &proc)
  require 'cucumber/core_ext/string'
  @feature, @name, @line = feature, name, line
  @steps_and_given_scenarios = []
  instance_eval(&proc) if block_given?
end

Instance Attribute Details

#lineObject (readonly)

Returns the value of attribute line.



43
44
45
# File 'lib/cucumber/tree/scenario.rb', line 43

def line
  @line
end

#nameObject (readonly)

Returns the value of attribute name.



43
44
45
# File 'lib/cucumber/tree/scenario.rb', line 43

def name
  @name
end

#table_column_widthsObject

Returns the value of attribute table_column_widths.



42
43
44
# File 'lib/cucumber/tree/scenario.rb', line 42

def table_column_widths
  @table_column_widths
end

#table_headerObject

If a table follows, the header will be stored here. Weird, but convenient.



41
42
43
# File 'lib/cucumber/tree/scenario.rb', line 41

def table_header
  @table_header
end

Instance Method Details

#And(name) ⇒ Object



126
127
128
# File 'lib/cucumber/tree/scenario.rb', line 126

def And(name)
  create_step('And', name, *caller[0].split(':')[1].to_i)
end

#create_given_scenario(name, line) ⇒ Object



108
109
110
111
112
# File 'lib/cucumber/tree/scenario.rb', line 108

def create_given_scenario(name, line)
  given_scenario =  GivenScenario.new(self, name, line)
  @steps_and_given_scenarios << given_scenario
  given_scenario
end

#create_step(keyword, name, line) ⇒ Object



102
103
104
105
106
# File 'lib/cucumber/tree/scenario.rb', line 102

def create_step(keyword, name, line)
  step = Step.new(self, keyword, name, line)
  @steps_and_given_scenarios << step
  step
end

#Given(name) ⇒ Object



114
115
116
# File 'lib/cucumber/tree/scenario.rb', line 114

def Given(name)
  create_step('Given', name, *caller[0].split(':')[1].to_i)
end

#given_scenario_steps(name) ⇒ Object



61
62
63
# File 'lib/cucumber/tree/scenario.rb', line 61

def given_scenario_steps(name)
  sibling_named(name).steps
end

#lengthObject



69
70
71
# File 'lib/cucumber/tree/scenario.rb', line 69

def length
  @length ||= Cucumber.language['scenario'].jlength + 2 + (@name.nil? ? 0 : @name.jlength)
end

#max_line_lengthObject



73
74
75
# File 'lib/cucumber/tree/scenario.rb', line 73

def max_line_length
  [length, max_step_length].max
end

#max_step_lengthObject



89
90
91
# File 'lib/cucumber/tree/scenario.rb', line 89

def max_step_length
  @max_step_length ||= (steps.map{|step| step.length}.max || 0)
end

#padding_lengthObject



77
78
79
80
81
# File 'lib/cucumber/tree/scenario.rb', line 77

def padding_length
  padding = (max_line_length - length) + MIN_PADDING
  padding += INDENT if length != max_line_length
  padding
end

#row?Boolean

Returns:

  • (Boolean)


98
99
100
# File 'lib/cucumber/tree/scenario.rb', line 98

def row?
  false
end

#sibling_named(name) ⇒ Object



65
66
67
# File 'lib/cucumber/tree/scenario.rb', line 65

def sibling_named(name)
  @feature.scenario_named(name)
end

#step_padding_length(step) ⇒ Object



83
84
85
86
87
# File 'lib/cucumber/tree/scenario.rb', line 83

def step_padding_length(step)
  padding = (max_line_length - step.length) + MIN_PADDING
  padding -= INDENT if length == max_line_length
  padding
end

#stepsObject



57
58
59
# File 'lib/cucumber/tree/scenario.rb', line 57

def steps
  @steps ||= @steps_and_given_scenarios.map{|step| step.steps}.flatten
end

#Then(name) ⇒ Object



122
123
124
# File 'lib/cucumber/tree/scenario.rb', line 122

def Then(name)
  create_step('Then', name, *caller[0].split(':')[1].to_i)
end

#update_table_column_widths(values) ⇒ Object



93
94
95
96
# File 'lib/cucumber/tree/scenario.rb', line 93

def update_table_column_widths values
  @table_column_widths ||= [0] * values.size
  @table_column_widths = @table_column_widths.zip(values).map {|max, value| [max, value.size].max}
end

#When(name) ⇒ Object



118
119
120
# File 'lib/cucumber/tree/scenario.rb', line 118

def When(name)
  create_step('When', name, *caller[0].split(':')[1].to_i)
end