cuke_modeler 0.2.0 → 0.3.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 (74) hide show
  1. checksums.yaml +7 -0
  2. data/.travis.yml +3 -0
  3. data/Gemfile +2 -1
  4. data/History.rdoc +9 -2
  5. data/Rakefile +10 -1
  6. data/cuke_modeler.gemspec +1 -1
  7. data/features/modeling/gherkin4/background_modeling.feature +64 -0
  8. data/features/modeling/gherkin4/background_output.feature +131 -0
  9. data/features/modeling/gherkin4/directory_modeling.feature +110 -0
  10. data/features/modeling/gherkin4/directory_output.feature +14 -0
  11. data/features/modeling/gherkin4/doc_string_modeling.feature +53 -0
  12. data/features/modeling/gherkin4/doc_string_output.feature +72 -0
  13. data/features/modeling/gherkin4/example_modeling.feature +100 -0
  14. data/features/modeling/gherkin4/example_output.feature +193 -0
  15. data/features/modeling/gherkin4/feature_file_modeling.feature +54 -0
  16. data/features/modeling/gherkin4/feature_file_output.feature +14 -0
  17. data/features/modeling/gherkin4/feature_modeling.feature +153 -0
  18. data/features/modeling/gherkin4/feature_output.feature +245 -0
  19. data/features/modeling/gherkin4/outline_modeling.feature +89 -0
  20. data/features/modeling/gherkin4/outline_output.feature +198 -0
  21. data/features/modeling/gherkin4/row_modeling.feature +68 -0
  22. data/features/modeling/gherkin4/row_output.feature +28 -0
  23. data/features/modeling/gherkin4/scenario_modeling.feature +78 -0
  24. data/features/modeling/gherkin4/scenario_output.feature +148 -0
  25. data/features/modeling/gherkin4/step_modeling.feature +75 -0
  26. data/features/modeling/gherkin4/step_output.feature +53 -0
  27. data/features/modeling/gherkin4/table_modeling.feature +42 -0
  28. data/features/modeling/gherkin4/table_output.feature +43 -0
  29. data/features/modeling/gherkin4/table_row_modeling.feature +57 -0
  30. data/features/modeling/gherkin4/table_row_output.feature +28 -0
  31. data/features/modeling/gherkin4/tag_modeling.feature +48 -0
  32. data/features/modeling/gherkin4/tag_output.feature +17 -0
  33. data/features/step_definitions/background_steps.rb +1 -1
  34. data/features/step_definitions/doc_string_steps.rb +1 -1
  35. data/features/step_definitions/feature_steps.rb +7 -4
  36. data/features/step_definitions/outline_steps.rb +2 -2
  37. data/features/step_definitions/step_steps.rb +2 -2
  38. data/features/step_definitions/table_steps.rb +1 -1
  39. data/features/step_definitions/tag_steps.rb +3 -3
  40. data/features/step_definitions/test_steps.rb +1 -1
  41. data/gemfiles/gherkin.gemfile +1 -0
  42. data/gemfiles/gherkin3.gemfile +2 -1
  43. data/gemfiles/gherkin4.gemfile +16 -0
  44. data/lib/cuke_modeler/adapters/gherkin_4_adapter.rb +220 -0
  45. data/lib/cuke_modeler/example.rb +1 -1
  46. data/lib/cuke_modeler/parsing.rb +73 -44
  47. data/lib/cuke_modeler/version.rb +1 -1
  48. data/spec/spec_helper.rb +10 -4
  49. data/spec/unit/background_unit_spec.rb +17 -9
  50. data/spec/unit/bare_bones_unit_specs.rb +3 -1
  51. data/spec/unit/containing_element_unit_specs.rb +3 -1
  52. data/spec/unit/directory_unit_spec.rb +5 -5
  53. data/spec/unit/doc_string_unit_spec.rb +13 -5
  54. data/spec/unit/example_unit_spec.rb +44 -9
  55. data/spec/unit/feature_element_unit_spec.rb +5 -5
  56. data/spec/unit/feature_element_unit_specs.rb +3 -1
  57. data/spec/unit/feature_file_unit_spec.rb +5 -5
  58. data/spec/unit/feature_unit_spec.rb +17 -9
  59. data/spec/unit/nested_element_unit_specs.rb +3 -1
  60. data/spec/unit/outline_unit_spec.rb +18 -10
  61. data/spec/unit/parsing_unit_spec.rb +2 -2
  62. data/spec/unit/prepopulated_unit_specs.rb +3 -1
  63. data/spec/unit/raw_element_unit_specs.rb +3 -1
  64. data/spec/unit/row_unit_spec.rb +15 -8
  65. data/spec/unit/scenario_unit_spec.rb +19 -11
  66. data/spec/unit/sourced_element_unit_specs.rb +3 -1
  67. data/spec/unit/step_unit_spec.rb +14 -6
  68. data/spec/unit/table_row_unit_spec.rb +15 -8
  69. data/spec/unit/table_unit_spec.rb +13 -5
  70. data/spec/unit/tag_unit_spec.rb +14 -6
  71. data/spec/unit/tagged_element_unit_specs.rb +3 -1
  72. data/spec/unit/test_element_unit_spec.rb +6 -6
  73. data/spec/unit/test_element_unit_specs.rb +3 -1
  74. metadata +86 -55
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: aba3b67c01fe77623220706770527d9f418fda77
4
+ data.tar.gz: 1435b488abd5ab3dd950c15c1eca2fa9ae4ed667
5
+ SHA512:
6
+ metadata.gz: 05804620e288fc68ebdc259cd87cfbd325bdb6dec0ecc9b6836e3ba25b510146435b58db17966495d1c61fc0beb1bea6ba7b85461ccb40bc5ce2405b812902b4
7
+ data.tar.gz: 98c6e9d3f981873da08d1fcec2cc6d3d7c1db79f749c192e8f6c08b757f43bb08795516488ecec58a63181420a1be27e9fbf72b7d046ceb32461ca9eb50b1b9f
@@ -9,12 +9,15 @@ rvm:
9
9
  gemfile:
10
10
  - gemfiles/gherkin.gemfile
11
11
  - gemfiles/gherkin3.gemfile
12
+ - gemfiles/gherkin4.gemfile
12
13
 
13
14
 
14
15
  matrix:
15
16
  exclude:
16
17
  - rvm: 1.8.7
17
18
  gemfile: gemfiles/gherkin3.gemfile
19
+ - rvm: 1.8.7
20
+ gemfile: gemfiles/gherkin4.gemfile
18
21
 
19
22
  # todo - Remove this once TravisCI fixes their bundler issue (https://github.com/alphagov/govuk_template/pull/186)
20
23
  before_install:
data/Gemfile CHANGED
@@ -9,12 +9,13 @@ if RUBY_VERSION =~ /^1\.8/
9
9
  gem 'gherkin', '<2.12.0'
10
10
  gem 'mime-types', '<2.0.0'
11
11
  gem 'rest-client', '<1.7.0'
12
+ gem 'rake', '< 11.0' # Rake dropped 1.8.x support after this version
12
13
  elsif RUBY_VERSION =~ /^1\./
13
14
  gem 'cucumber', '<2.0.0'
14
15
  end
15
16
 
16
17
  if RUBY_VERSION =~ /^2\./
17
- gem 'gherkin', '>= 3.0.0'
18
+ gem 'gherkin', '~> 4.0'
18
19
  end
19
20
 
20
21
  if RUBY_VERSION =~ /^2\.[23456789]/
@@ -1,11 +1,18 @@
1
- === Version 0.1.0 / 2016-02-21
1
+ === Version 0.3.0 / 2016-04-24
2
+
3
+ * Support for version 4.x of the 'gherkin' gem added.
4
+ * Bug fix - Fixed a bug that was preventing Example objects from being created from text if that text had less Gherkin
5
+ structure than normal.
6
+
7
+
8
+ === Version 0.2.0 / 2016-02-21
2
9
 
3
10
  * Better error feedback when parsing errors are encountered.
4
11
 
5
12
 
6
13
  === Version 0.1.0 / 2016-02-10
7
14
 
8
- * Support for version 3.0 of the 'gherkin' gem added.
15
+ * Support for version 3.x of the 'gherkin' gem added.
9
16
 
10
17
 
11
18
  === Version 0.0.2 / 2015-11-22
data/Rakefile CHANGED
@@ -26,7 +26,16 @@ namespace 'cuke_modeler' do
26
26
  desc 'Test gem based on Ruby/dependency versions'
27
27
  task :smart_test do |t, args|
28
28
  rspec_args = ''
29
- cucumber_args = Gem.loaded_specs['gherkin'].version.version[/^3/] ? '-t ~@gherkin' : '-t ~@gherkin3'
29
+
30
+ case
31
+ when Gem.loaded_specs['gherkin'].version.version[/^4/]
32
+ cucumber_args = '-t ~@gherkin -t ~@gherkin3'
33
+ when Gem.loaded_specs['gherkin'].version.version[/^3/]
34
+ cucumber_args = '-t ~@gherkin -t ~@gherkin4'
35
+ else
36
+ cucumber_args = '-t ~@gherkin3 -t ~@gherkin4'
37
+ end
38
+
30
39
  cucumber_args += ' -f progress'
31
40
 
32
41
  Rake::Task['cuke_modeler:test_everything'].invoke(rspec_args, cucumber_args)
@@ -17,7 +17,7 @@ Gem::Specification.new do |spec|
17
17
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
18
  spec.require_paths = ["lib"]
19
19
 
20
- spec.add_runtime_dependency 'gherkin', '< 4.0'
20
+ spec.add_runtime_dependency 'gherkin', '< 5.0'
21
21
  spec.add_runtime_dependency('json', '~> 1.0')
22
22
  spec.add_runtime_dependency('multi_json', '~> 1.0')
23
23
 
@@ -0,0 +1,64 @@
1
+ @gherkin4
2
+ Feature: Background elements can be modeled.
3
+
4
+
5
+ Acceptance criteria
6
+
7
+ 1. All conceptual pieces of a background can be modeled:
8
+ - the background's name
9
+ - the background's description
10
+ - the background's steps
11
+ - the background's source line
12
+ - the background's raw element
13
+
14
+ 2. Backgrounds can be outputted in a convenient form
15
+
16
+
17
+ Background: Test file setup.
18
+ Given the following feature file:
19
+ """
20
+ Feature:
21
+
22
+ Background: Some general test setup stuff.
23
+
24
+ Some background description.
25
+
26
+ Some more.
27
+ Even more.
28
+
29
+ Given a setup step
30
+ And another setup step
31
+ When an action step
32
+ """
33
+ And parameter delimiters of "*" and "*"
34
+ When the file is read
35
+
36
+
37
+ Scenario: The raw background element is modeled.
38
+ Then the background correctly stores its underlying implementation
39
+
40
+ Scenario: The background source line is modeled.
41
+ Then the background is found to have the following properties:
42
+ | source_line | 3 |
43
+
44
+ Scenario: The background name is modeled.
45
+ Then the background is found to have the following properties:
46
+ | name | Some general test setup stuff. |
47
+
48
+ Scenario: The background description is modeled.
49
+ Then the background has the following description:
50
+ """
51
+ Some background description.
52
+
53
+ Some more.
54
+ Even more.
55
+ """
56
+
57
+ Scenario: The background steps are modeled.
58
+ Then the background's steps are as follows:
59
+ | a setup step |
60
+ | another setup step |
61
+ | an action step |
62
+
63
+ Scenario: Convenient output of a background
64
+ Then the background has convenient output
@@ -0,0 +1,131 @@
1
+ @gherkin4
2
+ Feature: Outputting background elements
3
+
4
+ The output of an element model is a representation of the element as it would
5
+ appear in gherkin.
6
+
7
+
8
+ Scenario: Output of a background that does not have a name
9
+ Given a background element based on the following gherkin:
10
+ """
11
+ Background:
12
+ """
13
+ When it is outputted
14
+ Then the following text is provided:
15
+ """
16
+ Background:
17
+ """
18
+
19
+ Scenario: Output of a background that does have a name
20
+ Given a background element based on the following gherkin:
21
+ """
22
+ Background: with a name
23
+ """
24
+ When it is outputted
25
+ Then the following text is provided:
26
+ """
27
+ Background: with a name
28
+ """
29
+
30
+ Scenario: Output of a background that has a description, no first line buffer
31
+ Given a background element based on the following gherkin:
32
+ """
33
+ Background:
34
+ Some description.
35
+ Some more description.
36
+ """
37
+ When it is outputted
38
+ Then the following text is provided:
39
+ """
40
+ Background:
41
+
42
+ Some description.
43
+ Some more description.
44
+ """
45
+
46
+ Scenario: Output of a background that has a description, first line is blank
47
+ Given a background element based on the following gherkin:
48
+ """
49
+ Background:
50
+
51
+ Some description.
52
+ Some more description.
53
+ """
54
+ When it is outputted
55
+ Then the following text is provided:
56
+ """
57
+ Background:
58
+
59
+ Some description.
60
+ Some more description.
61
+ """
62
+
63
+ Scenario: Output of a background that has a description, first line is only whitespace
64
+ Given a background element based on the following gherkin:
65
+ """
66
+ Background:
67
+
68
+ Some description.
69
+ Some more description.
70
+ """
71
+ When it is outputted
72
+ Then the following text is provided:
73
+ """
74
+ Background:
75
+
76
+ Some description.
77
+ Some more description.
78
+ """
79
+
80
+ Scenario: Output of a background that has steps
81
+ Given a background element based on the following gherkin:
82
+ """
83
+ Background:
84
+ * a step
85
+ |value|
86
+ * another step
87
+ \"\"\"
88
+ some string
89
+ \"\"\"
90
+ """
91
+ When it is outputted
92
+ Then the following text is provided:
93
+ """
94
+ Background:
95
+ * a step
96
+ | value |
97
+ * another step
98
+ \"\"\"
99
+ some string
100
+ \"\"\"
101
+ """
102
+
103
+ Scenario: Output of a background that contains all possible parts
104
+ Given a background element based on the following gherkin:
105
+ """
106
+ Background: A background with everything it could have
107
+ Including a description
108
+ and then some.
109
+
110
+ * a step
111
+ |value|
112
+ * another step
113
+ \"\"\"
114
+ some string
115
+ \"\"\"
116
+ """
117
+ When it is outputted
118
+ Then the following text is provided:
119
+ """
120
+ Background: A background with everything it could have
121
+
122
+ Including a description
123
+ and then some.
124
+
125
+ * a step
126
+ | value |
127
+ * another step
128
+ \"\"\"
129
+ some string
130
+ \"\"\"
131
+ """
@@ -0,0 +1,110 @@
1
+ @gherkin4
2
+ Feature: Directories can be modeled.
3
+
4
+
5
+ Acceptance criteria
6
+
7
+ 1. Directories containing feature files can be modeled:
8
+ - the directory's name
9
+ - the directory's full path
10
+ - all feature files contained
11
+ - all directories contained
12
+
13
+ 2. Directories can be outputted in a convenient form
14
+
15
+
16
+ Background: Setup test directories
17
+ Given a directory "feature_directory"
18
+ And the following feature file "test_file_1.feature":
19
+ """
20
+ Feature: The test feature 1.
21
+
22
+ Scenario: The first scenario's name.
23
+ Given the first step
24
+ When the second step
25
+ Then the third step
26
+ """
27
+ And the following feature file "test_file_2.feature":
28
+ """
29
+ Feature: The test feature 2.
30
+
31
+ Scenario: The first scenario's name.
32
+ Given the first step
33
+ When the second step
34
+ Then the third step
35
+ """
36
+ And the following feature file "test_file_3.feature":
37
+ """
38
+ Feature: The test feature 3.
39
+
40
+ Scenario: The first scenario's name.
41
+ Given the first step
42
+ When the second step
43
+ Then the third step
44
+ """
45
+ And the following file "random.file":
46
+ """
47
+ Not a .feature file.
48
+ """
49
+ Given a directory "feature_directory/nested_directory"
50
+ And the following feature file "test_file_4.feature":
51
+ """
52
+ Feature: The test feature 1.
53
+
54
+ Scenario: The first scenario's name.
55
+ Given the first step
56
+ When the second step
57
+ Then the third step
58
+ """
59
+ And the following feature file "test_file_5.feature":
60
+ """
61
+ Feature: The test feature 2.
62
+
63
+ Scenario: The first scenario's name.
64
+ Given the first step
65
+ When the second step
66
+ Then the third step
67
+ """
68
+ And the following file "another_random.file":
69
+ """
70
+ Not a .feature file.
71
+ """
72
+ When the directory "feature_directory" is read
73
+ And the directory "feature_directory/nested_directory" is read
74
+
75
+ Scenario: The directory's name is modeled.
76
+ Then directory "1" is found to have the following properties:
77
+ | name | feature_directory |
78
+ And directory "2" is found to have the following properties:
79
+ | name | nested_directory |
80
+
81
+ Scenario: The directory's full path is modeled.
82
+ Then directory "1" is found to have the following properties:
83
+ | path | path_to/feature_directory |
84
+ And directory "2" is found to have the following properties:
85
+ | path | path_to/feature_directory/nested_directory |
86
+
87
+ Scenario: The directory's feature files are modeled.
88
+ Then directory "1" is found to have the following properties:
89
+ | feature_file_count | 3 |
90
+ And directory "1" feature files are as follows:
91
+ | test_file_1.feature |
92
+ | test_file_2.feature |
93
+ | test_file_3.feature |
94
+ Then directory "2" is found to have the following properties:
95
+ | feature_file_count | 2 |
96
+ And directory "2" feature files are as follows:
97
+ | test_file_4.feature |
98
+ | test_file_5.feature |
99
+
100
+ Scenario: The directory's directories are modeled.
101
+ Then directory "1" is found to have the following properties:
102
+ | directory_count | 1 |
103
+ And directory "1" directories are as follows:
104
+ | nested_directory |
105
+ Then directory "2" is found to have the following properties:
106
+ | directory_count | 0 |
107
+ And directory "2" has no directories
108
+
109
+ Scenario: Convenient output of a directory
110
+ Then the directory has convenient output
@@ -0,0 +1,14 @@
1
+ @gherkin4
2
+ Feature: Outputting directory elements
3
+
4
+ The output of an element model is a representation of the element as it would
5
+ appear in gherkin.
6
+
7
+
8
+ Scenario: Output of a directory
9
+ Given a directory element based on "some_directory"
10
+ When it is outputted
11
+ Then the following text is provided:
12
+ """
13
+ path_to/some_directory
14
+ """
@@ -0,0 +1,53 @@
1
+ @gherkin4
2
+ Feature: Doc string elements can be modeled.
3
+
4
+
5
+ Acceptance criteria
6
+
7
+ 1. All conceptual pieces of a doc string can be modeled:
8
+ - the doc string's content type
9
+ - the doc string's contents
10
+ - the doc string's raw element
11
+
12
+ 2. Doc string can be outputted in a convenient form
13
+
14
+
15
+ Background: Test file setup.
16
+ Given the following feature file:
17
+ """
18
+ Feature:
19
+
20
+ Scenario:
21
+ * some wordy step:
22
+ \"\"\" content type
23
+ some text
24
+
25
+ some more text
26
+
27
+ \"\"\"
28
+ * some wordy step:
29
+ \"\"\"
30
+ \"\"\"
31
+ """
32
+ When the file is read
33
+
34
+
35
+ Scenario: The raw doc string element is modeled.
36
+ Then the doc string correctly stores its underlying implementation
37
+
38
+ Scenario: The doc string's content type is modeled.
39
+ Then the step "1" doc string content type is "content type"
40
+ And the step "2" doc string has no content type
41
+
42
+ Scenario: The doc string's contents are modeled.
43
+ Then the step "1" doc string has the following contents:
44
+ """
45
+ some text
46
+
47
+ some more text
48
+
49
+ """
50
+ And the step "2" doc string contents are empty
51
+
52
+ Scenario: Convenient output of an a doc string
53
+ Then the doc string has convenient output