Class: CukeModeler::Scenario

Inherits:
Model
  • Object
show all
Includes:
Described, Named, Parsed, Parsing, Sourceable, Stepped, Taggable
Defined in:
lib/cuke_modeler/models/scenario.rb

Overview

A class modeling an individual scenario of a Cucumber suite.

Instance Attribute Summary collapse

Attributes included from Taggable

#tags

Attributes included from Sourceable

#source_line

Attributes included from Stepped

#steps

Attributes included from Described

#description

Attributes included from Named

#name

Attributes included from Parsed

#parsing_data

Attributes included from Nested

#parent_model

Instance Method Summary collapse

Methods included from Taggable

#all_tags, #applied_tags

Methods included from Parsing

dialects, parse_text

Methods included from Containing

#each_descendant, #each_model

Methods included from Nested

#get_ancestor

Constructor Details

#initialize(source_text = nil) ⇒ Scenario

Creates a new Scenario object and, if source_text is provided, populates the object.


22
23
24
25
26
27
28
29
30
31
32
# File 'lib/cuke_modeler/models/scenario.rb', line 22

def initialize(source_text = nil)
  @steps = []
  @tags = []

  super(source_text)

  return unless source_text

  parsed_scenario_data = parse_source(source_text)
  populate_scenario(self, parsed_scenario_data)
end

Instance Attribute Details

#keywordObject

The scenario's keyword


17
18
19
# File 'lib/cuke_modeler/models/scenario.rb', line 17

def keyword
  @keyword
end

Instance Method Details

#==(other) ⇒ Object

Returns true if the two models have equivalent steps and false otherwise.


35
36
37
38
39
# File 'lib/cuke_modeler/models/scenario.rb', line 35

def ==(other)
  return false unless other.respond_to?(:steps)

  steps == other.steps
end

#childrenObject

Returns the model objects that belong to this model.


42
43
44
# File 'lib/cuke_modeler/models/scenario.rb', line 42

def children
  steps + tags
end

#to_sObject

Returns a string representation of this model. For a scenario model, this will be Gherkin text that is equivalent to the scenario being modeled.


51
52
53
54
55
56
57
58
59
60
61
# File 'lib/cuke_modeler/models/scenario.rb', line 51

def to_s
  text = ''

  text << "#{tag_output_string}\n" unless tags.empty?
  text << "#{@keyword}:#{name_output_string}"
  text << "\n#{description_output_string}" unless no_description_to_output?
  text << "\n" unless steps.empty? || no_description_to_output?
  text << "\n#{steps_output_string}" unless steps.empty?

  text
end