Class: CukeModeler::Feature
- Includes:
- Described, Named, Parsed, Sourceable, Taggable
- Defined in:
- lib/cuke_modeler/models/feature.rb
Overview
A class modeling a feature in a Cucumber suite.
Instance Attribute Summary collapse
-
#background ⇒ Object
The Background object contained by the Feature.
-
#keyword ⇒ Object
The keyword for the feature.
-
#tests ⇒ Object
The Scenario and Outline objects contained by the Feature.
Attributes included from Sourceable
Attributes included from Taggable
Attributes included from Described
Attributes included from Named
Attributes included from Parsed
Attributes included from Nested
Instance Method Summary collapse
-
#children ⇒ Object
Returns the model objects that belong to this model.
-
#has_background? ⇒ Boolean
Returns true if the feature contains a background, false otherwise.
-
#initialize(source_text = nil) ⇒ Feature
constructor
Creates a new Feature object and, if source_text is provided, populates the object.
-
#outlines ⇒ Object
Returns the outline models contained in the feature.
-
#scenarios ⇒ Object
Returns the scenario models contained in the feature.
-
#test_case_count ⇒ Object
Returns the number of test cases contained in the feature.
-
#to_s ⇒ Object
Returns a string representation of this model.
Methods included from Taggable
Methods included from Containing
Methods included from Nested
Constructor Details
#initialize(source_text = nil) ⇒ Feature
Creates a new Feature object and, if source_text is provided, populates the object.
26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/cuke_modeler/models/feature.rb', line 26 def initialize(source_text = nil) @tags = [] @tests = [] super(source_text) if source_text parsed_feature_data = parse_source(source_text) populate_feature(self, parsed_feature_data) end end |
Instance Attribute Details
#background ⇒ Object
The Background object contained by the Feature
18 19 20 |
# File 'lib/cuke_modeler/models/feature.rb', line 18 def background @background end |
#keyword ⇒ Object
The keyword for the feature
15 16 17 |
# File 'lib/cuke_modeler/models/feature.rb', line 15 def keyword @keyword end |
#tests ⇒ Object
The Scenario and Outline objects contained by the Feature
21 22 23 |
# File 'lib/cuke_modeler/models/feature.rb', line 21 def tests @tests end |
Instance Method Details
#children ⇒ Object
Returns the model objects that belong to this model.
65 66 67 68 69 70 |
# File 'lib/cuke_modeler/models/feature.rb', line 65 def children models = tests + models << background if background models end |
#has_background? ⇒ Boolean
Returns true if the feature contains a background, false otherwise.
39 40 41 |
# File 'lib/cuke_modeler/models/feature.rb', line 39 def has_background? !@background.nil? end |
#outlines ⇒ Object
Returns the outline models contained in the feature.
49 50 51 |
# File 'lib/cuke_modeler/models/feature.rb', line 49 def outlines @tests.select { |test| test.is_a? Outline } end |
#scenarios ⇒ Object
Returns the scenario models contained in the feature.
44 45 46 |
# File 'lib/cuke_modeler/models/feature.rb', line 44 def scenarios @tests.select { |test| test.is_a? Scenario } end |
#test_case_count ⇒ Object
Returns the number of test cases contained in the feature. A test case is a single set of test values, such as an individual scenario or one example row of an outline.
56 57 58 59 60 61 62 |
# File 'lib/cuke_modeler/models/feature.rb', line 56 def test_case_count scenarios.count + outlines.reduce(0) { |outline_sum, outline| outline_sum += outline.examples.reduce(0) { |example_sum, example| example_sum += example.argument_rows.count } } end |
#to_s ⇒ Object
Returns a string representation of this model. For a feature model, this will be Gherkin text that is equivalent to the feature being modeled.
74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/cuke_modeler/models/feature.rb', line 74 def to_s text = '' text << tag_output_string + "\n" unless .empty? text << "#{@keyword}:#{name_output_string}" text << "\n" + description_output_string unless (description.nil? || description.empty?) text << "\n\n" + background_output_string if background text << "\n\n" + tests_output_string unless tests.empty? text end |