cucumber_analytics 1.1.1 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +8 -8
- data/.simplecov +5 -1
- data/History.rdoc +16 -5
- data/README.rdoc +5 -0
- data/Rakefile +6 -1
- data/features/modeling/background_modeling.feature +5 -1
- data/features/modeling/directory_modeling.feature +1 -1
- data/features/modeling/doc_string_modeling.feature +5 -1
- data/features/modeling/example_modeling.feature +5 -1
- data/features/modeling/feature_file_modeling.feature +1 -1
- data/features/modeling/feature_modeling.feature +15 -10
- data/features/modeling/outline_modeling.feature +6 -1
- data/features/modeling/row_modeling.feature +5 -1
- data/features/modeling/scenario_modeling.feature +6 -1
- data/features/modeling/step_modeling.feature +6 -1
- data/features/modeling/table_modeling.feature +5 -1
- data/features/modeling/tag_modeling.feature +51 -0
- data/features/step_definitions/background_steps.rb +12 -0
- data/features/step_definitions/doc_string_steps.rb +10 -0
- data/features/step_definitions/feature_steps.rb +14 -5
- data/features/step_definitions/outline_steps.rb +31 -15
- data/features/step_definitions/spec_steps.rb +1 -1
- data/features/step_definitions/step_steps.rb +10 -0
- data/features/step_definitions/table_steps.rb +11 -0
- data/features/step_definitions/tag_steps.rb +53 -0
- data/features/step_definitions/test_steps.rb +20 -8
- data/features/step_definitions/world_steps.rb +16 -12
- data/lib/cucumber_analytics/background.rb +10 -0
- data/lib/cucumber_analytics/doc_string.rb +12 -0
- data/lib/cucumber_analytics/example.rb +1 -0
- data/lib/cucumber_analytics/feature.rb +2 -1
- data/lib/cucumber_analytics/feature_element.rb +2 -0
- data/lib/cucumber_analytics/outline.rb +1 -0
- data/lib/cucumber_analytics/raw.rb +20 -0
- data/lib/cucumber_analytics/row.rb +3 -0
- data/lib/cucumber_analytics/scenario.rb +1 -0
- data/lib/cucumber_analytics/step.rb +3 -0
- data/lib/cucumber_analytics/table.rb +8 -0
- data/lib/cucumber_analytics/tag.rb +59 -0
- data/lib/cucumber_analytics/taggable.rb +15 -0
- data/lib/cucumber_analytics/version.rb +1 -1
- data/lib/cucumber_analytics/world.rb +5 -0
- data/lib/cucumber_analytics.rb +2 -0
- data/spec/integration/example_integration_spec.rb +4 -1
- data/spec/integration/feature_integration_spec.rb +11 -8
- data/spec/integration/outline_integration_spec.rb +4 -1
- data/spec/integration/scenario_integration_spec.rb +4 -1
- data/spec/spec_helper.rb +1 -0
- data/spec/unit/background_unit_spec.rb +1 -0
- data/spec/unit/doc_string_unit_spec.rb +1 -0
- data/spec/unit/example_unit_spec.rb +1 -0
- data/spec/unit/feature_unit_spec.rb +12 -0
- data/spec/unit/outline_unit_spec.rb +1 -0
- data/spec/unit/raw_element_unit_specs.rb +24 -0
- data/spec/unit/raw_unit_spec.rb +25 -0
- data/spec/unit/row_unit_spec.rb +1 -0
- data/spec/unit/scenario_unit_spec.rb +1 -0
- data/spec/unit/step_unit_spec.rb +1 -0
- data/spec/unit/table_unit_spec.rb +1 -0
- data/spec/unit/tag_unit_spec.rb +39 -0
- data/spec/unit/taggable_unit_spec.rb +22 -7
- data/spec/unit/tagged_element_unit_specs.rb +22 -7
- data/spec/unit/world_unit_spec.rb +3 -2
- metadata +14 -2
@@ -54,3 +54,15 @@ When /^step "([^"]*)" of the background (?:of feature "([^"]*)" )?has the follow
|
|
54
54
|
|
55
55
|
assert @parsed_files[file - 1].feature.background.steps[step - 1].block == block
|
56
56
|
end
|
57
|
+
|
58
|
+
|
59
|
+
Then(/^the(?: feature "([^"]*)")? background correctly stores its underlying implementation$/) do |file|
|
60
|
+
file ||= 1
|
61
|
+
|
62
|
+
raw_element = @parsed_files[file - 1].feature.background.raw_element
|
63
|
+
|
64
|
+
expected = 'Background'
|
65
|
+
actual = raw_element['keyword']
|
66
|
+
|
67
|
+
assert(actual == expected, "Expected: #{expected}\n but was: #{actual}")
|
68
|
+
end
|
@@ -48,3 +48,13 @@ Then /^(?:the )?(?:feature "([^"]*)" )?(?:test(?: "([^"]*)")? )?(?:step(?: "([^"
|
|
48
48
|
|
49
49
|
assert(actual == expected, "Expected: #{expected}\n but was: #{actual}")
|
50
50
|
end
|
51
|
+
|
52
|
+
Then(/^(?:the )?(?:feature "([^"]*)" )?(?:test(?: "([^"]*)")? )?(?:step(?: "([^"]*)") )?doc string correctly stores its underlying implementation$/) do |file, test, step|
|
53
|
+
file ||= 1
|
54
|
+
test ||= 1
|
55
|
+
step ||= 1
|
56
|
+
|
57
|
+
raw_element = @parsed_files[file - 1].feature.tests[test - 1].steps[step - 1].block.raw_element
|
58
|
+
|
59
|
+
raw_element.has_key?('content_type').should be_true
|
60
|
+
end
|
@@ -17,11 +17,11 @@ Then /^the descriptive lines of feature "([^"]*)" are as follows:$/ do |file, li
|
|
17
17
|
assert(actual == expected, "Expected: #{expected}\n but was: #{actual}")
|
18
18
|
end
|
19
19
|
|
20
|
-
Then /^feature "([^"]*)" is found to have the following tags:$/ do |file,
|
21
|
-
|
22
|
-
actual = @parsed_files[file - 1].feature.tags
|
20
|
+
Then /^feature "([^"]*)" is found to have the following tags:$/ do |file, expected_tags|
|
21
|
+
expected_tags = expected_tags.raw.flatten
|
23
22
|
|
24
|
-
|
23
|
+
@parsed_files[file - 1].feature.tags.should == expected_tags
|
24
|
+
@parsed_files[file - 1].feature.tag_elements.collect { |tag| tag.name }.should == expected_tags
|
25
25
|
end
|
26
26
|
|
27
27
|
Then /^feature "([^"]*)" has no descriptive lines$/ do |file|
|
@@ -30,6 +30,7 @@ end
|
|
30
30
|
|
31
31
|
Then /^feature "([^"]*)" has no tags$/ do |file|
|
32
32
|
assert @parsed_files[file - 1].feature.tags == []
|
33
|
+
assert @parsed_files[file - 1].feature.tag_elements.collect { |tag| tag.name } == []
|
33
34
|
end
|
34
35
|
|
35
36
|
When /^(?:the )?feature(?: "([^"]*)")? scenarios are as follows:$/ do |file, scenarios|
|
@@ -54,7 +55,7 @@ end
|
|
54
55
|
When /^(?:the )?feature(?: "([^"]*)")? background is as follows:$/ do |file, background|
|
55
56
|
file ||= 1
|
56
57
|
|
57
|
-
@parsed_files[file - 1].feature.background.name.should
|
58
|
+
@parsed_files[file - 1].feature.background.name.should == background.raw.flatten.first
|
58
59
|
end
|
59
60
|
|
60
61
|
When /^feature "([^"]*)" has no scenarios$/ do |file|
|
@@ -68,3 +69,11 @@ end
|
|
68
69
|
When /^feature "([^"]*)" has no background/ do |file|
|
69
70
|
assert @parsed_files[file - 1].feature.has_background? == false
|
70
71
|
end
|
72
|
+
|
73
|
+
Then /^(?:the )?feature(?: "([^"]*)")? correctly stores its underlying implementation$/ do |file|
|
74
|
+
file ||= 1
|
75
|
+
|
76
|
+
raw_element = @parsed_files[file - 1].feature.raw_element
|
77
|
+
|
78
|
+
raw_element.has_key?('elements').should be_true
|
79
|
+
end
|
@@ -46,29 +46,26 @@ Then /^(?:the )?(?:feature "([^"]*)" )?test(?: "([^"]*)")? example block(?: "([^
|
|
46
46
|
assert @parsed_files[file - 1].feature.tests[test - 1].examples[example - 1].description == lines
|
47
47
|
end
|
48
48
|
|
49
|
-
Then /^(?:the )?(?:feature "([^"]*)" )?test(?: "([^"]*)")? example block(?: "([^"]*)")? is found to have the following tags:$/ do |file, test, example,
|
49
|
+
Then /^(?:the )?(?:feature "([^"]*)" )?test(?: "([^"]*)")? example block(?: "([^"]*)")? is found to have the following tags:$/ do |file, test, example, expected_tags|
|
50
50
|
file ||= 1
|
51
51
|
test ||= 1
|
52
52
|
example ||= 1
|
53
53
|
|
54
|
+
expected_tags = expected_tags.raw.flatten
|
54
55
|
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
assert(actual == expected, "Expected: #{expected}\n but was: #{actual}")
|
56
|
+
@parsed_files[file - 1].feature.tests[test - 1].examples[example - 1].tags.should == expected_tags
|
57
|
+
@parsed_files[file - 1].feature.tests[test - 1].examples[example - 1].tag_elements.collect { |tag| tag.name }.should == expected_tags
|
59
58
|
end
|
60
59
|
|
61
|
-
Then /^(?:the )?(?:feature "([^"]*)" )?test(?: "([^"]*)")? example block(?: "([^"]*)")? is found to have the following applied tags:$/ do |file, test, example,
|
60
|
+
Then /^(?:the )?(?:feature "([^"]*)" )?test(?: "([^"]*)")? example block(?: "([^"]*)")? is found to have the following applied tags:$/ do |file, test, example, expected_tags|
|
62
61
|
file ||= 1
|
63
62
|
test ||= 1
|
64
63
|
example ||= 1
|
65
64
|
|
66
|
-
|
67
|
-
|
68
|
-
expected = tags.sort
|
69
|
-
actual = @parsed_files[file - 1].feature.tests[test - 1].examples[example - 1].applied_tags.sort
|
65
|
+
expected_tags = expected_tags.raw.flatten.sort
|
70
66
|
|
71
|
-
|
67
|
+
@parsed_files[file - 1].feature.tests[test - 1].examples[example - 1].applied_tags.sort.should == expected_tags
|
68
|
+
@parsed_files[file - 1].feature.tests[test - 1].examples[example - 1].applied_tag_elements.collect { |tag| tag.name }.sort.should == expected_tags
|
72
69
|
end
|
73
70
|
|
74
71
|
Then /^(?:the )?(?:feature "([^"]*)" )?test(?: "([^"]*)")? example block(?: "([^"]*)")? has no tags$/ do |file, test, example|
|
@@ -76,10 +73,8 @@ Then /^(?:the )?(?:feature "([^"]*)" )?test(?: "([^"]*)")? example block(?: "([^
|
|
76
73
|
test ||= 1
|
77
74
|
example ||= 1
|
78
75
|
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
assert(actual == expected, "Expected: #{expected}\n but was: #{actual}")
|
76
|
+
@parsed_files[file - 1].feature.tests[test - 1].examples[example - 1].tags.should == []
|
77
|
+
@parsed_files[file - 1].feature.tests[test - 1].examples[example - 1].tag_elements.collect { |tag| tag.name }.should == []
|
83
78
|
end
|
84
79
|
|
85
80
|
Then /^(?:the )?(?:feature "([^"]*)" )?test(?: "([^"]*)")? example block(?: "([^"]*)")? rows are as follows:$/ do |file, test, example, rows|
|
@@ -173,3 +168,24 @@ Then /^(?:the )?(?:feature "([^"]*)" )?test(?: "([^"]*)")? example block(?: "([^
|
|
173
168
|
|
174
169
|
assert(actual == expected, "Expected: #{expected}\n but was: #{actual}")
|
175
170
|
end
|
171
|
+
|
172
|
+
Then /^(?:the )?(?:feature "([^"]*)" )?test(?: "([^"]*)")? example block(?: "([^"]*)")? row(?: "([^"]*)")? correctly stores its underlying implementation$/ do |file, test, example, row|
|
173
|
+
file ||= 1
|
174
|
+
test ||= 1
|
175
|
+
example ||= 1
|
176
|
+
row ||= 1
|
177
|
+
|
178
|
+
raw_element = @parsed_files[file - 1].feature.tests[test - 1].examples[example - 1].row_elements[row - 1].raw_element
|
179
|
+
|
180
|
+
raw_element.has_key?('cells').should be_true
|
181
|
+
end
|
182
|
+
|
183
|
+
Then /^(?:the )?(?:feature "([^"]*)" )?test(?: "([^"]*)")? example block(?: "([^"]*)")? correctly stores its underlying implementation$/ do |file, test, example|
|
184
|
+
file ||= 1
|
185
|
+
test ||= 1
|
186
|
+
example ||= 1
|
187
|
+
|
188
|
+
raw_element = @parsed_files[file - 1].feature.tests[test - 1].examples[example - 1].raw_element
|
189
|
+
|
190
|
+
raw_element.has_key?('rows').should be_true
|
191
|
+
end
|
@@ -7,7 +7,7 @@ Given /^that there are "([^"]*)" detailing models$/ do |spec_file|
|
|
7
7
|
@spec_file = spec_file
|
8
8
|
end
|
9
9
|
|
10
|
-
When /^the corresponding
|
10
|
+
When /^the corresponding specifications are run$/ do
|
11
11
|
command = "rspec #{@spec_file}"
|
12
12
|
|
13
13
|
@specs_passed = system(command)
|
@@ -100,3 +100,13 @@ Then /^(?:the )?(?:feature "([^"]*)" )?(?:test(?: "([^"]*)")? )?step(?: "([^"]*)
|
|
100
100
|
|
101
101
|
actual.should == expected
|
102
102
|
end
|
103
|
+
|
104
|
+
Then /^(?:the )?(?:feature "([^"]*)" )?test(?: "([^"]*)")? step(?: "([^"]*)")? correctly stores its underlying implementation$/ do |file, test, step|
|
105
|
+
file ||= 1
|
106
|
+
test ||= 1
|
107
|
+
step ||= 1
|
108
|
+
|
109
|
+
raw_element = @parsed_files[file - 1].feature.tests[test - 1].steps[step - 1].raw_element
|
110
|
+
|
111
|
+
raw_element.has_key?('keyword').should be_true
|
112
|
+
end
|
@@ -8,3 +8,14 @@ Then /^(?:the )?(?:feature "([^"]*)" )?(?:test(?: "([^"]*)")? )?(?:step(?: "([^"
|
|
8
8
|
|
9
9
|
assert(actual == expected, "Expected: #{expected}\n but was: #{actual}")
|
10
10
|
end
|
11
|
+
|
12
|
+
Then /^(?:the )?(?:feature "([^"]*)" )?(?:test(?: "([^"]*)")? )?(?:step(?: "([^"]*)") )?table correctly stores its underlying implementation$/ do |file, test, step|
|
13
|
+
file ||= 1
|
14
|
+
test ||= 1
|
15
|
+
step ||= 1
|
16
|
+
|
17
|
+
raw_element = @parsed_files[file - 1].feature.tests[test - 1].steps[step - 1].block.raw_element
|
18
|
+
|
19
|
+
raw_element.is_a?(Array).should be_true
|
20
|
+
raw_element.each { |row| row.has_key?('cells').should be_true }
|
21
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
Then /^the feature tag correctly stores its underlying implementation$/ do
|
2
|
+
raw_element = @parsed_files.first.feature.tag_elements.first.raw_element
|
3
|
+
|
4
|
+
raw_element.has_key?('name').should be_true
|
5
|
+
end
|
6
|
+
|
7
|
+
When(/^the test tag correctly stores its underlying implementation$/) do
|
8
|
+
raw_element = @parsed_files.first.feature.tests.first.tag_elements.first.raw_element
|
9
|
+
|
10
|
+
raw_element.has_key?('name').should be_true
|
11
|
+
end
|
12
|
+
|
13
|
+
When(/^the example tag correctly stores its underlying implementation$/) do
|
14
|
+
raw_element = @parsed_files.first.feature.tests.first.examples.first.tag_elements.first.raw_element
|
15
|
+
|
16
|
+
raw_element.has_key?('name').should be_true
|
17
|
+
end
|
18
|
+
|
19
|
+
Then(/^the feature tag name is "([^"]*)"$/) do |tag_name|
|
20
|
+
tag = @parsed_files.first.feature.tag_elements.first
|
21
|
+
|
22
|
+
tag.name.should == tag_name
|
23
|
+
end
|
24
|
+
|
25
|
+
When(/^the test tag name is "([^"]*)"$/) do |tag_name|
|
26
|
+
tag = @parsed_files.first.feature.tests.first.tag_elements.first
|
27
|
+
|
28
|
+
tag.name.should == tag_name
|
29
|
+
end
|
30
|
+
|
31
|
+
When(/^the example tag name is "([^"]*)"$/) do |tag_name|
|
32
|
+
tag = @parsed_files.first.feature.tests.first.examples.first.tag_elements.first
|
33
|
+
|
34
|
+
tag.name.should == tag_name
|
35
|
+
end
|
36
|
+
|
37
|
+
Then(/^the feature tag source line "([^"]*)"$/) do |line|
|
38
|
+
tag = @parsed_files.first.feature.tag_elements.first
|
39
|
+
|
40
|
+
tag.source_line.should == line
|
41
|
+
end
|
42
|
+
|
43
|
+
When(/^the test tag source line "([^"]*)"$/) do |line|
|
44
|
+
tag = @parsed_files.first.feature.tests.first.tag_elements.first
|
45
|
+
|
46
|
+
tag.source_line.should == line
|
47
|
+
end
|
48
|
+
|
49
|
+
When(/^the example tag source line "([^"]*)"$/) do |line|
|
50
|
+
tag = @parsed_files.first.feature.tests.first.examples.first.tag_elements.first
|
51
|
+
|
52
|
+
tag.source_line.should == line
|
53
|
+
end
|
@@ -38,24 +38,24 @@ Then /^(?:the )?(?:feature "([^"]*)" )?test(?: "([^"]*)")? steps are as follows:
|
|
38
38
|
assert actual_steps.flatten == steps
|
39
39
|
end
|
40
40
|
|
41
|
-
Then /^(?:the )?(?:feature "([^"]*)" )?test(?: "([^"]*)")? is found to have the following tags:$/ do |file, test,
|
41
|
+
Then /^(?:the )?(?:feature "([^"]*)" )?test(?: "([^"]*)")? is found to have the following tags:$/ do |file, test, expected_tags|
|
42
42
|
file ||= 1
|
43
43
|
test ||= 1
|
44
44
|
|
45
|
-
|
46
|
-
actual = @parsed_files[file - 1].feature.tests[test - 1].tags
|
45
|
+
expected_tags = expected_tags.raw.flatten
|
47
46
|
|
48
|
-
|
47
|
+
@parsed_files[file - 1].feature.tests[test - 1].tags.should == expected_tags
|
48
|
+
@parsed_files[file - 1].feature.tests[test - 1].tag_elements.collect { |tag| tag.name }.should == expected_tags
|
49
49
|
end
|
50
50
|
|
51
|
-
Then /^(?:the )?(?:feature "([^"]*)" )?test(?: "([^"]*)")? is found to have the following applied tags:$/ do |file, test,
|
51
|
+
Then /^(?:the )?(?:feature "([^"]*)" )?test(?: "([^"]*)")? is found to have the following applied tags:$/ do |file, test, expected_tags|
|
52
52
|
file ||= 1
|
53
53
|
test ||= 1
|
54
54
|
|
55
|
-
|
56
|
-
actual = @parsed_files[file - 1].feature.tests[test - 1].applied_tags
|
55
|
+
expected_tags = expected_tags.raw.flatten
|
57
56
|
|
58
|
-
|
57
|
+
@parsed_files[file - 1].feature.tests[test - 1].applied_tags.should == expected_tags
|
58
|
+
@parsed_files[file - 1].feature.tests[test - 1].applied_tag_elements.collect { |tag| tag.name }.should == expected_tags
|
59
59
|
end
|
60
60
|
|
61
61
|
Then /^(?:the )?(?:feature "([^"]*)" )?test(?: "([^"]*)")? step "([^"]*)" has the following block:$/ do |file, test, step, block|
|
@@ -89,3 +89,15 @@ Then /^(?:the )?(?:feature "([^"]*)" )?test(?: "([^"]*)")? is not equal to test
|
|
89
89
|
|
90
90
|
assert @parsed_files[file - 1].feature.tests[first_test - 1] != @parsed_files[file - 1].feature.tests[second_test - 1]
|
91
91
|
end
|
92
|
+
|
93
|
+
Then /^(?:the )?(?:feature "([^"]*)" )?test(?: "([^"]*)")? correctly stores its underlying implementation$/ do |file, test|
|
94
|
+
file ||= 1
|
95
|
+
test ||= 1
|
96
|
+
|
97
|
+
raw_element = @parsed_files[file - 1].feature.tests[test - 1].raw_element
|
98
|
+
|
99
|
+
expected = ['Scenario', 'Scenario Outline']
|
100
|
+
actual = raw_element['keyword']
|
101
|
+
|
102
|
+
expected.include?(actual).should be_true
|
103
|
+
end
|
@@ -1,28 +1,32 @@
|
|
1
|
-
Then /^the tags collected from (?:feature "([^"]*)" )?test "([^"]*)" are as follows:$/ do |file, test,
|
1
|
+
Then /^the tags collected from (?:feature "([^"]*)" )?test "([^"]*)" are as follows:$/ do |file, test, expected_tags|
|
2
2
|
file ||= 1
|
3
|
-
|
3
|
+
expected_tags = expected_tags.raw.flatten
|
4
4
|
|
5
|
-
|
5
|
+
CucumberAnalytics::World.tags_in(@parsed_files[file - 1].feature.tests[test - 1]).sort.should == expected_tags.sort
|
6
|
+
CucumberAnalytics::World.tag_elements_in(@parsed_files[file - 1].feature.tests[test - 1]).collect { |tag| tag.name }.sort.should == expected_tags.sort
|
6
7
|
end
|
7
8
|
|
8
|
-
Then /^the tags collected from feature "([^"]*)" are as follows:$/ do |file,
|
9
|
+
Then /^the tags collected from feature "([^"]*)" are as follows:$/ do |file, expected_tags|
|
9
10
|
file ||= 1
|
10
|
-
|
11
|
+
expected_tags = expected_tags.raw.flatten
|
11
12
|
|
12
|
-
|
13
|
+
CucumberAnalytics::World.tags_in(@parsed_files[file - 1].feature).sort == expected_tags.sort.should
|
14
|
+
CucumberAnalytics::World.tag_elements_in(@parsed_files[file - 1].feature).collect { |tag| tag.name }.sort.should == expected_tags.sort
|
13
15
|
end
|
14
16
|
|
15
|
-
Then /^the tags collected from file "([^"]*)" are as follows:$/ do |file,
|
17
|
+
Then /^the tags collected from file "([^"]*)" are as follows:$/ do |file, expected_tags|
|
16
18
|
file ||= 1
|
17
|
-
|
19
|
+
expected_tags = expected_tags.raw.flatten
|
18
20
|
|
19
|
-
|
21
|
+
CucumberAnalytics::World.tags_in(@parsed_files[file - 1]).sort.should == expected_tags.sort
|
22
|
+
CucumberAnalytics::World.tag_elements_in(@parsed_files[file - 1]).collect { |tag| tag.name }.sort.should == expected_tags.sort
|
20
23
|
end
|
21
24
|
|
22
|
-
Then /^the tags collected from directory are as follows:$/ do |
|
23
|
-
|
25
|
+
Then /^the tags collected from directory are as follows:$/ do |expected_tags|
|
26
|
+
expected_tags = expected_tags.raw.flatten
|
24
27
|
|
25
|
-
|
28
|
+
CucumberAnalytics::World.tags_in(@parsed_directories.last).sort.should == expected_tags.sort
|
29
|
+
CucumberAnalytics::World.tag_elements_in(@parsed_directories.last).collect { |tag| tag.name }.sort.should == expected_tags.sort
|
26
30
|
end
|
27
31
|
|
28
32
|
Then /^the(?: "([^"]*)")? steps collected from feature "([^"]*)" background are as follows:$/ do |defined, file, steps|
|
@@ -10,6 +10,16 @@ module CucumberAnalytics
|
|
10
10
|
parsed_background = process_source(source)
|
11
11
|
|
12
12
|
super(parsed_background)
|
13
|
+
|
14
|
+
build_background(parsed_background) if parsed_background
|
15
|
+
end
|
16
|
+
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
|
21
|
+
def build_background(parsed_background)
|
22
|
+
# Just a stub in case something specific needs to be done
|
13
23
|
end
|
14
24
|
|
15
25
|
end
|
@@ -4,6 +4,9 @@ module CucumberAnalytics
|
|
4
4
|
|
5
5
|
class DocString
|
6
6
|
|
7
|
+
include Raw
|
8
|
+
|
9
|
+
|
7
10
|
# The parent object that contains *self*
|
8
11
|
attr_accessor :parent_element
|
9
12
|
|
@@ -47,7 +50,16 @@ module CucumberAnalytics
|
|
47
50
|
end
|
48
51
|
|
49
52
|
def build_doc_string(doc_string)
|
53
|
+
populate_content_type(doc_string)
|
54
|
+
populate_contents(doc_string)
|
55
|
+
populate_raw_element(doc_string)
|
56
|
+
end
|
57
|
+
|
58
|
+
def populate_content_type(doc_string)
|
50
59
|
@content_type = doc_string['content_type'] == "" ? nil : doc_string['content_type']
|
60
|
+
end
|
61
|
+
|
62
|
+
def populate_contents(doc_string)
|
51
63
|
@contents = doc_string['value'].split($/)
|
52
64
|
end
|
53
65
|
|
@@ -23,6 +23,7 @@ module CucumberAnalytics
|
|
23
23
|
super(parsed_feature)
|
24
24
|
|
25
25
|
@tags = []
|
26
|
+
@tag_elements = []
|
26
27
|
@tests = []
|
27
28
|
|
28
29
|
build_feature(parsed_feature) if parsed_feature
|
@@ -70,7 +71,7 @@ module CucumberAnalytics
|
|
70
71
|
# Returns the immediate child elements of the feature (i.e. its Background,
|
71
72
|
# Scenario, and Outline objects.
|
72
73
|
def contains
|
73
|
-
[@background] + @tests
|
74
|
+
@background ? [@background] + @tests : @tests
|
74
75
|
end
|
75
76
|
|
76
77
|
|
@@ -5,6 +5,7 @@ module CucumberAnalytics
|
|
5
5
|
class FeatureElement
|
6
6
|
|
7
7
|
include Sourceable
|
8
|
+
include Raw
|
8
9
|
|
9
10
|
|
10
11
|
# The name of the FeatureElement
|
@@ -34,6 +35,7 @@ module CucumberAnalytics
|
|
34
35
|
populate_feature_element_name(parsed_element)
|
35
36
|
populate_feature_element_description(parsed_element)
|
36
37
|
populate_element_source_line(parsed_element)
|
38
|
+
populate_raw_element(parsed_element)
|
37
39
|
end
|
38
40
|
|
39
41
|
def populate_feature_element_name(parsed_element)
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module CucumberAnalytics
|
2
|
+
|
3
|
+
# A mix-in module containing methods used by elements that store their
|
4
|
+
# underlying implementation
|
5
|
+
|
6
|
+
module Raw
|
7
|
+
|
8
|
+
# The raw representation of the element (i.e. the output of the gherkin gem)
|
9
|
+
attr_accessor :raw_element
|
10
|
+
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
|
15
|
+
def populate_raw_element(parsed_element)
|
16
|
+
@raw_element = parsed_element
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|