sparkql 1.2.4 → 1.2.8

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.
@@ -125,19 +125,23 @@ class ParserTest < Test::Unit::TestCase
125
125
  end
126
126
 
127
127
  def test_function_days
128
- d = Date.today
129
- start = Time.utc(d.year,d.month,d.day,0,0,0)
130
- filter = "OriginalEntryTimestamp Ge days(-7)"
128
+ dt = DateTime.new(2021, 2, 22, 0, 0, 0, 0)
129
+ DateTime.expects(:now).returns(dt)
131
130
  @parser = Parser.new
132
- expressions = @parser.parse(filter)
133
- assert !@parser.errors?, "errors #{@parser.errors.inspect}"
134
- assert_equal 'days(-7)', expressions.first[:condition]
135
-
136
- vals = expressions.first[:value].split('-')
131
+ expressions = @parser.parse "ExpirationDate Gt days(10)"
132
+ assert !@parser.errors?
133
+ assert_equal "2021-03-04", expressions.first[:value]
134
+ assert_equal 'days(10)', expressions.first[:condition]
135
+ end
137
136
 
138
- test_time = Time.utc(vals[0].to_i, vals[1].to_i, vals[2].to_i)
139
-
140
- assert (-605000 < test_time - start && -604000 > test_time - start), "Time range off by more than five seconds #{test_time - start} '#{test_time} - #{start}'"
137
+ def test_function_weekdays
138
+ dt = DateTime.new(2021, 2, 22, 0, 0, 0, 0)
139
+ DateTime.expects(:now).returns(dt)
140
+ @parser = Parser.new
141
+ expressions = @parser.parse "ExpirationDate Gt weekdays(10)"
142
+ assert !@parser.errors?
143
+ assert_equal "2021-03-08", expressions.first[:value]
144
+ assert_equal 'weekdays(10)', expressions.first[:condition]
141
145
  end
142
146
 
143
147
  def test_function_now
@@ -388,10 +392,40 @@ class ParserTest < Test::Unit::TestCase
388
392
  test "invalid regex" do
389
393
  filter = "ParcelNumber Eq regex('[1234', '')"
390
394
  @parser = Parser.new
391
- expressions = @parser.parse(filter)
395
+ @parser.parse(filter)
392
396
  assert @parser.errors?, "Parser error expected due to invalid regex"
393
397
  end
394
398
 
399
+ test "dayofyear function parses" do
400
+ filter = "dayofyear(DatetimeField) Eq 2012"
401
+ @parser = Parser.new
402
+ expressions = @parser.parse(filter)
403
+ assert !@parser.errors?, @parser.errors.inspect
404
+ function = expressions.first[:field_manipulations]
405
+ assert_equal 'dayofyear', function[:function_name]
406
+ assert_equal 'DatetimeField', function[:function_parameters].first
407
+ end
408
+
409
+ test "dayofweek function parses" do
410
+ filter = "dayofweek(DatetimeField) Eq 7"
411
+ @parser = Parser.new
412
+ expressions = @parser.parse(filter)
413
+ assert !@parser.errors?, @parser.errors.inspect
414
+ function = expressions.first[:field_manipulations]
415
+ assert_equal 'dayofweek', function[:function_name]
416
+ assert_equal 'DatetimeField', function[:function_parameters].first
417
+ end
418
+
419
+ test "weekdays function resolves" do
420
+ filter = "DatetimeField Eq weekdays(10)"
421
+ @parser = Parser.new
422
+ expressions = @parser.parse(filter)
423
+ assert !@parser.errors?, @parser.errors.inspect
424
+ function = expressions.first
425
+ assert_equal 'weekdays', function[:function_name]
426
+ assert_equal 10, function[:function_parameters].first
427
+ end
428
+
395
429
  test "allow timezone offsets" do
396
430
  values = [
397
431
  "2013-07-26",
@@ -418,7 +452,7 @@ class ParserTest < Test::Unit::TestCase
418
452
  assert_equal expressions.first[:value], value, "#{value} failed"
419
453
  end
420
454
  end
421
-
455
+
422
456
  test "Location Eq polygon()" do
423
457
  filter = "Location Eq polygon('35.12 -68.33, 35.13 -68.33, 35.13 -68.32, 35.12 -68.32')"
424
458
  @parser = Parser.new
@@ -1180,6 +1214,24 @@ class ParserTest < Test::Unit::TestCase
1180
1214
  assert_equal '0', expressions.first[:value]
1181
1215
  end
1182
1216
 
1217
+ test 'Arithmetic grouping should not influence expression grouping' do
1218
+ filter = "(BathroomsTotalDecimal add (5 mul 5)) Eq ((3.4 add 2.6) mul (1 add 1))"
1219
+ @parser = Parser.new
1220
+ expressions = @parser.parse(filter)
1221
+ assert !@parser.errors?
1222
+ assert_equal 0, expressions.first[:level]
1223
+ assert_equal 0, expressions.first[:block_group]
1224
+
1225
+ filter = "((BathroomsTotalDecimal add (5 mul 5)) Eq ((3.4 add 2.6) mul (1 add 1))) And BathroomsTotalDecimal Eq 5"
1226
+ @parser = Parser.new
1227
+ expressions = @parser.parse(filter)
1228
+ assert !@parser.errors?
1229
+ assert_equal 1, expressions.first[:level]
1230
+ assert_equal 1, expressions.first[:block_group]
1231
+ assert_equal 0, expressions.last[:level]
1232
+ assert_equal 0, expressions.last[:block_group]
1233
+ end
1234
+
1183
1235
  private
1184
1236
 
1185
1237
  def parser_errors(filter)
metadata CHANGED
@@ -1,99 +1,99 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sparkql
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.4
4
+ version: 1.2.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Wade McEwen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-12-13 00:00:00.000000000 Z
11
+ date: 2021-08-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: georuby
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '2.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '2.0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: racc
28
+ name: ci_reporter
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 1.4.8
33
+ version: '1.6'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 1.4.8
40
+ version: '1.6'
41
41
  - !ruby/object:Gem::Dependency
42
- name: rake
42
+ name: mocha
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 0.9.2
47
+ version: 0.12.0
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ~>
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 0.9.2
54
+ version: 0.12.0
55
55
  - !ruby/object:Gem::Dependency
56
- name: test-unit
56
+ name: racc
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ~>
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 2.1.0
61
+ version: 1.4.8
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ~>
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 2.1.0
68
+ version: 1.4.8
69
69
  - !ruby/object:Gem::Dependency
70
- name: ci_reporter
70
+ name: rake
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ~>
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '1.6'
75
+ version: 0.9.2
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ~>
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '1.6'
82
+ version: 0.9.2
83
83
  - !ruby/object:Gem::Dependency
84
- name: mocha
84
+ name: test-unit
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ~>
87
+ - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: 0.12.0
89
+ version: 2.1.0
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ~>
94
+ - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: 0.12.0
96
+ version: 2.1.0
97
97
  description: Specification and base implementation of the Spark API parsing system.
98
98
  email:
99
99
  - wade@fbsdata.com
@@ -101,8 +101,7 @@ executables: []
101
101
  extensions: []
102
102
  extra_rdoc_files: []
103
103
  files:
104
- - .gitignore
105
- - .ruby-version
104
+ - ".gitignore"
106
105
  - CHANGELOG.md
107
106
  - GRAMMAR.md
108
107
  - Gemfile
@@ -149,17 +148,17 @@ require_paths:
149
148
  - lib
150
149
  required_ruby_version: !ruby/object:Gem::Requirement
151
150
  requirements:
152
- - - ! '>='
151
+ - - ">="
153
152
  - !ruby/object:Gem::Version
154
- version: '0'
153
+ version: '2.3'
155
154
  required_rubygems_version: !ruby/object:Gem::Requirement
156
155
  requirements:
157
- - - ! '>='
156
+ - - ">="
158
157
  - !ruby/object:Gem::Version
159
158
  version: '0'
160
159
  requirements: []
161
160
  rubyforge_project: sparkql
162
- rubygems_version: 2.2.5
161
+ rubygems_version: 2.7.6
163
162
  signing_key:
164
163
  specification_version: 4
165
164
  summary: API Parser engine for filter searching
data/.ruby-version DELETED
@@ -1 +0,0 @@
1
- 1.9.3