cuke_modeler 0.0.2 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (95) hide show
  1. data/.travis.yml +23 -0
  2. data/Gemfile +22 -4
  3. data/History.rdoc +6 -0
  4. data/Rakefile +26 -26
  5. data/cuke_modeler.gemspec +3 -1
  6. data/features/modeling/{background_modeling.feature → gherkin/background_modeling.feature} +1 -11
  7. data/features/modeling/{background_output.feature → gherkin/background_output.feature} +1 -0
  8. data/features/modeling/{directory_modeling.feature → gherkin/directory_modeling.feature} +1 -11
  9. data/features/modeling/{directory_output.feature → gherkin/directory_output.feature} +1 -0
  10. data/features/modeling/{doc_string_modeling.feature → gherkin/doc_string_modeling.feature} +1 -11
  11. data/features/modeling/{doc_string_output.feature → gherkin/doc_string_output.feature} +1 -0
  12. data/features/modeling/{example_modeling.feature → gherkin/example_modeling.feature} +1 -11
  13. data/features/modeling/{example_output.feature → gherkin/example_output.feature} +1 -0
  14. data/features/modeling/{feature_file_modeling.feature → gherkin/feature_file_modeling.feature} +1 -11
  15. data/features/modeling/{feature_file_output.feature → gherkin/feature_file_output.feature} +1 -0
  16. data/features/modeling/{feature_modeling.feature → gherkin/feature_modeling.feature} +1 -11
  17. data/features/modeling/{feature_output.feature → gherkin/feature_output.feature} +1 -0
  18. data/features/modeling/{outline_modeling.feature → gherkin/outline_modeling.feature} +1 -11
  19. data/features/modeling/{outline_output.feature → gherkin/outline_output.feature} +1 -0
  20. data/features/modeling/{row_modeling.feature → gherkin/row_modeling.feature} +1 -10
  21. data/features/modeling/{row_output.feature → gherkin/row_output.feature} +1 -0
  22. data/features/modeling/{scenario_modeling.feature → gherkin/scenario_modeling.feature} +1 -11
  23. data/features/modeling/{scenario_output.feature → gherkin/scenario_output.feature} +1 -0
  24. data/features/modeling/{step_modeling.feature → gherkin/step_modeling.feature} +1 -11
  25. data/features/modeling/{step_output.feature → gherkin/step_output.feature} +1 -0
  26. data/features/modeling/{table_modeling.feature → gherkin/table_modeling.feature} +1 -11
  27. data/features/modeling/{table_output.feature → gherkin/table_output.feature} +1 -0
  28. data/features/modeling/{table_row_modeling.feature → gherkin/table_row_modeling.feature} +1 -11
  29. data/features/modeling/{table_row_output.feature → gherkin/table_row_output.feature} +1 -0
  30. data/features/modeling/{tag_modeling.feature → gherkin/tag_modeling.feature} +1 -11
  31. data/features/modeling/{tag_output.feature → gherkin/tag_output.feature} +1 -0
  32. data/features/modeling/gherkin3/background_modeling.feature +64 -0
  33. data/features/modeling/gherkin3/background_output.feature +131 -0
  34. data/features/modeling/gherkin3/directory_modeling.feature +110 -0
  35. data/features/modeling/gherkin3/directory_output.feature +14 -0
  36. data/features/modeling/gherkin3/doc_string_modeling.feature +53 -0
  37. data/features/modeling/gherkin3/doc_string_output.feature +72 -0
  38. data/features/modeling/gherkin3/example_modeling.feature +100 -0
  39. data/features/modeling/gherkin3/example_output.feature +207 -0
  40. data/features/modeling/gherkin3/feature_file_modeling.feature +54 -0
  41. data/features/modeling/gherkin3/feature_file_output.feature +14 -0
  42. data/features/modeling/gherkin3/feature_modeling.feature +155 -0
  43. data/features/modeling/gherkin3/feature_output.feature +249 -0
  44. data/features/modeling/gherkin3/outline_modeling.feature +89 -0
  45. data/features/modeling/gherkin3/outline_output.feature +255 -0
  46. data/features/modeling/gherkin3/row_modeling.feature +68 -0
  47. data/features/modeling/gherkin3/row_output.feature +28 -0
  48. data/features/modeling/gherkin3/scenario_modeling.feature +78 -0
  49. data/features/modeling/gherkin3/scenario_output.feature +148 -0
  50. data/features/modeling/gherkin3/step_modeling.feature +75 -0
  51. data/features/modeling/gherkin3/step_output.feature +53 -0
  52. data/features/modeling/gherkin3/table_modeling.feature +42 -0
  53. data/features/modeling/gherkin3/table_output.feature +43 -0
  54. data/features/modeling/gherkin3/table_row_modeling.feature +57 -0
  55. data/features/modeling/gherkin3/table_row_output.feature +28 -0
  56. data/features/modeling/gherkin3/tag_modeling.feature +49 -0
  57. data/features/modeling/gherkin3/tag_output.feature +17 -0
  58. data/features/step_definitions/background_steps.rb +5 -1
  59. data/features/step_definitions/doc_string_steps.rb +5 -1
  60. data/features/step_definitions/feature_steps.rb +5 -1
  61. data/features/step_definitions/outline_steps.rb +10 -4
  62. data/features/step_definitions/step_steps.rb +10 -2
  63. data/features/step_definitions/table_steps.rb +6 -2
  64. data/features/step_definitions/tag_steps.rb +15 -3
  65. data/features/step_definitions/test_steps.rb +7 -2
  66. data/features/support/env.rb +21 -9
  67. data/gemfiles/gherkin.gemfile +17 -0
  68. data/gemfiles/gherkin3.gemfile +15 -0
  69. data/lib/cuke_modeler/adapters/gherkin_2_adapter.rb +146 -0
  70. data/lib/cuke_modeler/adapters/gherkin_3_adapter.rb +206 -0
  71. data/lib/cuke_modeler/parsing.rb +61 -20
  72. data/lib/cuke_modeler/raw.rb +1 -1
  73. data/lib/cuke_modeler/row.rb +2 -2
  74. data/lib/cuke_modeler/table.rb +2 -2
  75. data/lib/cuke_modeler/table_row.rb +1 -1
  76. data/lib/cuke_modeler/version.rb +1 -1
  77. data/spec/integration/example_integration_spec.rb +2 -1
  78. data/spec/integration/feature_integration_spec.rb +7 -4
  79. data/spec/integration/outline_integration_spec.rb +4 -2
  80. data/spec/integration/tag_integration_spec.rb +2 -1
  81. data/spec/spec_helper.rb +6 -0
  82. data/spec/unit/background_unit_spec.rb +17 -0
  83. data/spec/unit/doc_string_unit_spec.rb +17 -0
  84. data/spec/unit/example_unit_spec.rb +18 -1
  85. data/spec/unit/feature_file_unit_spec.rb +2 -2
  86. data/spec/unit/feature_unit_spec.rb +16 -0
  87. data/spec/unit/outline_unit_spec.rb +20 -1
  88. data/spec/unit/row_unit_spec.rb +18 -0
  89. data/spec/unit/scenario_unit_spec.rb +17 -0
  90. data/spec/unit/step_unit_spec.rb +17 -0
  91. data/spec/unit/table_row_unit_spec.rb +18 -0
  92. data/spec/unit/table_unit_spec.rb +16 -0
  93. data/spec/unit/tag_unit_spec.rb +17 -0
  94. metadata +147 -60
  95. data/features/step_definitions/spec_steps.rb +0 -18
@@ -1,3 +1,4 @@
1
+ @gherkin
1
2
  Feature: Outputting table row elements
2
3
 
3
4
  The output of an element model is a representation of the element as it would
@@ -1,3 +1,4 @@
1
+ @gherkin
1
2
  Feature: Tag elements can be modeled.
2
3
 
3
4
 
@@ -45,14 +46,3 @@ Feature: Tag elements can be modeled.
45
46
 
46
47
  Scenario: Convenient output of a tag
47
48
  Then the tag has convenient output
48
-
49
- @redundant
50
- Scenario Outline: Tag models pass all other specifications
51
- Exact specifications detailing the API for tag models.
52
- Given that there are "<additional specifications>" detailing models
53
- When the corresponding specifications are run
54
- Then all of those specifications are met
55
- Examples:
56
- | additional specifications |
57
- | tag_unit_spec.rb |
58
- | tag_integration_spec.rb |
@@ -1,3 +1,4 @@
1
+ @gherkin
1
2
  Feature: Outputting tag elements
2
3
 
3
4
  The output of an element model is a representation of the element as it would
@@ -0,0 +1,64 @@
1
+ @gherkin3
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
+ @gherkin3
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
+ @gherkin3
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
+ @gherkin3
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
+ @gherkin3
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
@@ -0,0 +1,72 @@
1
+ @gherkin3
2
+ Feature: Outputting doc string 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 an empty doc string
9
+ Given a doc string element based on the following gherkin:
10
+ """
11
+ \"\"\"
12
+ \"\"\"
13
+ """
14
+ When it is outputted
15
+ Then the following text is provided:
16
+ """
17
+ \"\"\"
18
+ \"\"\"
19
+ """
20
+
21
+ Scenario: Output of a doc string without a content type
22
+ Given a doc string element based on the following gherkin:
23
+ """
24
+ \"\"\"
25
+ Some text
26
+
27
+ some more text
28
+
29
+ \"\"\"
30
+ """
31
+ When it is outputted
32
+ Then the following text is provided:
33
+ """
34
+ \"\"\"
35
+ Some text
36
+
37
+ some more text
38
+
39
+ \"\"\"
40
+ """
41
+
42
+ Scenario: Output of a doc string with a content type
43
+ Given a doc string element based on the following gherkin:
44
+ """
45
+ \"\"\" the type
46
+ Some text
47
+
48
+ some more text
49
+
50
+ \"\"\"
51
+ """
52
+ When it is outputted
53
+ Then the following text is provided:
54
+ """
55
+ \"\"\" the type
56
+ Some text
57
+
58
+ some more text
59
+
60
+ \"\"\"
61
+ """
62
+
63
+ Scenario: Output of a doc string with a triple quotes in its contents
64
+
65
+ Since triple quotes mark the beginning and end of a doc string, any triple
66
+ quotes inside of the doc string (which would have had to have been escaped
67
+ to get inside in the first place) will be escaped when outputted so as to
68
+ retain the quality of being able to use the output directly as gherkin.
69
+
70
+ Given a doc string element based on the string """" the type\n* a step\n \"\"\"\n that also has a doc string\n \"\"\"\n""""
71
+ When it is outputted
72
+ Then the text provided is """" the type\n* a step\n \"\"\"\n that also has a doc string\n \"\"\"\n""""