cuke_linter 0.9.0 → 0.10.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 +4 -4
- data/CHANGELOG.md +17 -1
- data/CONTRIBUTING.md +26 -0
- data/README.md +2 -15
- data/lib/cuke_linter.rb +36 -18
- data/lib/cuke_linter/linters/example_without_name_linter.rb +1 -1
- data/lib/cuke_linter/linters/feature_with_too_many_different_tags_linter.rb +38 -0
- data/lib/cuke_linter/linters/test_should_use_background_linter.rb +28 -0
- data/lib/cuke_linter/linters/test_with_action_step_as_final_step_linter.rb +23 -0
- data/lib/cuke_linter/linters/test_with_setup_step_after_action_step_linter.rb +31 -0
- data/lib/cuke_linter/linters/test_with_setup_step_after_verification_step_linter.rb +31 -0
- data/lib/cuke_linter/linters/test_with_setup_step_as_final_step_linter.rb +23 -0
- data/lib/cuke_linter/version.rb +1 -1
- data/testing/cucumber/features/default_linters.feature +20 -14
- data/testing/cucumber/features/linters/example_without_name.feature +8 -6
- data/testing/cucumber/features/linters/feature_with_too_many_different_tags.feature +56 -0
- data/testing/cucumber/features/linters/step_with_end_period.feature +1 -1
- data/testing/cucumber/features/linters/test_should_use_background.feature +29 -0
- data/testing/cucumber/features/linters/test_with_action_as_final_step.feature +28 -0
- data/testing/cucumber/features/linters/test_with_setup_step_after_action_step.feature +30 -0
- data/testing/cucumber/features/linters/test_with_setup_step_after_verification_step.feature +30 -0
- data/testing/cucumber/features/linters/test_with_setup_step_as_final_step.feature +28 -0
- data/testing/cucumber/features/linters/test_with_too_many_steps.feature +5 -0
- data/testing/cucumber/step_definitions/setup_steps.rb +28 -0
- data/testing/model_factory.rb +1 -1
- data/testing/rspec/spec/integration/cuke_linter_integration_spec.rb +12 -0
- data/testing/rspec/spec/integration/linters/feature_with_too_many_different_tags_linter_integration_spec.rb +8 -0
- data/testing/rspec/spec/integration/linters/test_should_use_background_linter_integration_spec.rb +8 -0
- data/testing/rspec/spec/integration/linters/test_with_action_step_as_final_step_linter_integration_spec.rb +8 -0
- data/testing/rspec/spec/integration/linters/test_with_setup_step_after_action_step_linter_integration_spec.rb +8 -0
- data/testing/rspec/spec/integration/linters/test_with_setup_step_after_verification_step_linter_integration_spec.rb +8 -0
- data/testing/rspec/spec/integration/linters/test_with_setup_step_as_final_step_linter_integration_spec.rb +8 -0
- data/testing/rspec/spec/unit/linters/background_does_more_than_setup_linter_unit_spec.rb +20 -57
- data/testing/rspec/spec/unit/linters/element_with_too_many_tags_linter_unit_spec.rb +18 -52
- data/testing/rspec/spec/unit/linters/example_without_name_linter_unit_spec.rb +41 -43
- data/testing/rspec/spec/unit/linters/feature_with_too_many_different_tags_linter_unit_spec.rb +293 -0
- data/testing/rspec/spec/unit/linters/feature_without_description_linter_unit_spec.rb +25 -42
- data/testing/rspec/spec/unit/linters/feature_without_name_linter_unit_spec.rb +10 -38
- data/testing/rspec/spec/unit/linters/feature_without_scenarios_linter_unit_spec.rb +32 -52
- data/testing/rspec/spec/unit/linters/linter_unit_spec.rb +27 -10
- data/testing/rspec/spec/unit/linters/linter_unit_specs.rb +26 -12
- data/testing/rspec/spec/unit/linters/outline_with_single_example_row_linter_unit_spec.rb +19 -66
- data/testing/rspec/spec/unit/linters/single_test_background_linter_unit_spec.rb +12 -39
- data/testing/rspec/spec/unit/linters/step_with_end_period_linter_unit_spec.rb +9 -28
- data/testing/rspec/spec/unit/linters/step_with_too_many_characters_linter_unit_spec.rb +19 -45
- data/testing/rspec/spec/unit/linters/test_should_use_background_linter_unit_spec.rb +226 -0
- data/testing/rspec/spec/unit/linters/test_with_action_step_as_final_step_linter_unit_spec.rb +98 -0
- data/testing/rspec/spec/unit/linters/test_with_no_action_step_linter_unit_spec.rb +10 -51
- data/testing/rspec/spec/unit/linters/test_with_no_name_linter_unit_spec.rb +11 -38
- data/testing/rspec/spec/unit/linters/test_with_no_verification_step_linter_unit_spec.rb +16 -54
- data/testing/rspec/spec/unit/linters/test_with_setup_step_after_action_step_linter_unit_spec.rb +124 -0
- data/testing/rspec/spec/unit/linters/test_with_setup_step_after_verification_step_linter_unit_spec.rb +125 -0
- data/testing/rspec/spec/unit/linters/test_with_setup_step_as_final_step_linter_unit_spec.rb +98 -0
- data/testing/rspec/spec/unit/linters/test_with_too_many_steps_linter_unit_spec.rb +9 -49
- metadata +27 -2
@@ -3,14 +3,7 @@ require_relative '../../../../../environments/rspec_env'
|
|
3
3
|
|
4
4
|
RSpec.describe CukeLinter::TestWithNoNameLinter do
|
5
5
|
|
6
|
-
let(:
|
7
|
-
CukeLinter::ModelFactory.generate_scenario_model(source_text: 'Scenario: some name')
|
8
|
-
end
|
9
|
-
|
10
|
-
let(:bad_data) do
|
11
|
-
CukeLinter::ModelFactory.generate_scenario_model(source_text: 'Scenario:')
|
12
|
-
end
|
13
|
-
|
6
|
+
let(:model_file_path) { 'some_file_path' }
|
14
7
|
|
15
8
|
it_should_behave_like 'a linter at the unit level'
|
16
9
|
|
@@ -28,55 +21,41 @@ RSpec.describe CukeLinter::TestWithNoNameLinter do
|
|
28
21
|
context 'because its name is empty' do
|
29
22
|
|
30
23
|
let(:test_model) do
|
31
|
-
model = CukeLinter::ModelFactory.send("generate_#{model_type}_model", parent_file_path:
|
24
|
+
model = CukeLinter::ModelFactory.send("generate_#{model_type}_model", parent_file_path: model_file_path)
|
32
25
|
model.name = ''
|
33
26
|
|
34
27
|
model
|
35
28
|
end
|
36
29
|
|
30
|
+
it_should_behave_like 'a linter linting a bad model'
|
31
|
+
|
32
|
+
|
37
33
|
it 'records a problem' do
|
38
34
|
result = subject.lint(test_model)
|
39
35
|
|
40
36
|
expect(result[:problem]).to eq('Test does not have a name.')
|
41
37
|
end
|
42
38
|
|
43
|
-
it 'records the location of the problem' do
|
44
|
-
test_model.source_line = 1
|
45
|
-
result = subject.lint(test_model)
|
46
|
-
expect(result[:location]).to eq('path_to_file:1')
|
47
|
-
|
48
|
-
test_model.source_line = 3
|
49
|
-
result = subject.lint(test_model)
|
50
|
-
expect(result[:location]).to eq('path_to_file:3')
|
51
|
-
end
|
52
|
-
|
53
39
|
end
|
54
40
|
|
55
41
|
context 'because its name is nil' do
|
56
42
|
|
57
43
|
let(:test_model) do
|
58
|
-
model = CukeLinter::ModelFactory.send("generate_#{model_type}_model", parent_file_path:
|
44
|
+
model = CukeLinter::ModelFactory.send("generate_#{model_type}_model", parent_file_path: model_file_path)
|
59
45
|
model.name = nil
|
60
46
|
|
61
47
|
model
|
62
48
|
end
|
63
49
|
|
50
|
+
it_should_behave_like 'a linter linting a bad model'
|
51
|
+
|
52
|
+
|
64
53
|
it 'records a problem' do
|
65
54
|
result = subject.lint(test_model)
|
66
55
|
|
67
56
|
expect(result[:problem]).to eq('Test does not have a name.')
|
68
57
|
end
|
69
58
|
|
70
|
-
it 'records the location of the problem' do
|
71
|
-
test_model.source_line = 1
|
72
|
-
result = subject.lint(test_model)
|
73
|
-
expect(result[:location]).to eq('path_to_file:1')
|
74
|
-
|
75
|
-
test_model.source_line = 3
|
76
|
-
result = subject.lint(test_model)
|
77
|
-
expect(result[:location]).to eq('path_to_file:3')
|
78
|
-
end
|
79
|
-
|
80
59
|
end
|
81
60
|
|
82
61
|
end
|
@@ -90,9 +69,7 @@ RSpec.describe CukeLinter::TestWithNoNameLinter do
|
|
90
69
|
model
|
91
70
|
end
|
92
71
|
|
93
|
-
|
94
|
-
expect(subject.lint(test_model)).to eq(nil)
|
95
|
-
end
|
72
|
+
it_should_behave_like 'a linter linting a good model'
|
96
73
|
|
97
74
|
end
|
98
75
|
|
@@ -102,11 +79,7 @@ RSpec.describe CukeLinter::TestWithNoNameLinter do
|
|
102
79
|
|
103
80
|
let(:test_model) { CukeModeler::Model.new }
|
104
81
|
|
105
|
-
|
106
|
-
result = subject.lint(test_model)
|
107
|
-
|
108
|
-
expect(result).to eq(nil)
|
109
|
-
end
|
82
|
+
it_should_behave_like 'a linter linting a good model'
|
110
83
|
|
111
84
|
end
|
112
85
|
|
@@ -3,16 +3,7 @@ require_relative '../../../../../environments/rspec_env'
|
|
3
3
|
|
4
4
|
RSpec.describe CukeLinter::TestWithNoVerificationStepLinter do
|
5
5
|
|
6
|
-
let(:
|
7
|
-
CukeLinter::ModelFactory.generate_scenario_model(source_text: 'Scenario:
|
8
|
-
Then a verification step')
|
9
|
-
end
|
10
|
-
|
11
|
-
let(:bad_data) do
|
12
|
-
CukeLinter::ModelFactory.generate_scenario_model(source_text: 'Scenario:
|
13
|
-
* no verification step')
|
14
|
-
end
|
15
|
-
|
6
|
+
let(:model_file_path) { 'some_file_path' }
|
16
7
|
|
17
8
|
it_should_behave_like 'a linter at the unit level'
|
18
9
|
|
@@ -32,55 +23,41 @@ RSpec.describe CukeLinter::TestWithNoVerificationStepLinter do
|
|
32
23
|
context 'because its steps are empty' do
|
33
24
|
|
34
25
|
let(:test_model) do
|
35
|
-
model = CukeLinter::ModelFactory.send("generate_#{model_type}_model", parent_file_path:
|
26
|
+
model = CukeLinter::ModelFactory.send("generate_#{model_type}_model", parent_file_path: model_file_path)
|
36
27
|
model.steps = []
|
37
28
|
|
38
29
|
model
|
39
30
|
end
|
40
31
|
|
32
|
+
it_should_behave_like 'a linter linting a bad model'
|
33
|
+
|
34
|
+
|
41
35
|
it 'records a problem' do
|
42
36
|
result = subject.lint(test_model)
|
43
37
|
|
44
38
|
expect(result[:problem]).to eq("Test does not have a 'Then' step.")
|
45
39
|
end
|
46
40
|
|
47
|
-
it 'records the location of the problem' do
|
48
|
-
test_model.source_line = 1
|
49
|
-
result = subject.lint(test_model)
|
50
|
-
expect(result[:location]).to eq('path_to_file:1')
|
51
|
-
|
52
|
-
test_model.source_line = 3
|
53
|
-
result = subject.lint(test_model)
|
54
|
-
expect(result[:location]).to eq('path_to_file:3')
|
55
|
-
end
|
56
|
-
|
57
41
|
end
|
58
42
|
|
59
43
|
context 'because its steps are nil' do
|
60
44
|
|
61
45
|
let(:test_model) do
|
62
|
-
model = CukeLinter::ModelFactory.send("generate_#{model_type}_model", parent_file_path:
|
46
|
+
model = CukeLinter::ModelFactory.send("generate_#{model_type}_model", parent_file_path: model_file_path)
|
63
47
|
model.steps = nil
|
64
48
|
|
65
49
|
model
|
66
50
|
end
|
67
51
|
|
52
|
+
it_should_behave_like 'a linter linting a bad model'
|
53
|
+
|
54
|
+
|
68
55
|
it 'records a problem' do
|
69
56
|
result = subject.lint(test_model)
|
70
57
|
|
71
58
|
expect(result[:problem]).to eq("Test does not have a 'Then' step.")
|
72
59
|
end
|
73
60
|
|
74
|
-
it 'records the location of the problem' do
|
75
|
-
test_model.source_line = 1
|
76
|
-
result = subject.lint(test_model)
|
77
|
-
expect(result[:location]).to eq('path_to_file:1')
|
78
|
-
|
79
|
-
test_model.source_line = 3
|
80
|
-
result = subject.lint(test_model)
|
81
|
-
expect(result[:location]).to eq('path_to_file:3')
|
82
|
-
end
|
83
|
-
|
84
61
|
end
|
85
62
|
|
86
63
|
end
|
@@ -88,28 +65,21 @@ RSpec.describe CukeLinter::TestWithNoVerificationStepLinter do
|
|
88
65
|
context 'because none of its steps is a verification step' do
|
89
66
|
|
90
67
|
let(:test_model) do
|
91
|
-
model = CukeLinter::ModelFactory.send("generate_#{model_type}_model", parent_file_path:
|
68
|
+
model = CukeLinter::ModelFactory.send("generate_#{model_type}_model", parent_file_path: model_file_path)
|
92
69
|
model.steps = [CukeModeler::Step.new('* not a verification step')]
|
93
70
|
|
94
71
|
model
|
95
72
|
end
|
96
73
|
|
74
|
+
it_should_behave_like 'a linter linting a bad model'
|
75
|
+
|
76
|
+
|
97
77
|
it 'records a problem' do
|
98
78
|
result = subject.lint(test_model)
|
99
79
|
|
100
80
|
expect(result[:problem]).to eq("Test does not have a 'Then' step.")
|
101
81
|
end
|
102
82
|
|
103
|
-
it 'records the location of the problem' do
|
104
|
-
test_model.source_line = 1
|
105
|
-
result = subject.lint(test_model)
|
106
|
-
expect(result[:location]).to eq('path_to_file:1')
|
107
|
-
|
108
|
-
test_model.source_line = 3
|
109
|
-
result = subject.lint(test_model)
|
110
|
-
expect(result[:location]).to eq('path_to_file:3')
|
111
|
-
end
|
112
|
-
|
113
83
|
end
|
114
84
|
|
115
85
|
end
|
@@ -128,9 +98,7 @@ RSpec.describe CukeLinter::TestWithNoVerificationStepLinter do
|
|
128
98
|
model
|
129
99
|
end
|
130
100
|
|
131
|
-
|
132
|
-
expect(subject.lint(test_model)).to eq(nil)
|
133
|
-
end
|
101
|
+
it_should_behave_like 'a linter linting a good model'
|
134
102
|
|
135
103
|
end
|
136
104
|
|
@@ -143,9 +111,7 @@ RSpec.describe CukeLinter::TestWithNoVerificationStepLinter do
|
|
143
111
|
model
|
144
112
|
end
|
145
113
|
|
146
|
-
|
147
|
-
expect(subject.lint(test_model)).to eq(nil)
|
148
|
-
end
|
114
|
+
it_should_behave_like 'a linter linting a good model'
|
149
115
|
|
150
116
|
end
|
151
117
|
|
@@ -206,11 +172,7 @@ RSpec.describe CukeLinter::TestWithNoVerificationStepLinter do
|
|
206
172
|
|
207
173
|
let(:test_model) { CukeModeler::Model.new }
|
208
174
|
|
209
|
-
|
210
|
-
result = subject.lint(test_model)
|
211
|
-
|
212
|
-
expect(result).to eq(nil)
|
213
|
-
end
|
175
|
+
it_should_behave_like 'a linter linting a good model'
|
214
176
|
|
215
177
|
end
|
216
178
|
end
|
data/testing/rspec/spec/unit/linters/test_with_setup_step_after_action_step_linter_unit_spec.rb
ADDED
@@ -0,0 +1,124 @@
|
|
1
|
+
require_relative '../../../../../environments/rspec_env'
|
2
|
+
|
3
|
+
|
4
|
+
RSpec.describe CukeLinter::TestWithSetupStepAfterActionStepLinter do
|
5
|
+
|
6
|
+
let(:model_file_path) { 'some_file_path' }
|
7
|
+
|
8
|
+
it_should_behave_like 'a linter at the unit level'
|
9
|
+
|
10
|
+
|
11
|
+
it 'has a name' do
|
12
|
+
expect(subject.name).to eq('TestWithSetupStepAfterActionStepLinter')
|
13
|
+
end
|
14
|
+
|
15
|
+
describe 'linting' do
|
16
|
+
|
17
|
+
['scenario', 'outline'].each do |model_type|
|
18
|
+
|
19
|
+
context "with a #{model_type} that has a setup step after an action step" do
|
20
|
+
|
21
|
+
let(:test_model) do
|
22
|
+
model = CukeLinter::ModelFactory.send("generate_#{model_type}_model",
|
23
|
+
parent_file_path: model_file_path)
|
24
|
+
model.steps = [CukeModeler::Step.new('When a step'),
|
25
|
+
CukeModeler::Step.new('Given a step')]
|
26
|
+
|
27
|
+
model
|
28
|
+
end
|
29
|
+
|
30
|
+
it_should_behave_like 'a linter linting a bad model'
|
31
|
+
|
32
|
+
|
33
|
+
it 'records a problem' do
|
34
|
+
result = subject.lint(test_model)
|
35
|
+
|
36
|
+
expect(result[:problem]).to eq("Test has 'Given' step after 'When' step.")
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
context "with a #{model_type} that does not have a setup step after an action step" do
|
42
|
+
|
43
|
+
context 'because it has no steps' do
|
44
|
+
|
45
|
+
context 'because its steps are empty' do
|
46
|
+
|
47
|
+
let(:test_model) do
|
48
|
+
model = CukeLinter::ModelFactory.send("generate_#{model_type}_model")
|
49
|
+
model.steps = []
|
50
|
+
|
51
|
+
model
|
52
|
+
end
|
53
|
+
|
54
|
+
it_should_behave_like 'a linter linting a good model'
|
55
|
+
|
56
|
+
end
|
57
|
+
|
58
|
+
context 'because its steps are nil' do
|
59
|
+
|
60
|
+
let(:test_model) do
|
61
|
+
model = CukeLinter::ModelFactory.send("generate_#{model_type}_model")
|
62
|
+
model.steps = nil
|
63
|
+
|
64
|
+
model
|
65
|
+
end
|
66
|
+
|
67
|
+
it_should_behave_like 'a linter linting a good model'
|
68
|
+
|
69
|
+
end
|
70
|
+
|
71
|
+
end
|
72
|
+
|
73
|
+
context 'because its setup steps come before its action steps' do
|
74
|
+
|
75
|
+
let(:test_model) do
|
76
|
+
model = CukeLinter::ModelFactory.send("generate_#{model_type}_model")
|
77
|
+
model.steps = [CukeModeler::Step.new('* a step')]
|
78
|
+
|
79
|
+
model
|
80
|
+
end
|
81
|
+
|
82
|
+
it_should_behave_like 'a linter linting a good model'
|
83
|
+
|
84
|
+
end
|
85
|
+
|
86
|
+
end
|
87
|
+
|
88
|
+
context "with a #{model_type} that has an associated background" do
|
89
|
+
|
90
|
+
let(:test_model) do
|
91
|
+
feature_model = CukeLinter::ModelFactory.generate_feature_model(source_text: 'Feature:
|
92
|
+
Background:
|
93
|
+
Given a step
|
94
|
+
When a step
|
95
|
+
Given a step
|
96
|
+
When a step')
|
97
|
+
|
98
|
+
model = CukeLinter::ModelFactory.send("generate_#{model_type}_model")
|
99
|
+
model.steps = [CukeModeler::Step.new('Given a step')]
|
100
|
+
|
101
|
+
model.parent_model = feature_model
|
102
|
+
feature_model.tests << model
|
103
|
+
|
104
|
+
model
|
105
|
+
end
|
106
|
+
|
107
|
+
it 'does not consider those steps when linting' do
|
108
|
+
expect(subject.lint(test_model)).to eq(nil)
|
109
|
+
end
|
110
|
+
|
111
|
+
end
|
112
|
+
|
113
|
+
end
|
114
|
+
|
115
|
+
|
116
|
+
context 'a non-test model' do
|
117
|
+
|
118
|
+
let(:test_model) { CukeModeler::Model.new }
|
119
|
+
|
120
|
+
it_should_behave_like 'a linter linting a good model'
|
121
|
+
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
@@ -0,0 +1,125 @@
|
|
1
|
+
require_relative '../../../../../environments/rspec_env'
|
2
|
+
|
3
|
+
|
4
|
+
RSpec.describe CukeLinter::TestWithSetupStepAfterVerificationStepLinter do
|
5
|
+
|
6
|
+
let(:model_file_path) { 'some_file_path' }
|
7
|
+
|
8
|
+
it_should_behave_like 'a linter at the unit level'
|
9
|
+
|
10
|
+
|
11
|
+
it 'has a name' do
|
12
|
+
expect(subject.name).to eq('TestWithSetupStepAfterVerificationStepLinter')
|
13
|
+
end
|
14
|
+
|
15
|
+
describe 'linting' do
|
16
|
+
|
17
|
+
['scenario', 'outline'].each do |model_type|
|
18
|
+
|
19
|
+
context "with a #{model_type} that has a setup step after a verification step" do
|
20
|
+
|
21
|
+
let(:test_model) do
|
22
|
+
model = CukeLinter::ModelFactory.send("generate_#{model_type}_model",
|
23
|
+
parent_file_path: model_file_path)
|
24
|
+
model.steps = [CukeModeler::Step.new('Then a step'),
|
25
|
+
CukeModeler::Step.new('Given a step')]
|
26
|
+
|
27
|
+
model
|
28
|
+
end
|
29
|
+
|
30
|
+
it_should_behave_like 'a linter linting a bad model'
|
31
|
+
|
32
|
+
|
33
|
+
it 'records a problem' do
|
34
|
+
result = subject.lint(test_model)
|
35
|
+
|
36
|
+
expect(result[:problem]).to eq("Test has 'Given' step after 'Then' step.")
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
context "with a #{model_type} that does not have a setup step after a verification step" do
|
42
|
+
|
43
|
+
context 'because it has no steps' do
|
44
|
+
|
45
|
+
context 'because its steps are empty' do
|
46
|
+
|
47
|
+
let(:test_model) do
|
48
|
+
model = CukeLinter::ModelFactory.send("generate_#{model_type}_model")
|
49
|
+
model.steps = []
|
50
|
+
|
51
|
+
model
|
52
|
+
end
|
53
|
+
|
54
|
+
it_should_behave_like 'a linter linting a good model'
|
55
|
+
|
56
|
+
end
|
57
|
+
|
58
|
+
context 'because its steps are nil' do
|
59
|
+
|
60
|
+
let(:test_model) do
|
61
|
+
model = CukeLinter::ModelFactory.send("generate_#{model_type}_model")
|
62
|
+
model.steps = nil
|
63
|
+
|
64
|
+
model
|
65
|
+
end
|
66
|
+
|
67
|
+
it_should_behave_like 'a linter linting a good model'
|
68
|
+
|
69
|
+
end
|
70
|
+
|
71
|
+
end
|
72
|
+
|
73
|
+
context 'because its setup steps come before its verification steps' do
|
74
|
+
|
75
|
+
let(:test_model) do
|
76
|
+
model = CukeLinter::ModelFactory.send("generate_#{model_type}_model")
|
77
|
+
model.steps = [CukeModeler::Step.new('Given a step'),
|
78
|
+
CukeModeler::Step.new('Then a step'),]
|
79
|
+
|
80
|
+
model
|
81
|
+
end
|
82
|
+
|
83
|
+
it_should_behave_like 'a linter linting a good model'
|
84
|
+
|
85
|
+
end
|
86
|
+
|
87
|
+
end
|
88
|
+
|
89
|
+
context "with a #{model_type} that has an associated background" do
|
90
|
+
|
91
|
+
let(:test_model) do
|
92
|
+
feature_model = CukeLinter::ModelFactory.generate_feature_model(source_text: 'Feature:
|
93
|
+
Background:
|
94
|
+
Given a step
|
95
|
+
Then a step
|
96
|
+
Given a step
|
97
|
+
Then a step')
|
98
|
+
|
99
|
+
model = CukeLinter::ModelFactory.send("generate_#{model_type}_model")
|
100
|
+
model.steps = [CukeModeler::Step.new('Given a step')]
|
101
|
+
|
102
|
+
model.parent_model = feature_model
|
103
|
+
feature_model.tests << model
|
104
|
+
|
105
|
+
model
|
106
|
+
end
|
107
|
+
|
108
|
+
it 'does not consider those steps when linting' do
|
109
|
+
expect(subject.lint(test_model)).to eq(nil)
|
110
|
+
end
|
111
|
+
|
112
|
+
end
|
113
|
+
|
114
|
+
end
|
115
|
+
|
116
|
+
|
117
|
+
context 'a non-test model' do
|
118
|
+
|
119
|
+
let(:test_model) { CukeModeler::Model.new }
|
120
|
+
|
121
|
+
it_should_behave_like 'a linter linting a good model'
|
122
|
+
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|