cuke_modeler 2.1.0 → 3.4.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.
Files changed (146) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +53 -1
  3. data/README.md +14 -16
  4. data/cuke_modeler.gemspec +33 -21
  5. data/lib/cuke_modeler.rb +2 -1
  6. data/lib/cuke_modeler/adapters/gherkin_10_adapter.rb +13 -0
  7. data/lib/cuke_modeler/adapters/gherkin_11_adapter.rb +13 -0
  8. data/lib/cuke_modeler/adapters/gherkin_12_adapter.rb +13 -0
  9. data/lib/cuke_modeler/adapters/gherkin_13_adapter.rb +13 -0
  10. data/lib/cuke_modeler/adapters/gherkin_14_adapter.rb +13 -0
  11. data/lib/cuke_modeler/adapters/gherkin_15_adapter.rb +13 -0
  12. data/lib/cuke_modeler/adapters/gherkin_9_adapter.rb +356 -4
  13. data/lib/cuke_modeler/containing.rb +41 -89
  14. data/lib/cuke_modeler/described.rb +40 -1
  15. data/lib/cuke_modeler/models/background.rb +12 -12
  16. data/lib/cuke_modeler/models/cell.rb +14 -8
  17. data/lib/cuke_modeler/models/comment.rb +6 -6
  18. data/lib/cuke_modeler/models/directory.rb +14 -18
  19. data/lib/cuke_modeler/models/doc_string.rb +11 -8
  20. data/lib/cuke_modeler/models/example.rb +64 -46
  21. data/lib/cuke_modeler/models/feature.rb +38 -20
  22. data/lib/cuke_modeler/models/feature_file.rb +6 -8
  23. data/lib/cuke_modeler/models/model.rb +2 -1
  24. data/lib/cuke_modeler/models/outline.rb +20 -15
  25. data/lib/cuke_modeler/models/row.rb +11 -8
  26. data/lib/cuke_modeler/models/rule.rb +101 -0
  27. data/lib/cuke_modeler/models/scenario.rb +18 -13
  28. data/lib/cuke_modeler/models/step.rb +41 -19
  29. data/lib/cuke_modeler/models/table.rb +10 -7
  30. data/lib/cuke_modeler/models/tag.rb +10 -6
  31. data/lib/cuke_modeler/named.rb +5 -1
  32. data/lib/cuke_modeler/nested.rb +22 -18
  33. data/lib/cuke_modeler/parsed.rb +8 -0
  34. data/lib/cuke_modeler/parsing.rb +55 -74
  35. data/lib/cuke_modeler/sourceable.rb +8 -0
  36. data/lib/cuke_modeler/stepped.rb +8 -0
  37. data/lib/cuke_modeler/taggable.rb +9 -1
  38. data/lib/cuke_modeler/version.rb +1 -1
  39. data/testing/cucumber/features/modeling/feature_modeling.feature +28 -7
  40. data/testing/cucumber/features/modeling/feature_output.feature +45 -23
  41. data/testing/cucumber/features/modeling/rule_modeling.feature +108 -0
  42. data/testing/cucumber/features/modeling/rule_output.feature +111 -0
  43. metadata +68 -161
  44. data/.gitignore +0 -18
  45. data/.simplecov +0 -7
  46. data/.travis.yml +0 -81
  47. data/Gemfile +0 -44
  48. data/Rakefile +0 -73
  49. data/appveyor.yml +0 -88
  50. data/lib/cuke_modeler/adapters/gherkin_2_adapter.rb +0 -274
  51. data/lib/cuke_modeler/adapters/gherkin_3_adapter.rb +0 -297
  52. data/lib/cuke_modeler/adapters/gherkin_4_adapter.rb +0 -309
  53. data/lib/cuke_modeler/adapters/gherkin_5_adapter.rb +0 -12
  54. data/lib/cuke_modeler/adapters/gherkin_6_adapter.rb +0 -310
  55. data/lib/cuke_modeler/adapters/gherkin_7_adapter.rb +0 -307
  56. data/lib/cuke_modeler/adapters/gherkin_8_adapter.rb +0 -12
  57. data/testing/cucumber/step_definitions/action_steps.rb +0 -13
  58. data/testing/cucumber/step_definitions/background_steps.rb +0 -1
  59. data/testing/cucumber/step_definitions/directory_steps.rb +0 -6
  60. data/testing/cucumber/step_definitions/doc_string_steps.rb +0 -1
  61. data/testing/cucumber/step_definitions/feature_file_steps.rb +0 -16
  62. data/testing/cucumber/step_definitions/feature_steps.rb +0 -7
  63. data/testing/cucumber/step_definitions/modeling_steps.rb +0 -49
  64. data/testing/cucumber/step_definitions/setup_steps.rb +0 -32
  65. data/testing/cucumber/step_definitions/step_steps.rb +0 -3
  66. data/testing/cucumber/step_definitions/table_steps.rb +0 -1
  67. data/testing/cucumber/step_definitions/tag_steps.rb +0 -3
  68. data/testing/cucumber/step_definitions/verification_steps.rb +0 -181
  69. data/testing/cucumber/support/env.rb +0 -30
  70. data/testing/dialect_helper.rb +0 -48
  71. data/testing/file_helper.rb +0 -47
  72. data/testing/gemfiles/gherkin2.gemfile +0 -33
  73. data/testing/gemfiles/gherkin3.gemfile +0 -26
  74. data/testing/gemfiles/gherkin4.gemfile +0 -27
  75. data/testing/gemfiles/gherkin5.gemfile +0 -27
  76. data/testing/gemfiles/gherkin6.gemfile +0 -10
  77. data/testing/gemfiles/gherkin7.gemfile +0 -9
  78. data/testing/gemfiles/gherkin8.gemfile +0 -9
  79. data/testing/gemfiles/gherkin9.gemfile +0 -9
  80. data/testing/helper_methods.rb +0 -23
  81. data/testing/rspec/spec/integration/adapters/gherkin_2_adapter_spec.rb +0 -166
  82. data/testing/rspec/spec/integration/adapters/gherkin_3_adapter_spec.rb +0 -166
  83. data/testing/rspec/spec/integration/adapters/gherkin_4_adapter_spec.rb +0 -165
  84. data/testing/rspec/spec/integration/adapters/gherkin_5_adapter_spec.rb +0 -165
  85. data/testing/rspec/spec/integration/adapters/gherkin_6_adapter_spec.rb +0 -159
  86. data/testing/rspec/spec/integration/adapters/gherkin_7_adapter_spec.rb +0 -162
  87. data/testing/rspec/spec/integration/adapters/gherkin_8_adapter_spec.rb +0 -162
  88. data/testing/rspec/spec/integration/adapters/gherkin_9_adapter_spec.rb +0 -162
  89. data/testing/rspec/spec/integration/models/background_integration_spec.rb +0 -438
  90. data/testing/rspec/spec/integration/models/cell_integration_spec.rb +0 -338
  91. data/testing/rspec/spec/integration/models/comment_integration_spec.rb +0 -180
  92. data/testing/rspec/spec/integration/models/directory_integration_spec.rb +0 -218
  93. data/testing/rspec/spec/integration/models/doc_string_integration_spec.rb +0 -398
  94. data/testing/rspec/spec/integration/models/example_integration_spec.rb +0 -753
  95. data/testing/rspec/spec/integration/models/feature_file_integration_spec.rb +0 -276
  96. data/testing/rspec/spec/integration/models/feature_integration_spec.rb +0 -655
  97. data/testing/rspec/spec/integration/models/model_integration_spec.rb +0 -15
  98. data/testing/rspec/spec/integration/models/outline_integration_spec.rb +0 -619
  99. data/testing/rspec/spec/integration/models/row_integration_spec.rb +0 -303
  100. data/testing/rspec/spec/integration/models/scenario_integration_spec.rb +0 -475
  101. data/testing/rspec/spec/integration/models/step_integration_spec.rb +0 -573
  102. data/testing/rspec/spec/integration/models/table_integration_spec.rb +0 -333
  103. data/testing/rspec/spec/integration/models/tag_integration_spec.rb +0 -271
  104. data/testing/rspec/spec/integration/nested_integration_spec.rb +0 -91
  105. data/testing/rspec/spec/integration/parsing_integration_spec.rb +0 -143
  106. data/testing/rspec/spec/integration/shared/models_integration_specs.rb +0 -18
  107. data/testing/rspec/spec/spec_helper.rb +0 -129
  108. data/testing/rspec/spec/unit/cuke_modeler_unit_spec.rb +0 -25
  109. data/testing/rspec/spec/unit/described_unit_spec.rb +0 -23
  110. data/testing/rspec/spec/unit/models/background_unit_spec.rb +0 -83
  111. data/testing/rspec/spec/unit/models/cell_unit_spec.rb +0 -68
  112. data/testing/rspec/spec/unit/models/comment_unit_spec.rb +0 -68
  113. data/testing/rspec/spec/unit/models/directory_unit_spec.rb +0 -127
  114. data/testing/rspec/spec/unit/models/doc_string_unit_spec.rb +0 -100
  115. data/testing/rspec/spec/unit/models/example_unit_spec.rb +0 -133
  116. data/testing/rspec/spec/unit/models/feature_file_unit_spec.rb +0 -125
  117. data/testing/rspec/spec/unit/models/feature_unit_spec.rb +0 -157
  118. data/testing/rspec/spec/unit/models/model_unit_spec.rb +0 -15
  119. data/testing/rspec/spec/unit/models/outline_unit_spec.rb +0 -117
  120. data/testing/rspec/spec/unit/models/row_unit_spec.rb +0 -68
  121. data/testing/rspec/spec/unit/models/scenario_unit_spec.rb +0 -86
  122. data/testing/rspec/spec/unit/models/step_unit_spec.rb +0 -109
  123. data/testing/rspec/spec/unit/models/table_unit_spec.rb +0 -77
  124. data/testing/rspec/spec/unit/models/tag_unit_spec.rb +0 -68
  125. data/testing/rspec/spec/unit/named_unit_spec.rb +0 -23
  126. data/testing/rspec/spec/unit/nested_unit_spec.rb +0 -43
  127. data/testing/rspec/spec/unit/parsed_unit_spec.rb +0 -27
  128. data/testing/rspec/spec/unit/parsing_unit_spec.rb +0 -54
  129. data/testing/rspec/spec/unit/shared/bare_bones_models_unit_specs.rb +0 -14
  130. data/testing/rspec/spec/unit/shared/containing_models_unit_specs.rb +0 -127
  131. data/testing/rspec/spec/unit/shared/described_models_unit_specs.rb +0 -38
  132. data/testing/rspec/spec/unit/shared/keyworded_models_unit_specs.rb +0 -58
  133. data/testing/rspec/spec/unit/shared/models_unit_specs.rb +0 -15
  134. data/testing/rspec/spec/unit/shared/named_models_unit_specs.rb +0 -39
  135. data/testing/rspec/spec/unit/shared/nested_models_unit_specs.rb +0 -51
  136. data/testing/rspec/spec/unit/shared/parsed_models_unit_specs.rb +0 -39
  137. data/testing/rspec/spec/unit/shared/prepopulated_models_unit_specs.rb +0 -18
  138. data/testing/rspec/spec/unit/shared/sourced_models_unit_specs.rb +0 -39
  139. data/testing/rspec/spec/unit/shared/stepped_models_unit_specs.rb +0 -46
  140. data/testing/rspec/spec/unit/shared/stringifiable_models_unit_specs.rb +0 -18
  141. data/testing/rspec/spec/unit/shared/tagged_models_unit_specs.rb +0 -72
  142. data/testing/rspec/spec/unit/sourceable_unit_spec.rb +0 -27
  143. data/testing/rspec/spec/unit/stepped_unit_spec.rb +0 -23
  144. data/testing/rspec/spec/unit/taggable_unit_spec.rb +0 -69
  145. data/testing/test_languages.json +0 -45
  146. data/todo.txt +0 -25
@@ -1,46 +0,0 @@
1
- require "#{File.dirname(__FILE__)}/../../spec_helper"
2
-
3
- shared_examples_for 'a stepped model' do
4
-
5
- # clazz must be defined by the calling file
6
-
7
- let(:model) { clazz.new }
8
-
9
-
10
- it 'has steps' do
11
- expect(model).to respond_to(:steps)
12
- end
13
-
14
- it 'can change its steps' do
15
- expect(model).to respond_to(:steps=)
16
-
17
- model.steps = :some_steps
18
- expect(model.steps).to eq(:some_steps)
19
- model.steps = :some_other_steps
20
- expect(model.steps).to eq(:some_other_steps)
21
- end
22
-
23
-
24
- describe 'abstract instantiation' do
25
-
26
- context 'a new stepped object' do
27
-
28
- let(:model) { clazz.new }
29
-
30
-
31
- it 'starts with no steps' do
32
- expect(model.steps).to eq([])
33
- end
34
-
35
- end
36
-
37
- end
38
-
39
- it 'contains steps' do
40
- steps = [:step_1, :step_2, :step_3]
41
- model.steps = steps
42
-
43
- steps.each { |step| expect(model.children).to include(step) }
44
- end
45
-
46
- end
@@ -1,18 +0,0 @@
1
- require "#{File.dirname(__FILE__)}/../../spec_helper"
2
-
3
- shared_examples_for 'a stringifiable model' do
4
-
5
- # clazz must be defined by the calling file
6
-
7
- let(:model) { clazz.new }
8
-
9
-
10
- it 'can provide a custom string representation of itself' do
11
- expect(model.method(:to_s).owner).to equal(clazz), "#{clazz} does not override #to_s"
12
- end
13
-
14
- it 'represents itself as a string' do
15
- expect(model.to_s).to be_a(String)
16
- end
17
-
18
- end
@@ -1,72 +0,0 @@
1
- require "#{File.dirname(__FILE__)}/../../spec_helper"
2
-
3
- shared_examples_for 'a tagged model' do
4
-
5
- # clazz must be defined by the calling file
6
-
7
- let(:model) { clazz.new }
8
-
9
-
10
- it 'has tags' do
11
- expect(model).to respond_to(:tags)
12
- end
13
-
14
- it 'can change its tags' do
15
- expect(model).to respond_to(:tags=)
16
-
17
- model.tags = :some_tags
18
- expect(model.tags).to eq(:some_tags)
19
- model.tags = :some_other_tags
20
- expect(model.tags).to eq(:some_other_tags)
21
- end
22
-
23
-
24
- describe 'abstract instantiation' do
25
-
26
- context 'a new tagged object' do
27
-
28
- let(:model) { clazz.new }
29
-
30
-
31
- it 'starts with no tags' do
32
- expect(model.tags).to eq([])
33
- end
34
-
35
- it 'starts with no inherited tags' do
36
- expect(model.applied_tags).to eq([])
37
- end
38
-
39
- it 'starts with no tags at all' do
40
- expect(model.all_tags).to eq([])
41
- end
42
-
43
- end
44
-
45
- end
46
-
47
- it 'has applied tags' do
48
- expect(model).to respond_to(:applied_tags)
49
- end
50
-
51
- it 'inherits its applied tags from its ancestors' do
52
- all_parent_tags = [:parent_tag_1, :parent_tag_2, :grandparent_tag_1]
53
- parent = double(:all_tags => all_parent_tags)
54
-
55
- model.parent_model = parent
56
-
57
- expect(model.applied_tags).to match_array(all_parent_tags)
58
- end
59
-
60
- it 'knows all of its applicable tags' do
61
- all_parent_tags = [:parent_tag_1, :parent_tag_2, :grandparent_tag_1]
62
- own_tags = [:tag_1, :tag_2]
63
-
64
- parent = double(:all_tags => all_parent_tags)
65
-
66
- model.parent_model = parent
67
- model.tags = own_tags
68
-
69
- expect(model.all_tags).to match_array(all_parent_tags + own_tags)
70
- end
71
-
72
- end
@@ -1,27 +0,0 @@
1
- require "#{File.dirname(__FILE__)}/../spec_helper"
2
-
3
-
4
- describe 'Sourceable, Unit', :unit_test => true do
5
-
6
- let(:nodule) { CukeModeler::Sourceable }
7
- let(:model) { Object.new.extend(nodule) }
8
-
9
-
10
- describe 'unique behavior' do
11
-
12
- it 'has a source line' do
13
- expect(model).to respond_to(:source_line)
14
- end
15
-
16
- it 'can change its source line' do
17
- expect(model).to respond_to(:source_line=)
18
-
19
- model.source_line = :some_source_line
20
- expect(model.source_line).to eq(:some_source_line)
21
- model.source_line = :some_other_source_line
22
- expect(model.source_line).to eq(:some_other_source_line)
23
- end
24
-
25
- end
26
-
27
- end
@@ -1,23 +0,0 @@
1
- require "#{File.dirname(__FILE__)}/../spec_helper"
2
-
3
-
4
- describe 'Stepped, Unit', :unit_test => true do
5
-
6
- let(:nodule) { CukeModeler::Stepped }
7
- let(:stepped_model) { Object.new.extend(nodule) }
8
-
9
-
10
- it 'has steps' do
11
- expect(stepped_model).to respond_to(:steps)
12
- end
13
-
14
- it 'can change its steps' do
15
- expect(stepped_model).to respond_to(:steps=)
16
-
17
- stepped_model.steps = :some_steps
18
- expect(stepped_model.steps).to eq(:some_steps)
19
- stepped_model.steps = :some_other_steps
20
- expect(stepped_model.steps).to eq(:some_other_steps)
21
- end
22
-
23
- end
@@ -1,69 +0,0 @@
1
- require "#{File.dirname(__FILE__)}/../spec_helper"
2
-
3
-
4
- describe 'Taggable, Unit', :unit_test => true do
5
-
6
- let(:nodule) { CukeModeler::Taggable }
7
- let(:model) { o = Object.new.extend(nodule)
8
-
9
- def o.parent_model
10
- @parent_model
11
- end
12
-
13
- def o.parent_model=(parent)
14
- @parent_model = parent
15
- end
16
-
17
- o
18
- }
19
-
20
-
21
- describe 'unique behavior' do
22
-
23
- it 'has tags' do
24
- expect(model).to respond_to(:tags)
25
- end
26
-
27
- it 'can change its tags' do
28
- expect(model).to respond_to(:tags=)
29
-
30
- model.tags = :some_tags
31
- expect(model.tags).to eq(:some_tags)
32
- model.tags = :some_other_tags
33
- expect(model.tags).to eq(:some_other_tags)
34
- end
35
-
36
- it 'has applied tags' do
37
- expect(model).to respond_to(:applied_tags)
38
- end
39
-
40
- it 'inherits its applied tags from its ancestors' do
41
- all_parent_tags = [:parent_tag_1, :parent_tag_2, :grandparent_tag_1]
42
- parent = double(:all_tags => all_parent_tags)
43
-
44
- model.parent_model = parent
45
-
46
- expect(model.applied_tags).to eq(all_parent_tags)
47
- end
48
-
49
- it 'knows all of its applicable tags' do
50
- all_parent_tags = [:parent_tag_1, :parent_tag_2, :grandparent_tag_1]
51
- own_tags = [:tag_1, :tag_2]
52
-
53
- parent = double(:all_tags => all_parent_tags)
54
-
55
- model.parent_model = parent
56
- model.tags = own_tags
57
-
58
- expect(model.all_tags).to eq(all_parent_tags + own_tags)
59
- end
60
-
61
- it 'may have no applied tags' do
62
- model.parent_model = :not_a_tagged_object
63
-
64
- expect(model.applied_tags).to eq([])
65
- end
66
-
67
- end
68
-
69
- end
@@ -1,45 +0,0 @@
1
- {
2
- "cm-test": {
3
- "and": [
4
- "CM-* ",
5
- "CM-And "
6
- ],
7
- "background": [
8
- "CM-Background"
9
- ],
10
- "but": [
11
- "CM-* ",
12
- "CM-But "
13
- ],
14
- "examples": [
15
- "CM-Examples",
16
- "CM-Scenarios"
17
- ],
18
- "feature": [
19
- "CM-Feature",
20
- "CM-Business Need",
21
- "CM-Ability"
22
- ],
23
- "given": [
24
- "CM-* ",
25
- "CM-Given "
26
- ],
27
- "name": "CukeModeler Test Language",
28
- "native": "CMT",
29
- "scenario": [
30
- "CM-Scenario"
31
- ],
32
- "scenarioOutline": [
33
- "CM-Scenario Outline",
34
- "CM-Scenario Template"
35
- ],
36
- "then": [
37
- "CM-* ",
38
- "CM-Then "
39
- ],
40
- "when": [
41
- "CM-* ",
42
- "CM-When "
43
- ]
44
- }
45
- }
data/todo.txt DELETED
@@ -1,25 +0,0 @@
1
- Priority
2
- -------------
3
-
4
- Show less boilerplate code in the documentation
5
- replace copying raw data during adaptation (all of the Marshal#load/#unload calls) with simply testing that modification never happens in order to increase performance?
6
-
7
-
8
-
9
- # todo - add compatibility with newer versions of Gherkin
10
- # todo - incorporate cuke_modeler extensions from other projects
11
- # todo - add plenty of testing around weird and minimal gherkin text for all models
12
- # todo - add support for `Rule` keyword
13
- # todo - incorporate new flexibility of `Example` keyword, etc.
14
- # todo - Have CukeModeler::Parsing.dialect also control the default dialect used by Gherkin
15
-
16
- Backlog
17
- -------------
18
-
19
- Include comments in the string output of a feature file
20
-
21
- replace joined array source text with single string source text/heredocs
22
- unit testing around parsing/modeling cases (whitespace, indentation, minimalistic feature elements, etc.)
23
- replace "\n" usages with the currently set record separator (i.e "\$" )
24
- make sure that all classes and tests are covered and attaches to code coverage
25
- - make an actual Gherkin 5 adapter (just inherit from the Gherkin 4 adapter)