by_star 3.0.0 → 4.0.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/.github/workflows/mysql.yml +92 -0
- data/.github/workflows/postgresql.yml +99 -0
- data/.gitignore +6 -5
- data/.travis.yml +92 -61
- data/CHANGELOG.md +63 -44
- data/Gemfile +18 -18
- data/MIT-LICENSE +20 -20
- data/README.md +616 -577
- data/Rakefile +18 -18
- data/UPGRADING +4 -6
- data/by_star.gemspec +34 -34
- data/cleaner.rb +24 -24
- data/lib/by_star/base.rb +69 -68
- data/lib/by_star/between.rb +185 -156
- data/lib/by_star/directional.rb +35 -37
- data/lib/by_star/kernel/date.rb +41 -50
- data/lib/by_star/kernel/in_time_zone.rb +20 -0
- data/lib/by_star/kernel/time.rb +41 -41
- data/lib/by_star/normalization.rb +156 -127
- data/lib/by_star/orm/active_record/by_star.rb +75 -61
- data/lib/by_star/orm/mongoid/by_star.rb +90 -76
- data/lib/by_star/orm/mongoid/reorder.rb +23 -23
- data/lib/by_star/version.rb +3 -3
- data/lib/by_star.rb +18 -17
- data/spec/database.yml +15 -15
- data/spec/fixtures/active_record/models.rb +12 -12
- data/spec/fixtures/active_record/schema.rb +19 -19
- data/spec/fixtures/mongoid/models.rb +31 -31
- data/spec/fixtures/shared/seeds.rb +36 -26
- data/spec/gemfiles/Gemfile.rails +5 -0
- data/spec/gemfiles/Gemfile.rails32 +7 -0
- data/spec/gemfiles/Gemfile.rails40 +7 -7
- data/spec/gemfiles/Gemfile.rails41 +7 -7
- data/spec/gemfiles/Gemfile.rails42 +7 -7
- data/spec/gemfiles/Gemfile.rails50 +7 -10
- data/spec/gemfiles/Gemfile.rails51 +7 -10
- data/spec/gemfiles/Gemfile.rails52 +7 -0
- data/spec/gemfiles/Gemfile.rails60 +7 -0
- data/spec/gemfiles/Gemfile.rails61 +7 -0
- data/spec/integration/active_record/active_record_spec.rb +41 -38
- data/spec/integration/mongoid/mongoid_spec.rb +39 -37
- data/spec/integration/shared/at_time.rb +53 -0
- data/spec/integration/shared/between_dates.rb +99 -0
- data/spec/integration/shared/between_times.rb +99 -82
- data/spec/integration/shared/by_calendar_month.rb +55 -55
- data/spec/integration/shared/by_cweek.rb +54 -54
- data/spec/integration/shared/by_day.rb +120 -96
- data/spec/integration/shared/by_direction.rb +126 -172
- data/spec/integration/shared/by_fortnight.rb +48 -48
- data/spec/integration/shared/by_month.rb +50 -50
- data/spec/integration/shared/by_quarter.rb +49 -49
- data/spec/integration/shared/by_week.rb +54 -54
- data/spec/integration/shared/by_weekend.rb +49 -49
- data/spec/integration/shared/by_year.rb +48 -48
- data/spec/integration/shared/index_scope_parameter.rb +111 -0
- data/spec/integration/shared/offset_parameter.rb +32 -32
- data/spec/integration/shared/order_parameter.rb +36 -36
- data/spec/integration/shared/relative.rb +174 -174
- data/spec/spec_helper.rb +33 -29
- data/spec/unit/kernel_date_spec.rb +113 -113
- data/spec/unit/kernel_time_spec.rb +57 -57
- data/spec/unit/normalization_spec.rb +384 -305
- data/tmp/.gitignore +1 -1
- metadata +33 -21
- data/spec/gemfiles/Gemfile.master +0 -6
- data/spec/integration/shared/scope_parameter.rb +0 -73
data/tmp/.gitignore
CHANGED
@@ -1 +1 @@
|
|
1
|
-
*.log
|
1
|
+
*.log
|
metadata
CHANGED
@@ -1,30 +1,30 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: by_star
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 4.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Bigg
|
8
8
|
- Johnny Shields
|
9
|
-
autorequire:
|
9
|
+
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2023-01-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
-
- - "
|
18
|
+
- - ">="
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version:
|
20
|
+
version: 3.2.0
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
|
-
- - "
|
25
|
+
- - ">="
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version:
|
27
|
+
version: 3.2.0
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: chronic
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
@@ -113,16 +113,16 @@ dependencies:
|
|
113
113
|
name: mysql2
|
114
114
|
requirement: !ruby/object:Gem::Requirement
|
115
115
|
requirements:
|
116
|
-
- - "
|
116
|
+
- - ">="
|
117
117
|
- !ruby/object:Gem::Version
|
118
|
-
version: 0
|
118
|
+
version: '0'
|
119
119
|
type: :development
|
120
120
|
prerelease: false
|
121
121
|
version_requirements: !ruby/object:Gem::Requirement
|
122
122
|
requirements:
|
123
|
-
- - "
|
123
|
+
- - ">="
|
124
124
|
- !ruby/object:Gem::Version
|
125
|
-
version: 0
|
125
|
+
version: '0'
|
126
126
|
- !ruby/object:Gem::Dependency
|
127
127
|
name: rspec-rails
|
128
128
|
requirement: !ruby/object:Gem::Requirement
|
@@ -172,6 +172,8 @@ executables: []
|
|
172
172
|
extensions: []
|
173
173
|
extra_rdoc_files: []
|
174
174
|
files:
|
175
|
+
- ".github/workflows/mysql.yml"
|
176
|
+
- ".github/workflows/postgresql.yml"
|
175
177
|
- ".gitignore"
|
176
178
|
- ".travis.yml"
|
177
179
|
- CHANGELOG.md
|
@@ -187,6 +189,7 @@ files:
|
|
187
189
|
- lib/by_star/between.rb
|
188
190
|
- lib/by_star/directional.rb
|
189
191
|
- lib/by_star/kernel/date.rb
|
192
|
+
- lib/by_star/kernel/in_time_zone.rb
|
190
193
|
- lib/by_star/kernel/time.rb
|
191
194
|
- lib/by_star/normalization.rb
|
192
195
|
- lib/by_star/orm/active_record/by_star.rb
|
@@ -198,14 +201,20 @@ files:
|
|
198
201
|
- spec/fixtures/active_record/schema.rb
|
199
202
|
- spec/fixtures/mongoid/models.rb
|
200
203
|
- spec/fixtures/shared/seeds.rb
|
201
|
-
- spec/gemfiles/Gemfile.
|
204
|
+
- spec/gemfiles/Gemfile.rails
|
205
|
+
- spec/gemfiles/Gemfile.rails32
|
202
206
|
- spec/gemfiles/Gemfile.rails40
|
203
207
|
- spec/gemfiles/Gemfile.rails41
|
204
208
|
- spec/gemfiles/Gemfile.rails42
|
205
209
|
- spec/gemfiles/Gemfile.rails50
|
206
210
|
- spec/gemfiles/Gemfile.rails51
|
211
|
+
- spec/gemfiles/Gemfile.rails52
|
212
|
+
- spec/gemfiles/Gemfile.rails60
|
213
|
+
- spec/gemfiles/Gemfile.rails61
|
207
214
|
- spec/integration/active_record/active_record_spec.rb
|
208
215
|
- spec/integration/mongoid/mongoid_spec.rb
|
216
|
+
- spec/integration/shared/at_time.rb
|
217
|
+
- spec/integration/shared/between_dates.rb
|
209
218
|
- spec/integration/shared/between_times.rb
|
210
219
|
- spec/integration/shared/by_calendar_month.rb
|
211
220
|
- spec/integration/shared/by_cweek.rb
|
@@ -217,10 +226,10 @@ files:
|
|
217
226
|
- spec/integration/shared/by_week.rb
|
218
227
|
- spec/integration/shared/by_weekend.rb
|
219
228
|
- spec/integration/shared/by_year.rb
|
229
|
+
- spec/integration/shared/index_scope_parameter.rb
|
220
230
|
- spec/integration/shared/offset_parameter.rb
|
221
231
|
- spec/integration/shared/order_parameter.rb
|
222
232
|
- spec/integration/shared/relative.rb
|
223
|
-
- spec/integration/shared/scope_parameter.rb
|
224
233
|
- spec/spec_helper.rb
|
225
234
|
- spec/unit/kernel_date_spec.rb
|
226
235
|
- spec/unit/kernel_time_spec.rb
|
@@ -233,9 +242,7 @@ post_install_message: |
|
|
233
242
|
Upgrading ByStar
|
234
243
|
----------------
|
235
244
|
|
236
|
-
*
|
237
|
-
however it is still supported. If you would like to use Chronic with ByStar, please explicitly
|
238
|
-
include `gem chronic` into your Gemfile.
|
245
|
+
* As of version 4.0.0, ByStar changes the way it handles `Date` arg to the `#between_times` method. If a `Date` is given as the second (end) arg, the query will use `Date.end_of_day` to include all time values which fall inside that date.
|
239
246
|
rdoc_options: []
|
240
247
|
require_paths:
|
241
248
|
- lib
|
@@ -250,9 +257,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
250
257
|
- !ruby/object:Gem::Version
|
251
258
|
version: '0'
|
252
259
|
requirements: []
|
253
|
-
|
254
|
-
|
255
|
-
signing_key:
|
260
|
+
rubygems_version: 3.3.24
|
261
|
+
signing_key:
|
256
262
|
specification_version: 4
|
257
263
|
summary: ActiveRecord and Mongoid extension for easier date scopes and time ranges
|
258
264
|
test_files:
|
@@ -261,14 +267,20 @@ test_files:
|
|
261
267
|
- spec/fixtures/active_record/schema.rb
|
262
268
|
- spec/fixtures/mongoid/models.rb
|
263
269
|
- spec/fixtures/shared/seeds.rb
|
264
|
-
- spec/gemfiles/Gemfile.
|
270
|
+
- spec/gemfiles/Gemfile.rails
|
271
|
+
- spec/gemfiles/Gemfile.rails32
|
265
272
|
- spec/gemfiles/Gemfile.rails40
|
266
273
|
- spec/gemfiles/Gemfile.rails41
|
267
274
|
- spec/gemfiles/Gemfile.rails42
|
268
275
|
- spec/gemfiles/Gemfile.rails50
|
269
276
|
- spec/gemfiles/Gemfile.rails51
|
277
|
+
- spec/gemfiles/Gemfile.rails52
|
278
|
+
- spec/gemfiles/Gemfile.rails60
|
279
|
+
- spec/gemfiles/Gemfile.rails61
|
270
280
|
- spec/integration/active_record/active_record_spec.rb
|
271
281
|
- spec/integration/mongoid/mongoid_spec.rb
|
282
|
+
- spec/integration/shared/at_time.rb
|
283
|
+
- spec/integration/shared/between_dates.rb
|
272
284
|
- spec/integration/shared/between_times.rb
|
273
285
|
- spec/integration/shared/by_calendar_month.rb
|
274
286
|
- spec/integration/shared/by_cweek.rb
|
@@ -280,10 +292,10 @@ test_files:
|
|
280
292
|
- spec/integration/shared/by_week.rb
|
281
293
|
- spec/integration/shared/by_weekend.rb
|
282
294
|
- spec/integration/shared/by_year.rb
|
295
|
+
- spec/integration/shared/index_scope_parameter.rb
|
283
296
|
- spec/integration/shared/offset_parameter.rb
|
284
297
|
- spec/integration/shared/order_parameter.rb
|
285
298
|
- spec/integration/shared/relative.rb
|
286
|
-
- spec/integration/shared/scope_parameter.rb
|
287
299
|
- spec/spec_helper.rb
|
288
300
|
- spec/unit/kernel_date_spec.rb
|
289
301
|
- spec/unit/kernel_time_spec.rb
|
@@ -1,73 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
shared_examples_for 'scope parameter' do
|
4
|
-
|
5
|
-
describe ':scope' do
|
6
|
-
|
7
|
-
it 'should memoize the scope variable' do
|
8
|
-
expect(Event.instance_variable_get(:@by_star_scope)).to be_nil
|
9
|
-
expect(Post.instance_variable_get(:@by_star_scope)).to be_nil
|
10
|
-
expect(Appointment.instance_variable_get(:@by_star_scope)).to be_a Proc
|
11
|
-
end
|
12
|
-
|
13
|
-
context 'between_times with default scope' do
|
14
|
-
subject { Appointment.between_times(Date.parse('2013-12-01'), Date.parse('2014-02-01')) }
|
15
|
-
it { expect(subject.count).to eql(3) }
|
16
|
-
end
|
17
|
-
|
18
|
-
context 'between_times with scope override as a query criteria' do
|
19
|
-
subject { Appointment.between_times(Date.parse('2013-12-01')..Date.parse('2014-02-01'), scope: Appointment.unscoped) }
|
20
|
-
it { expect(subject.count).to eql(14) }
|
21
|
-
end
|
22
|
-
|
23
|
-
context 'between_times with scope override as a Lambda' do
|
24
|
-
subject { Appointment.between_times([Date.parse('2013-12-01'), Date.parse('2014-02-01')], scope: ->{ unscoped }) }
|
25
|
-
it { expect(subject.count).to eql(14) }
|
26
|
-
end
|
27
|
-
|
28
|
-
context 'between_times with scope override as a Lambda' do
|
29
|
-
subject { Appointment.between_times(Date.parse('2013-12-01')..Date.parse('2014-02-01'), scope: ->(x){ unscoped }) }
|
30
|
-
it{ expect{ subject }.to raise_error(RuntimeError, 'ByStar :scope Proc requires :scope_args to be specified.') }
|
31
|
-
end
|
32
|
-
|
33
|
-
context 'between_times with scope override as a Proc with arguments' do
|
34
|
-
subject { Appointment.between_times(Date.parse('2013-12-01'), Date.parse('2014-02-01'), scope: Proc.new{ unscoped }) }
|
35
|
-
it { expect(subject.count).to eql(14) }
|
36
|
-
end
|
37
|
-
|
38
|
-
context 'between_times with scope override as a Proc with arguments' do
|
39
|
-
subject { Appointment.between_times([Date.parse('2013-12-01'), Date.parse('2014-02-01')], scope: Proc.new{|x,y| unscoped }) }
|
40
|
-
it{ expect{ subject }.to raise_error(RuntimeError, 'ByStar :scope Proc requires :scope_args to be specified.') }
|
41
|
-
end
|
42
|
-
|
43
|
-
context 'by_month with default scope' do
|
44
|
-
subject { Appointment.by_month(Date.parse('2014-01-01')) }
|
45
|
-
it { expect(subject.count).to eql(2) }
|
46
|
-
end
|
47
|
-
|
48
|
-
context 'by_month with scope override as a query criteria' do
|
49
|
-
subject { Appointment.by_month(Date.parse('2014-01-01'), scope: Appointment.unscoped) }
|
50
|
-
it { expect(subject.count).to eql(6) }
|
51
|
-
end
|
52
|
-
|
53
|
-
context 'by_month with scope override as a Lambda' do
|
54
|
-
subject { Appointment.by_month(Date.parse('2014-01-01'), scope: ->{ unscoped }) }
|
55
|
-
it { expect(subject.count).to eql(6) }
|
56
|
-
end
|
57
|
-
|
58
|
-
context 'by_month with scope override as a Lambda with arguments' do
|
59
|
-
subject { Appointment.by_month(Date.parse('2014-01-01'), scope: ->(x){ unscoped }) }
|
60
|
-
it{ expect{ subject }.to raise_error(RuntimeError, 'ByStar :scope Proc requires :scope_args to be specified.') }
|
61
|
-
end
|
62
|
-
|
63
|
-
context 'by_month with scope override as a Proc' do
|
64
|
-
subject { Appointment.by_month(Date.parse('2014-01-01'), scope: Proc.new{ unscoped }) }
|
65
|
-
it { expect(subject.count).to eql(6) }
|
66
|
-
end
|
67
|
-
|
68
|
-
context 'by_month with scope override as a Proc with arguments' do
|
69
|
-
subject { Appointment.by_month(Date.parse('2014-01-01'), scope: Proc.new{|x| unscoped }) }
|
70
|
-
it{ expect{ subject }.to raise_error(RuntimeError, 'ByStar :scope Proc requires :scope_args to be specified.') }
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|