cql 0.3.0 → 1.0.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.
@@ -0,0 +1,26 @@
1
+ require 'cql/filters'
2
+
3
+
4
+ module CQL
5
+
6
+ class SsoLineCountFilter < TypeCountFilter
7
+
8
+ def type_count(test)
9
+ test.steps.size
10
+ end
11
+
12
+ end
13
+
14
+ class LineFilter < ContentMatchFilter
15
+
16
+ def execute(input)
17
+ input.find_all do |tests|
18
+ raw_step_lines = tests.steps.map { |step| step.base }
19
+
20
+ content_match?(raw_step_lines)
21
+ end
22
+ end
23
+
24
+ end
25
+
26
+ end
@@ -0,0 +1,3 @@
1
+ module CQL
2
+ VERSION = '1.0.0'
3
+ end
data/spec/dsl_spec.rb ADDED
@@ -0,0 +1,51 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'dsl' do
4
+ describe "select" do
5
+
6
+ describe "multiple selections" do
7
+
8
+ it 'should handle an empty selection' do
9
+ skip("It may be useful to be able to return both the underlying object and various attributes on it (which is the probably the intent of this query [assuming that it's not just a typo]) but I can't think of a clean way to do it. Behavior undefined for now.")
10
+
11
+ gs = CQL::Repository.new("#{@feature_fixtures_directory}/scenario/simple")
12
+
13
+ result = gs.query do
14
+ select
15
+ select name
16
+ from features
17
+ end
18
+
19
+ end
20
+
21
+ end
22
+ end
23
+
24
+ describe "from" do
25
+
26
+ describe "multiple targets" do
27
+
28
+ it 'raises an exception for inapplicable attributes' do
29
+ gs = CQL::Repository.new("#{@feature_fixtures_directory}/scenario/simple")
30
+
31
+ expect {
32
+ gs.query do
33
+ select name, steps
34
+ from features
35
+ from scenarios
36
+ end
37
+ }.to raise_error
38
+
39
+ end
40
+
41
+ end
42
+ end
43
+
44
+ describe 'shorthand' do
45
+
46
+ it 'should consider an exact match over a pluralization' do
47
+ skip('Not sure how to test this without actually have two classes that are so similarly named. It is a required behavior, but not one worth the hassle of testing until it actually comes up.')
48
+ end
49
+
50
+ end
51
+ end
@@ -0,0 +1,65 @@
1
+ require 'spec_helper'
2
+
3
+
4
+ describe "example filters (with)" do
5
+
6
+
7
+ it_behaves_like 'a name filterable target set', 'examples', {:exact_name => {:fixture_location => "#{CQL_FEATURE_FIXTURES_DIRECTORY}/examples/name_filter",
8
+ :expected_results => {'name1' => [{"name" => "name1"}]}},
9
+ :regexp => {:fixture_location => "#{CQL_FEATURE_FIXTURES_DIRECTORY}/examples/name_filter",
10
+ :expected_results => {/name/ => [{"name" => "name1"}, {"name" => "name2"}, {"name" => "name3"}],
11
+ /name1/ => [{"name" => "name1"}]}}
12
+ }
13
+
14
+ it_behaves_like 'a tag filterable target set', 'examples', {:single_tag => {:fixture_location => "#{CQL_FEATURE_FIXTURES_DIRECTORY}/examples/filters/tags",
15
+ :expected_results => {'@one' => [{'name' => 'Next'}, {'name' => 'Another'}]}},
16
+
17
+ :multiple_tags => {:fixture_location => "#{CQL_FEATURE_FIXTURES_DIRECTORY}/examples/filters/tags2",
18
+ :expected_results => {['@one', '@five'] => [{'name' => 'Next'}]}},
19
+
20
+ :tc_lt => {:fixture_location => "#{CQL_FEATURE_FIXTURES_DIRECTORY}/examples/filters/tag_count",
21
+ :expected_results => {0 => [],
22
+ 1 => [],
23
+ 2 => [{"name" => "1 tag"}],
24
+ 3 => [{"name" => "1 tag"}, {"name" => "2 tags"}],
25
+ 4 => [{"name" => "1 tag"}, {"name" => "2 tags"}, {"name" => "3 tags"}],
26
+ 5 => [{"name" => "1 tag"}, {"name" => "2 tags"}, {"name" => "3 tags"}, {"name" => "4 tags"}]}},
27
+
28
+ :tc_lte => {:fixture_location => "#{CQL_FEATURE_FIXTURES_DIRECTORY}/examples/filters/tag_count",
29
+ :expected_results => {0 => [],
30
+ 1 => [{"name" => "1 tag"}],
31
+ 2 => [{"name" => "1 tag"}, {"name" => "2 tags"}],
32
+ 3 => [{"name" => "1 tag"}, {"name" => "2 tags"}, {"name" => "3 tags"}],
33
+ 4 => [{"name" => "1 tag"}, {"name" => "2 tags"}, {"name" => "3 tags"}, {"name" => "4 tags"}],
34
+ 5 => [{"name" => "1 tag"}, {"name" => "2 tags"}, {"name" => "3 tags"}, {"name" => "4 tags"}]}},
35
+
36
+ :tc_gt => {:fixture_location => "#{CQL_FEATURE_FIXTURES_DIRECTORY}/examples/filters/tag_count",
37
+ :expected_results => {0 => [{"name" => "1 tag"}, {"name" => "2 tags"}, {"name" => "3 tags"}, {"name" => "4 tags"}],
38
+ 1 => [{"name" => "2 tags"}, {"name" => "3 tags"}, {"name" => "4 tags"}],
39
+ 2 => [{"name" => "3 tags"}, {"name" => "4 tags"}],
40
+ 3 => [{"name" => "4 tags"}],
41
+ 4 => []}},
42
+
43
+ :tc_gte => {:fixture_location => "#{CQL_FEATURE_FIXTURES_DIRECTORY}/examples/filters/tag_count",
44
+ :expected_results => {0 => [{"name" => "1 tag"}, {"name" => "2 tags"}, {"name" => "3 tags"}, {"name" => "4 tags"}],
45
+ 1 => [{"name" => "1 tag"}, {"name" => "2 tags"}, {"name" => "3 tags"}, {"name" => "4 tags"}],
46
+ 2 => [{"name" => "2 tags"}, {"name" => "3 tags"}, {"name" => "4 tags"}],
47
+ 3 => [{"name" => "3 tags"}, {"name" => "4 tags"}],
48
+ 4 => [{"name" => "4 tags"}],
49
+ 5 => []}}
50
+ }
51
+
52
+ it 'should filter by multiple filters' do
53
+ gs = CQL::Repository.new("#{@feature_fixtures_directory}/examples/filters/tag_count")
54
+
55
+ result = gs.query do
56
+ select name
57
+ from examples
58
+ with tc gt 1
59
+ with tc lt 3
60
+ end
61
+
62
+ expect(result).to eq([{"name" => "2 tags"}])
63
+ end
64
+
65
+ end
@@ -2,6 +2,7 @@ require 'spec_helper'
2
2
 
3
3
  describe "feature filters (with)" do
4
4
  describe 'scenario outline and scenario count functions (ssoc)' do
5
+
5
6
  it 'should filter based on ssoc_gt' do
6
7
  gs = CQL::Repository.new("#{@feature_fixtures_directory}/combined/a")
7
8
 
@@ -14,7 +15,7 @@ describe "feature filters (with)" do
14
15
  with ssoc gt number
15
16
  end
16
17
 
17
- expect(result).to eq(expected)
18
+ expect(result).to match_array(expected)
18
19
  end
19
20
  end
20
21
 
@@ -33,7 +34,7 @@ describe "feature filters (with)" do
33
34
  with ssoc gte number
34
35
  end
35
36
 
36
- expect(result).to eq(expected)
37
+ expect(result).to match_array(expected)
37
38
  end
38
39
  end
39
40
 
@@ -51,7 +52,7 @@ describe "feature filters (with)" do
51
52
  with ssoc lt number
52
53
  end
53
54
 
54
- expect(result).to eq(expected)
55
+ expect(result).to match_array(expected)
55
56
  end
56
57
  end
57
58
 
@@ -70,7 +71,7 @@ describe "feature filters (with)" do
70
71
  with ssoc lte number
71
72
  end
72
73
 
73
- expect(result).to eq(expected)
74
+ expect(result).to match_array(expected)
74
75
  end
75
76
  end
76
77
 
@@ -90,7 +91,7 @@ describe "feature filters (with)" do
90
91
  with sc gt number
91
92
  end
92
93
 
93
- expect(result).to eq(expected)
94
+ expect(result).to match_array(expected)
94
95
  end
95
96
  end
96
97
 
@@ -109,7 +110,7 @@ describe "feature filters (with)" do
109
110
  with sc gte number
110
111
  end
111
112
 
112
- expect(result).to eq(expected)
113
+ expect(result).to match_array(expected)
113
114
  end
114
115
  end
115
116
 
@@ -128,7 +129,7 @@ describe "feature filters (with)" do
128
129
  with sc lt number
129
130
  end
130
131
 
131
- expect(result).to eq(expected)
132
+ expect(result).to match_array(expected)
132
133
  end
133
134
  end
134
135
 
@@ -146,7 +147,7 @@ describe "feature filters (with)" do
146
147
  with sc lte number
147
148
  end
148
149
 
149
- expect(result).to eq(expected)
150
+ expect(result).to match_array(expected)
150
151
  end
151
152
  end
152
153
  end
@@ -198,7 +199,7 @@ describe "feature filters (with)" do
198
199
  with soc gt number
199
200
  end
200
201
 
201
- expect(result).to eq(expected)
202
+ expect(result).to match_array(expected)
202
203
  end
203
204
  end
204
205
 
@@ -217,7 +218,7 @@ describe "feature filters (with)" do
217
218
  with soc gte number
218
219
  end
219
220
 
220
- expect(result).to eq(expected)
221
+ expect(result).to match_array(expected)
221
222
  end
222
223
  end
223
224
 
@@ -236,7 +237,7 @@ describe "feature filters (with)" do
236
237
  with soc lt number
237
238
  end
238
239
 
239
- expect(result).to eq(expected)
240
+ expect(result).to match_array(expected)
240
241
  end
241
242
  end
242
243
 
@@ -255,7 +256,7 @@ describe "feature filters (with)" do
255
256
  with soc lte number
256
257
  end
257
258
 
258
- expect(result).to eq(expected)
259
+ expect(result).to match_array(expected)
259
260
  end
260
261
  end
261
262
  end
@@ -3,13 +3,12 @@ require 'spec_helper'
3
3
  describe "scenario and outline filters (with)" do
4
4
 
5
5
 
6
- # todo - seems like this kind of filtering should be available at the scenario level as well as the feature level
7
- #it_behaves_like 'a name filterable target set', 'scenarios', {:exact_name => {:fixture_location => "#{CQL_FEATURE_FIXTURES_DIRECTORY}/scenario/name_filter",
8
- # :expected_results => {'name1' => [{"name" => "name1"}]}},
9
- # :regexp => {:fixture_location => "#{CQL_FEATURE_FIXTURES_DIRECTORY}/scenario/name_filter",
10
- # :expected_results => {/name/ => [{"name" => "name1"},{"name" => "name2"},{"name" => "name3"}],
11
- # /name1/ => [{"name" => "name1"}]}}
12
- #}
6
+ it_behaves_like 'a name filterable target set', 'scenarios', {:exact_name => {:fixture_location => "#{CQL_FEATURE_FIXTURES_DIRECTORY}/scenario/name_filter",
7
+ :expected_results => {'name1' => [{"name" => "name1"}]}},
8
+ :regexp => {:fixture_location => "#{CQL_FEATURE_FIXTURES_DIRECTORY}/scenario/name_filter",
9
+ :expected_results => {/name/ => [{"name" => "name1"}, {"name" => "name2"}, {"name" => "name3"}],
10
+ /name1/ => [{"name" => "name1"}]}}
11
+ }
13
12
 
14
13
  it_behaves_like 'a tag filterable target set', 'scenarios', {:single_tag => {:fixture_location => "#{CQL_FEATURE_FIXTURES_DIRECTORY}/scenario/tags",
15
14
  :expected_results => {'@one' => [{'name' => 'Next'}, {'name' => 'Another'}]}},
@@ -49,7 +48,7 @@ describe "scenario and outline filters (with)" do
49
48
  5 => []}}
50
49
  }
51
50
 
52
- it_behaves_like 'a tag filterable target set', 'scenario_outlines', {:single_tag => {:fixture_location => "#{CQL_FEATURE_FIXTURES_DIRECTORY}/scen_outlines/filters/tags",
51
+ it_behaves_like 'a tag filterable target set', 'outlines', {:single_tag => {:fixture_location => "#{CQL_FEATURE_FIXTURES_DIRECTORY}/scen_outlines/filters/tags",
53
52
  :expected_results => {'@one' => [{'name' => 'Next'}, {'name' => 'Another'}]}},
54
53
 
55
54
  :multiple_tags => {:fixture_location => "#{CQL_FEATURE_FIXTURES_DIRECTORY}/scen_outlines/filters/tags2",
@@ -143,7 +142,7 @@ describe "scenario and outline filters (with)" do
143
142
 
144
143
  result = gs.query do
145
144
  select name
146
- from scenario_outlines
145
+ from outlines
147
146
  with tc gt 1
148
147
  with tc lt 3
149
148
  end
@@ -151,11 +150,52 @@ describe "scenario and outline filters (with)" do
151
150
  expect(result).to eq([{"name" => "2 tags"}])
152
151
  end
153
152
 
154
- #todo - add line filter tests for scenario outlines
155
- #todo - add line count filter tests for scenario outlines
156
153
 
157
- # # Name
158
- # # Name match
159
- #
154
+ it_behaves_like 'a line count filterable target set', 'outlines', {:lc_lt => {:fixture_location => "#{CQL_FEATURE_FIXTURES_DIRECTORY}/scen_outlines/line_count",
155
+ :expected_results => {0 => [],
156
+ 1 => [],
157
+ 2 => [{"name" => "1 line"}],
158
+ 3 => [{"name" => "1 line"}, {"name" => "2 lines"}],
159
+ 4 => [{"name" => "1 line"}, {"name" => "2 lines"}, {"name" => "3 lines"}],
160
+ 5 => [{"name" => "1 line"}, {"name" => "2 lines"}, {"name" => "3 lines"}, {"name" => "4 lines"}]}},
161
+ :lc_lte => {:fixture_location => "#{CQL_FEATURE_FIXTURES_DIRECTORY}/scen_outlines/line_count",
162
+ :expected_results => {0 => [],
163
+ 1 => [{"name" => "1 line"}],
164
+ 2 => [{"name" => "1 line"}, {"name" => "2 lines"}],
165
+ 3 => [{"name" => "1 line"}, {"name" => "2 lines"}, {"name" => "3 lines"}],
166
+ 4 => [{"name" => "1 line"}, {"name" => "2 lines"}, {"name" => "3 lines"}, {"name" => "4 lines"}],
167
+ 5 => [{"name" => "1 line"}, {"name" => "2 lines"}, {"name" => "3 lines"}, {"name" => "4 lines"}]}},
168
+ :lc_gt => {:fixture_location => "#{CQL_FEATURE_FIXTURES_DIRECTORY}/scen_outlines/line_count",
169
+ :expected_results => {0 => [{"name" => "1 line"}, {"name" => "2 lines"}, {"name" => "3 lines"}, {"name" => "4 lines"}],
170
+ 1 => [{"name" => "2 lines"}, {"name" => "3 lines"}, {"name" => "4 lines"}],
171
+ 2 => [{"name" => "3 lines"}, {"name" => "4 lines"}],
172
+ 3 => [{"name" => "4 lines"}],
173
+ 4 => []}},
174
+ :lc_gte => {:fixture_location => "#{CQL_FEATURE_FIXTURES_DIRECTORY}/scen_outlines/line_count",
175
+ :expected_results => {0 => [{"name" => "1 line"}, {"name" => "2 lines"}, {"name" => "3 lines"}, {"name" => "4 lines"}],
176
+ 1 => [{"name" => "1 line"}, {"name" => "2 lines"}, {"name" => "3 lines"}, {"name" => "4 lines"}],
177
+ 2 => [{"name" => "2 lines"}, {"name" => "3 lines"}, {"name" => "4 lines"}],
178
+ 3 => [{"name" => "3 lines"}, {"name" => "4 lines"}],
179
+ 4 => [{"name" => "4 lines"}],
180
+ 5 => []}}}
181
+
182
+
183
+ it_behaves_like 'a line filterable target set', 'outlines', {:exact_line => {:fixture_location => "#{CQL_FEATURE_FIXTURES_DIRECTORY}/scen_outlines/line_filter",
184
+ :expected_results => {'all match' => [{"name" => "sc1"}, {"name" => "sc2"}],
185
+ 'green eggs and ham' => [{"name" => "sc1"}],
186
+ 'no match' => []}},
187
+ :regexp => {:fixture_location => "#{CQL_FEATURE_FIXTURES_DIRECTORY}/scen_outlines/line_filter",
188
+ :expected_results => {/all/ => [{"name" => "sc1"}, {"name" => "sc2"}],
189
+ /green/ => [{"name" => "sc1"}],
190
+ /will not be found/ => []}}}
191
+
192
+
193
+ it_behaves_like 'a name filterable target set', 'outlines', {:exact_name => {:fixture_location => "#{CQL_FEATURE_FIXTURES_DIRECTORY}/scen_outlines/name_filter",
194
+ :expected_results => {'name1' => [{"name" => "name1"}]}},
195
+ :regexp => {:fixture_location => "#{CQL_FEATURE_FIXTURES_DIRECTORY}/scen_outlines/name_filter",
196
+ :expected_results => {/name/ => [{"name" => "name1"}, {"name" => "name2"}, {"name" => "name3"}],
197
+ /name1/ => [{"name" => "name1"}]}}
198
+ }
199
+
160
200
  # # Example count
161
201
  end
@@ -17,7 +17,7 @@ shared_examples_for 'a line count filterable target set' do |target_type, test_d
17
17
  with lc lt number
18
18
  end
19
19
 
20
- expect(result).to eq(expected)
20
+ expect(result).to match_array(expected)
21
21
  end
22
22
  end
23
23
 
@@ -33,7 +33,7 @@ shared_examples_for 'a line count filterable target set' do |target_type, test_d
33
33
  with lc lte number
34
34
  end
35
35
 
36
- expect(result).to eq(expected)
36
+ expect(result).to match_array(expected)
37
37
  end
38
38
  end
39
39
 
@@ -49,7 +49,7 @@ shared_examples_for 'a line count filterable target set' do |target_type, test_d
49
49
  with lc gt number
50
50
  end
51
51
 
52
- expect(result).to eq(expected)
52
+ expect(result).to match_array(expected)
53
53
  end
54
54
  end
55
55
 
@@ -65,7 +65,7 @@ shared_examples_for 'a line count filterable target set' do |target_type, test_d
65
65
  with lc gte number
66
66
  end
67
67
 
68
- expect(result).to eq(expected)
68
+ expect(result).to match_array(expected)
69
69
  end
70
70
  end
71
71
 
@@ -2,17 +2,19 @@ require 'spec_helper'
2
2
 
3
3
  describe "cql" do
4
4
 
5
- describe "file parsing" do
6
- it 'should find the physical files' do
7
- gs = CQL::Repository.new("#{@feature_fixtures_directory}/scenario/simple")
8
- result = CQL::MapReduce.uri(gs.parsed_feature_files)
9
-
10
- expect(result[0]).to match(/simple\.feature/)
11
- expect(result[1]).to match(/test\.feature/)
12
- expect(result[2]).to match(/test2\.feature/)
13
- expect(result[3]).to match(/test_full\.feature/)
14
- end
15
- end
5
+ # describe "file parsing" do
6
+ # it 'should find the physical files' do
7
+ # skip("This is possibly no longer be needed")
8
+ #
9
+ # gs = CQL::Repository.new("#{@feature_fixtures_directory}/scenario/simple")
10
+ # result = CQL::MapReduce.uri(gs.parsed_feature_files)
11
+ #
12
+ # expect(result[0]).to match(/simple\.feature/)
13
+ # expect(result[1]).to match(/test\.feature/)
14
+ # expect(result[2]).to match(/test2\.feature/)
15
+ # expect(result[3]).to match(/test_full\.feature/)
16
+ # end
17
+ # end
16
18
 
17
19
  #it 'should filter by count functions' do
18
20
  # input = [{"keyword"=>"Feature", "name"=>"f1_4_scenarios_5_so", "line"=>1, "description"=>"", "id"=>"f1-4-scenarios-5-so", "uri"=>"C:/Users/jarrod/dev/gql/spec/../fixtures/features/combined/a/f1_4_scenarios_5_so.feature", "elements"=>[{"keyword"=>"Scenario", "name"=>"f1_scen1", "line"=>3, "description"=>"", "id"=>"f1-4-scenarios-5-so;f1-scen1", "type"=>"scenario", "steps"=>[{"keyword"=>"Given ", "name"=>"Something", "line"=>4}, {"keyword"=>"Then ", "name"=>"something else", "line"=>5}]}, {"keyword"=>"Scenario", "name"=>"f1_scen2", "line"=>7, "description"=>"", "id"=>"f1-4-scenarios-5-so;f1-scen2", "type"=>"scenario", "steps"=>[{"keyword"=>"Given ", "name"=>"Something", "line"=>8}, {"keyword"=>"Then ", "name"=>"something else", "line"=>9}]}, {"keyword"=>"Scenario", "name"=>"f1_scen3", "line"=>11, "description"=>"", "id"=>"f1-4-scenarios-5-so;f1-scen3", "type"=>"scenario", "steps"=>[{"keyword"=>"Given ", "name"=>"Something", "line"=>12}, {"keyword"=>"Then ", "name"=>"something else", "line"=>13}]}, {"keyword"=>"Scenario", "name"=>"f1_scen4", "line"=>15, "description"=>"", "id"=>"f1-4-scenarios-5-so;f1-scen4", "type"=>"scenario", "steps"=>[{"keyword"=>"Given ", "name"=>"Something", "line"=>16}, {"keyword"=>"Then ", "name"=>"something else", "line"=>17}]}, {"keyword"=>"Scenario Outline", "name"=>"f1_so1", "line"=>19, "description"=>"", "id"=>"f1-4-scenarios-5-so;f1-so1", "type"=>"scenario_outline", "steps"=>[{"keyword"=>"Given ", "name"=>"blah <e>", "line"=>20}], "examples"=>[{"keyword"=>"Examples", "name"=>"", "line"=>22, "description"=>"", "id"=>"f1-4-scenarios-5-so;f1-so1;", "rows"=>[{"cells"=>["e"], "line"=>23, "id"=>"f1-4-scenarios-5-so;f1-so1;;1"}, {"cells"=>["r"], "line"=>24, "id"=>"f1-4-scenarios-5-so;f1-so1;;2"}]}]}, {"keyword"=>"Scenario Outline", "name"=>"f1_so2", "line"=>26, "description"=>"", "id"=>"f1-4-scenarios-5-so;f1-so2", "type"=>"scenario_outline", "steps"=>[{"keyword"=>"Given ", "name"=>"blah <e>", "line"=>27}], "examples"=>[{"keyword"=>"Examples", "name"=>"", "line"=>29, "description"=>"", "id"=>"f1-4-scenarios-5-so;f1-so2;", "rows"=>[{"cells"=>["e"], "line"=>30, "id"=>"f1-4-scenarios-5-so;f1-so2;;1"}, {"cells"=>["r"], "line"=>31, "id"=>"f1-4-scenarios-5-so;f1-so2;;2"}]}]}, {"keyword"=>"Scenario Outline", "name"=>"f1_so3", "line"=>33, "description"=>"", "id"=>"f1-4-scenarios-5-so;f1-so3", "type"=>"scenario_outline", "steps"=>[{"keyword"=>"Given ", "name"=>"blah <e>", "line"=>34}], "examples"=>[{"keyword"=>"Examples", "name"=>"", "line"=>36, "description"=>"", "id"=>"f1-4-scenarios-5-so;f1-so3;", "rows"=>[{"cells"=>["e"], "line"=>37, "id"=>"f1-4-scenarios-5-so;f1-so3;;1"}, {"cells"=>["r"], "line"=>38, "id"=>"f1-4-scenarios-5-so;f1-so3;;2"}]}]}, {"keyword"=>"Scenario Outline", "name"=>"f1_so4", "line"=>40, "description"=>"", "id"=>"f1-4-scenarios-5-so;f1-so4", "type"=>"scenario_outline", "steps"=>[{"keyword"=>"Given ", "name"=>"blah <e>", "line"=>41}], "examples"=>[{"keyword"=>"Examples", "name"=>"", "line"=>43, "description"=>"", "id"=>"f1-4-scenarios-5-so;f1-so4;", "rows"=>[{"cells"=>["e"], "line"=>44, "id"=>"f1-4-scenarios-5-so;f1-so4;;1"}, {"cells"=>["r"], "line"=>45, "id"=>"f1-4-scenarios-5-so;f1-so4;;2"}]}]}, {"keyword"=>"Scenario Outline", "name"=>"f1_so5", "line"=>47, "description"=>"", "id"=>"f1-4-scenarios-5-so;f1-so5", "type"=>"scenario_outline", "steps"=>[{"keyword"=>"Given ", "name"=>"blah <e>", "line"=>48}], "examples"=>[{"keyword"=>"Examples", "name"=>"", "line"=>50, "description"=>"", "id"=>"f1-4-scenarios-5-so;f1-so5;", "rows"=>[{"cells"=>["e"], "line"=>51, "id"=>"f1-4-scenarios-5-so;f1-so5;;1"}, {"cells"=>["r"], "line"=>52, "id"=>"f1-4-scenarios-5-so;f1-so5;;2"}]}]}]},
@@ -7,21 +7,17 @@ describe "cql" do
7
7
 
8
8
  repo = CQL::Repository.new("#{@feature_fixtures_directory}/got")
9
9
 
10
- result = repo.query do
10
+ before_dump = Marshal.dump(repo)
11
+
12
+ repo.query do
11
13
  select name
12
14
  from scenarios
13
- with tags '@Lannister'
14
15
  end
15
16
 
17
+ after_dump = Marshal.dump(repo)
16
18
 
17
- result = repo.query do
18
- select name
19
- from scenarios
20
- with line /child/
21
- end
22
19
 
23
- expect(result).to eq([{"name" => "Strange relations"},
24
- {"name" => "Bastard Child"}])
20
+ expect(before_dump).to eq(after_dump)
25
21
  end
26
22
  end
27
23
  end