cql 1.2.0 → 1.2.1
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/lib/cql/version.rb +1 -1
- metadata +43 -59
- data/spec/dsl_spec.rb +0 -289
- data/spec/filter_example_spec.rb +0 -65
- data/spec/filter_feature_dsl_spec.rb +0 -285
- data/spec/filter_sso_spec.rb +0 -201
- data/spec/line_count_filterable_specs.rb +0 -73
- data/spec/line_filterable_specs.rb +0 -51
- data/spec/map_reduce_spec.rb +0 -134
- data/spec/multiple_queries_spec.rb +0 -23
- data/spec/name_filterable_specs.rb +0 -51
- data/spec/repository_spec.rb +0 -21
- data/spec/select_feature_dsl_spec.rb +0 -113
- data/spec/select_scen_outline_dsl_spec.rb +0 -233
- data/spec/select_scenario_dsl_spec.rb +0 -131
- data/spec/spec_helper.rb +0 -31
- data/spec/tag_filterable_specs.rb +0 -106
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 288eac18d6d8ed4eeb202c52abc6087b811c52da
|
4
|
+
data.tar.gz: caae2839ce9f847f7bdcb98ae6b4200b79dec243
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 042ea7bee70217efbacd33eb7426269a43893a74fdf7f6230a75ab50e36acbd7b0cb1f7893c6079ee524160d57ec9e8ac0f5a6197688005aa57999d0ff311c04
|
7
|
+
data.tar.gz: e010fbf5f25a61123a40a0d7f0cfbdde84ea187f9282c4ba305b041076c44ed3084e51f344733364b9aeef8236583141e8ad6b990226c16c5a88269acd5a9b88
|
data/lib/cql/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cql
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eric Kessler
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-09-
|
12
|
+
date: 2016-09-28 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: cuke_modeler
|
@@ -29,100 +29,114 @@ dependencies:
|
|
29
29
|
name: rake
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
|
-
- - "
|
32
|
+
- - "<"
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version:
|
34
|
+
version: 12.0.0
|
35
35
|
type: :development
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
|
-
- - "
|
39
|
+
- - "<"
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version:
|
41
|
+
version: 12.0.0
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
43
|
name: rspec
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
46
|
- - "~>"
|
47
47
|
- !ruby/object:Gem::Version
|
48
|
-
version: '
|
48
|
+
version: '3.0'
|
49
49
|
type: :development
|
50
50
|
prerelease: false
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
53
|
- - "~>"
|
54
54
|
- !ruby/object:Gem::Version
|
55
|
-
version: '
|
55
|
+
version: '3.0'
|
56
56
|
- !ruby/object:Gem::Dependency
|
57
57
|
name: cucumber
|
58
58
|
requirement: !ruby/object:Gem::Requirement
|
59
59
|
requirements:
|
60
|
-
- - "
|
60
|
+
- - "<"
|
61
61
|
- !ruby/object:Gem::Version
|
62
|
-
version:
|
62
|
+
version: 3.0.0
|
63
63
|
type: :development
|
64
64
|
prerelease: false
|
65
65
|
version_requirements: !ruby/object:Gem::Requirement
|
66
66
|
requirements:
|
67
|
-
- - "
|
67
|
+
- - "<"
|
68
68
|
- !ruby/object:Gem::Version
|
69
|
-
version:
|
69
|
+
version: 3.0.0
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: simplecov
|
72
72
|
requirement: !ruby/object:Gem::Requirement
|
73
73
|
requirements:
|
74
|
-
- - "
|
74
|
+
- - "<"
|
75
75
|
- !ruby/object:Gem::Version
|
76
|
-
version:
|
76
|
+
version: 1.0.0
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
79
|
version_requirements: !ruby/object:Gem::Requirement
|
80
80
|
requirements:
|
81
|
-
- - "
|
81
|
+
- - "<"
|
82
82
|
- !ruby/object:Gem::Version
|
83
|
-
version:
|
83
|
+
version: 1.0.0
|
84
84
|
- !ruby/object:Gem::Dependency
|
85
85
|
name: racatt
|
86
86
|
requirement: !ruby/object:Gem::Requirement
|
87
87
|
requirements:
|
88
|
-
- - "
|
88
|
+
- - "~>"
|
89
89
|
- !ruby/object:Gem::Version
|
90
|
-
version: '0'
|
90
|
+
version: '1.0'
|
91
91
|
type: :development
|
92
92
|
prerelease: false
|
93
93
|
version_requirements: !ruby/object:Gem::Requirement
|
94
94
|
requirements:
|
95
|
-
- - "
|
95
|
+
- - "~>"
|
96
96
|
- !ruby/object:Gem::Version
|
97
|
-
version: '0'
|
97
|
+
version: '1.0'
|
98
98
|
- !ruby/object:Gem::Dependency
|
99
99
|
name: coveralls
|
100
100
|
requirement: !ruby/object:Gem::Requirement
|
101
101
|
requirements:
|
102
|
-
- - "
|
102
|
+
- - "<"
|
103
103
|
- !ruby/object:Gem::Version
|
104
|
-
version:
|
104
|
+
version: 1.0.0
|
105
105
|
type: :development
|
106
106
|
prerelease: false
|
107
107
|
version_requirements: !ruby/object:Gem::Requirement
|
108
108
|
requirements:
|
109
|
-
- - "
|
109
|
+
- - "<"
|
110
110
|
- !ruby/object:Gem::Version
|
111
|
-
version:
|
111
|
+
version: 1.0.0
|
112
112
|
- !ruby/object:Gem::Dependency
|
113
113
|
name: relish
|
114
114
|
requirement: !ruby/object:Gem::Requirement
|
115
115
|
requirements:
|
116
|
-
- - "
|
116
|
+
- - "~>"
|
117
117
|
- !ruby/object:Gem::Version
|
118
|
-
version: '0'
|
118
|
+
version: '0.0'
|
119
119
|
type: :development
|
120
120
|
prerelease: false
|
121
121
|
version_requirements: !ruby/object:Gem::Requirement
|
122
122
|
requirements:
|
123
|
-
- - "
|
123
|
+
- - "~>"
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0.0'
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: bundler
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
129
|
+
requirements:
|
130
|
+
- - "~>"
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: '1.5'
|
133
|
+
type: :development
|
134
|
+
prerelease: false
|
135
|
+
version_requirements: !ruby/object:Gem::Requirement
|
136
|
+
requirements:
|
137
|
+
- - "~>"
|
124
138
|
- !ruby/object:Gem::Version
|
125
|
-
version: '
|
139
|
+
version: '1.5'
|
126
140
|
description: Cucumber Query Language
|
127
141
|
email: morrow748@gmail.com
|
128
142
|
executables: []
|
@@ -136,21 +150,6 @@ files:
|
|
136
150
|
- lib/cql/map_reduce.rb
|
137
151
|
- lib/cql/sso_filters.rb
|
138
152
|
- lib/cql/version.rb
|
139
|
-
- spec/dsl_spec.rb
|
140
|
-
- spec/filter_example_spec.rb
|
141
|
-
- spec/filter_feature_dsl_spec.rb
|
142
|
-
- spec/filter_sso_spec.rb
|
143
|
-
- spec/line_count_filterable_specs.rb
|
144
|
-
- spec/line_filterable_specs.rb
|
145
|
-
- spec/map_reduce_spec.rb
|
146
|
-
- spec/multiple_queries_spec.rb
|
147
|
-
- spec/name_filterable_specs.rb
|
148
|
-
- spec/repository_spec.rb
|
149
|
-
- spec/select_feature_dsl_spec.rb
|
150
|
-
- spec/select_scen_outline_dsl_spec.rb
|
151
|
-
- spec/select_scenario_dsl_spec.rb
|
152
|
-
- spec/spec_helper.rb
|
153
|
-
- spec/tag_filterable_specs.rb
|
154
153
|
homepage: https://github.com/enkessler/cql
|
155
154
|
licenses:
|
156
155
|
- MIT
|
@@ -183,19 +182,4 @@ rubygems_version: 2.2.5
|
|
183
182
|
signing_key:
|
184
183
|
specification_version: 4
|
185
184
|
summary: A gem providing functionality to query a Cucumber test suite.
|
186
|
-
test_files:
|
187
|
-
- spec/dsl_spec.rb
|
188
|
-
- spec/filter_example_spec.rb
|
189
|
-
- spec/filter_feature_dsl_spec.rb
|
190
|
-
- spec/filter_sso_spec.rb
|
191
|
-
- spec/line_count_filterable_specs.rb
|
192
|
-
- spec/line_filterable_specs.rb
|
193
|
-
- spec/map_reduce_spec.rb
|
194
|
-
- spec/multiple_queries_spec.rb
|
195
|
-
- spec/name_filterable_specs.rb
|
196
|
-
- spec/repository_spec.rb
|
197
|
-
- spec/select_feature_dsl_spec.rb
|
198
|
-
- spec/select_scenario_dsl_spec.rb
|
199
|
-
- spec/select_scen_outline_dsl_spec.rb
|
200
|
-
- spec/spec_helper.rb
|
201
|
-
- spec/tag_filterable_specs.rb
|
185
|
+
test_files: []
|
data/spec/dsl_spec.rb
DELETED
@@ -1,289 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe 'dsl' do
|
4
|
-
|
5
|
-
|
6
|
-
describe 'invalid query structure' do
|
7
|
-
|
8
|
-
it "will complain if no 'from' clause is specified" do
|
9
|
-
gs = CQL::Repository.new("#{@feature_fixtures_directory}/scenario/simple")
|
10
|
-
|
11
|
-
expect {
|
12
|
-
gs.query do
|
13
|
-
select
|
14
|
-
features
|
15
|
-
end
|
16
|
-
}.to raise_error(ArgumentError, "A query must specify a 'from' clause")
|
17
|
-
end
|
18
|
-
|
19
|
-
it "will complain if no 'select' clause is specified" do
|
20
|
-
gs = CQL::Repository.new("#{@feature_fixtures_directory}/scenario/simple")
|
21
|
-
|
22
|
-
expect {
|
23
|
-
gs.query do
|
24
|
-
from features
|
25
|
-
end
|
26
|
-
}.to raise_error(ArgumentError, "A query must specify a 'select' clause")
|
27
|
-
end
|
28
|
-
|
29
|
-
end
|
30
|
-
|
31
|
-
|
32
|
-
describe 'clause ordering' do
|
33
|
-
|
34
|
-
it 'handles intermixed clauses' do
|
35
|
-
# Clause ordering doesn't matter as long as any given type of clause is ordered correctly with respect to its multiple uses
|
36
|
-
|
37
|
-
gs = CQL::Repository.new("#{@feature_fixtures_directory}/scenario/simple")
|
38
|
-
|
39
|
-
results = gs.query do
|
40
|
-
with { |scenario| scenario.name =~ /slurping/ }
|
41
|
-
as thing1
|
42
|
-
transform :self => lambda { |thing1| 1 }
|
43
|
-
select :self
|
44
|
-
as thing2
|
45
|
-
with scenarios => lambda { |scenario| scenario.name =~ /3/ }
|
46
|
-
from scenarios
|
47
|
-
select :self
|
48
|
-
transform :self => lambda { |thing2| 2 }
|
49
|
-
select name
|
50
|
-
end
|
51
|
-
|
52
|
-
expect(results.first).to eq('thing1' => 1, 'thing2' => 2, 'name' => 'Testing the slurping 3')
|
53
|
-
end
|
54
|
-
|
55
|
-
end
|
56
|
-
|
57
|
-
|
58
|
-
describe "select" do
|
59
|
-
|
60
|
-
it 'correctly selects a single attribute from a model' do
|
61
|
-
model = CukeModeler::CqlTestModel.new
|
62
|
-
model.attribute_1 = 'foo'
|
63
|
-
|
64
|
-
repo = CQL::Repository.new(model)
|
65
|
-
|
66
|
-
result = repo.query do
|
67
|
-
select attribute_1
|
68
|
-
from cql_test_models
|
69
|
-
end
|
70
|
-
|
71
|
-
|
72
|
-
expect(result).to eq([{'attribute_1' => 'foo'}])
|
73
|
-
end
|
74
|
-
|
75
|
-
it 'correctly selects multiple attributes from a model' do
|
76
|
-
model = CukeModeler::CqlTestModel.new
|
77
|
-
model.attribute_1 = 'foo'
|
78
|
-
model.attribute_2 = 'bar'
|
79
|
-
|
80
|
-
repo = CQL::Repository.new(model)
|
81
|
-
|
82
|
-
result = repo.query do
|
83
|
-
select attribute_1, attribute_2
|
84
|
-
from cql_test_models
|
85
|
-
end
|
86
|
-
|
87
|
-
|
88
|
-
expect(result).to eq([{'attribute_1' => 'foo',
|
89
|
-
'attribute_2' => 'bar'}])
|
90
|
-
end
|
91
|
-
|
92
|
-
it 'complains if an unknown special attribute is queried' do
|
93
|
-
gs = CQL::Repository.new("#{@feature_fixtures_directory}/scenario/simple")
|
94
|
-
|
95
|
-
expect {
|
96
|
-
gs.query do
|
97
|
-
select :foo
|
98
|
-
from scenarios
|
99
|
-
end
|
100
|
-
}.to raise_error(ArgumentError, ":foo is not a valid attribute for selection.")
|
101
|
-
end
|
102
|
-
|
103
|
-
|
104
|
-
describe "multiple selections" do
|
105
|
-
|
106
|
-
it 'can freely mix empty selections and attribute selections' do
|
107
|
-
gs = CQL::Repository.new("#{@feature_fixtures_directory}/scenario/simple")
|
108
|
-
|
109
|
-
base_result = gs.query do
|
110
|
-
select :self
|
111
|
-
select name
|
112
|
-
select :self
|
113
|
-
from scenarios
|
114
|
-
end
|
115
|
-
|
116
|
-
|
117
|
-
expect(
|
118
|
-
gs.query do
|
119
|
-
select
|
120
|
-
select name
|
121
|
-
select
|
122
|
-
from scenarios
|
123
|
-
end
|
124
|
-
).to eq(base_result)
|
125
|
-
end
|
126
|
-
|
127
|
-
end
|
128
|
-
end
|
129
|
-
|
130
|
-
describe "from" do
|
131
|
-
|
132
|
-
it "can handle an empty 'from' clause" do
|
133
|
-
gs = CQL::Repository.new("#{@feature_fixtures_directory}/scenario/simple")
|
134
|
-
|
135
|
-
result = gs.query do
|
136
|
-
select name
|
137
|
-
from
|
138
|
-
end
|
139
|
-
|
140
|
-
expect(result).to eq([])
|
141
|
-
end
|
142
|
-
|
143
|
-
describe "multiple targets" do
|
144
|
-
|
145
|
-
it 'raises an exception for inapplicable attributes' do
|
146
|
-
gs = CQL::Repository.new("#{@feature_fixtures_directory}/scenario/simple")
|
147
|
-
|
148
|
-
expect {
|
149
|
-
gs.query do
|
150
|
-
select name, steps
|
151
|
-
from features
|
152
|
-
from scenarios
|
153
|
-
end
|
154
|
-
}.to raise_error
|
155
|
-
end
|
156
|
-
|
157
|
-
end
|
158
|
-
|
159
|
-
describe 'shorthand' do
|
160
|
-
|
161
|
-
it 'should consider an exact match over a pluralization' do
|
162
|
-
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.')
|
163
|
-
end
|
164
|
-
|
165
|
-
it 'raises an exception if the shorthand form of a class cannot be mapped to a real class' do
|
166
|
-
gs = CQL::Repository.new("#{@feature_fixtures_directory}/scenario/simple")
|
167
|
-
|
168
|
-
expect {
|
169
|
-
gs.query do
|
170
|
-
select name
|
171
|
-
from not_a_real_class
|
172
|
-
end
|
173
|
-
}.to raise_error(ArgumentError, "Class 'CukeModeler::NotARealClass' does not exist")
|
174
|
-
|
175
|
-
end
|
176
|
-
|
177
|
-
it 'can freely mix shorthand and long-form names' do
|
178
|
-
gs = CQL::Repository.new("#{@feature_fixtures_directory}/scenario/simple")
|
179
|
-
|
180
|
-
# All long-form
|
181
|
-
base_result = gs.query do
|
182
|
-
select name
|
183
|
-
from CukeModeler::Scenario, CukeModeler::Feature
|
184
|
-
end
|
185
|
-
|
186
|
-
# All shorthand
|
187
|
-
expect(
|
188
|
-
gs.query do
|
189
|
-
select name
|
190
|
-
from scenarios, features
|
191
|
-
end
|
192
|
-
).to eq(base_result)
|
193
|
-
|
194
|
-
# A mix of both
|
195
|
-
expect(
|
196
|
-
gs.query do
|
197
|
-
select name
|
198
|
-
from CukeModeler::Scenario, features
|
199
|
-
end
|
200
|
-
).to eq(base_result)
|
201
|
-
end
|
202
|
-
|
203
|
-
end
|
204
|
-
|
205
|
-
end
|
206
|
-
|
207
|
-
describe "transform" do
|
208
|
-
|
209
|
-
describe "multiple targets" do
|
210
|
-
|
211
|
-
it 'does not apply more transforms than have been declared' do
|
212
|
-
gs = CQL::Repository.new("#{@feature_fixtures_directory}/scenario/simple")
|
213
|
-
|
214
|
-
results = gs.query do
|
215
|
-
select :self, :self, :self
|
216
|
-
as thing1, thing2, thing3
|
217
|
-
from scenarios
|
218
|
-
transform :self => lambda { |thing1| 1 }
|
219
|
-
transform :self => lambda { |thing2| 2 }
|
220
|
-
end
|
221
|
-
|
222
|
-
expect(results.first).to include('thing1' => 1, 'thing2' => 2)
|
223
|
-
expect(results.first).to_not include('thing3' => 1)
|
224
|
-
expect(results.first).to_not include('thing3' => 2)
|
225
|
-
end
|
226
|
-
|
227
|
-
end
|
228
|
-
|
229
|
-
end
|
230
|
-
|
231
|
-
|
232
|
-
describe 'with' do
|
233
|
-
|
234
|
-
describe 'targeted' do
|
235
|
-
|
236
|
-
it 'can handle predefined filters' do
|
237
|
-
gs = CQL::Repository.new(@feature_fixtures_directory)
|
238
|
-
|
239
|
-
expect {
|
240
|
-
gs.query do
|
241
|
-
select name
|
242
|
-
from features, scenarios, outlines
|
243
|
-
with scenarios => name(/test/)
|
244
|
-
end
|
245
|
-
}.to_not raise_error
|
246
|
-
end
|
247
|
-
|
248
|
-
it 'can handle a block filter' do
|
249
|
-
gs = CQL::Repository.new(@feature_fixtures_directory)
|
250
|
-
|
251
|
-
expect {
|
252
|
-
gs.query do
|
253
|
-
select name
|
254
|
-
from features, scenarios, outlines
|
255
|
-
with scenarios => lambda { |scenario| true }
|
256
|
-
end
|
257
|
-
}.to_not raise_error
|
258
|
-
end
|
259
|
-
|
260
|
-
it 'can handle shorthand targets' do
|
261
|
-
gs = CQL::Repository.new(@feature_fixtures_directory)
|
262
|
-
|
263
|
-
expect {
|
264
|
-
gs.query do
|
265
|
-
select name
|
266
|
-
from features, scenarios, outlines
|
267
|
-
with scenarios => name(/test/)
|
268
|
-
end
|
269
|
-
}.to_not raise_error
|
270
|
-
end
|
271
|
-
|
272
|
-
it 'can handle multiple targets' do
|
273
|
-
gs = CQL::Repository.new(@feature_fixtures_directory)
|
274
|
-
|
275
|
-
expect {
|
276
|
-
gs.query do
|
277
|
-
select name
|
278
|
-
from features, scenarios, outlines
|
279
|
-
with scenarios => lambda { |scenario| true },
|
280
|
-
outlines => lambda { |outline| true }
|
281
|
-
end
|
282
|
-
}.to_not raise_error
|
283
|
-
end
|
284
|
-
|
285
|
-
end
|
286
|
-
|
287
|
-
end
|
288
|
-
|
289
|
-
end
|