hoodoo 2.9.0 → 2.10.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.
- checksums.yaml +4 -4
- data/lib/hoodoo/utilities/utilities.rb +9 -4
- data/lib/hoodoo/version.rb +2 -2
- data/spec/utilities/utilities_spec.rb +63 -11
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 558f4ad8d5dd9efe88b282630fcb24a5fc244382e7dc3ff769b21998c38c058e
|
4
|
+
data.tar.gz: 0b2b67b5d32e25c160f1a4ec755898b294fb742044615557c05a9d18769e8699
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9dc89cb9a030e29d0c678a4cef606fff9ad2bee6761148573c4c5ea8e8fa173ffc99dcf0f2e50f7ca6ac7f90baac80a6854314159cc53adc2624e2326478622b
|
7
|
+
data.tar.gz: de09f589b82a11eec89cd494860b9b2c3ee00262fd16cd18307296d88caf3ab3b5eef2ce28387adc525dc924a9d34d1074dd13233edb6346e9b61470eb8d9804
|
@@ -354,11 +354,14 @@ module Hoodoo
|
|
354
354
|
# +input+:: A value that's passed to ::rationalise_datetime with the
|
355
355
|
# result checked against `now` allowing for clock drift.
|
356
356
|
#
|
357
|
-
#
|
358
|
-
#
|
357
|
+
# +backdated_to+:: Optional. The "now" of the context, defaulting to
|
358
|
+
# +DateTime.now+.
|
359
|
+
#
|
360
|
+
# If the given input or `backdated_to` is not parseable as a date-time like
|
361
|
+
# object, then the method it will throw a RuntimeError exception via
|
359
362
|
# ::rationalise_datetime.
|
360
363
|
#
|
361
|
-
def self.is_in_future?( input )
|
364
|
+
def self.is_in_future?( input, backdated_to=DateTime.now )
|
362
365
|
|
363
366
|
# See also ::clear_clock_drift_configuration_cache!.
|
364
367
|
#
|
@@ -370,10 +373,12 @@ module Hoodoo
|
|
370
373
|
|
371
374
|
value = self.rationalise_datetime( input )
|
372
375
|
|
376
|
+
backdated_now = self.rationalise_datetime( backdated_to )
|
377
|
+
|
373
378
|
# Unlike Time, integer addition to DateTime adds days. There are 86400
|
374
379
|
# seconds per day, so below we add @@clock_drift_tolerance seconds.
|
375
380
|
#
|
376
|
-
value >
|
381
|
+
value > backdated_now + Rational(@@clock_drift_tolerance, 86400)
|
377
382
|
|
378
383
|
end
|
379
384
|
|
data/lib/hoodoo/version.rb
CHANGED
@@ -12,11 +12,11 @@ module Hoodoo
|
|
12
12
|
# The Hoodoo gem version. If this changes, be sure to re-run
|
13
13
|
# <tt>bundle install</tt> or <tt>bundle update</tt>.
|
14
14
|
#
|
15
|
-
VERSION = '2.
|
15
|
+
VERSION = '2.10.0'
|
16
16
|
|
17
17
|
# The Hoodoo gem date. If this changes, be sure to re-run
|
18
18
|
# <tt>bundle install</tt> or <tt>bundle update</tt>.
|
19
19
|
#
|
20
|
-
DATE = '2018-
|
20
|
+
DATE = '2018-12-04'
|
21
21
|
|
22
22
|
end
|
@@ -498,22 +498,74 @@ describe Hoodoo::Utilities do
|
|
498
498
|
ENV[ 'HOODOO_CLOCK_DRIFT_TOLERANCE' ] = @old_drift
|
499
499
|
end
|
500
500
|
|
501
|
-
|
502
|
-
|
503
|
-
|
501
|
+
context 'when comparing to now' do
|
502
|
+
it 'says "no" for "now"' do
|
503
|
+
expect( Hoodoo::Utilities.is_in_future?( Time.now ) ).to eq( false )
|
504
|
+
end
|
505
|
+
|
506
|
+
it 'says "no" inside default drift allowance' do
|
507
|
+
expect( Hoodoo::Utilities.is_in_future?( Time.now + ( @default / 2 ) ) ).to eq( false )
|
508
|
+
end
|
504
509
|
|
505
|
-
|
506
|
-
|
510
|
+
# Hoodoo Guides: "...less than or equal to... ...is permitted...".
|
511
|
+
#
|
512
|
+
it 'says "no" at default drift allowance' do
|
513
|
+
expect( Hoodoo::Utilities.is_in_future?( Time.now + @default ) ).to eq( false )
|
514
|
+
end
|
515
|
+
|
516
|
+
it 'says "yes" outside default drift allowance' do
|
517
|
+
expect( Hoodoo::Utilities.is_in_future?( Time.now + @default + 1 ) ).to eq( true )
|
518
|
+
end
|
507
519
|
end
|
508
520
|
|
509
|
-
|
510
|
-
|
511
|
-
|
512
|
-
|
521
|
+
context 'when comparing to a date in the past' do
|
522
|
+
|
523
|
+
before(:each) do
|
524
|
+
@past_date = Time.now - ( @default * 2 )
|
525
|
+
end
|
526
|
+
|
527
|
+
it 'says "yes" for "now"' do
|
528
|
+
expect( Hoodoo::Utilities.is_in_future?( Time.now, @past_date ) ).to eq( true )
|
529
|
+
end
|
530
|
+
|
531
|
+
it 'says "no" inside default drift allowance' do
|
532
|
+
expect( Hoodoo::Utilities.is_in_future?( @past_date + ( @default / 2 ), @past_date ) ).to eq( false )
|
533
|
+
end
|
534
|
+
|
535
|
+
it 'says "no" at default drift allowance' do
|
536
|
+
expect( Hoodoo::Utilities.is_in_future?( @past_date + @default, @past_date ) ).to eq( false )
|
537
|
+
end
|
538
|
+
|
539
|
+
it 'says "yes" outside default drift allowance' do
|
540
|
+
expect( Hoodoo::Utilities.is_in_future?( @past_date + @default + 1, @past_date ) ).to eq( true )
|
541
|
+
end
|
513
542
|
end
|
514
543
|
|
515
|
-
|
516
|
-
|
544
|
+
context 'when comparing to a date in the future' do
|
545
|
+
|
546
|
+
before(:each) do
|
547
|
+
@future_date = Time.now + ( @default * 2 )
|
548
|
+
end
|
549
|
+
|
550
|
+
it 'says "no" for "now"' do
|
551
|
+
expect( Hoodoo::Utilities.is_in_future?( Time.now, @future_date ) ).to eq( false )
|
552
|
+
end
|
553
|
+
|
554
|
+
it 'says "no" for a date before the future date, but after "now"' do
|
555
|
+
expect( Hoodoo::Utilities.is_in_future?( Time.now + ( @default / 2 ), @future_date ) ).to eq( false )
|
556
|
+
end
|
557
|
+
|
558
|
+
it 'says "no" inside default drift allowance' do
|
559
|
+
expect( Hoodoo::Utilities.is_in_future?( @future_date + ( @default / 2 ), @future_date ) ).to eq( false )
|
560
|
+
end
|
561
|
+
|
562
|
+
it 'says "no" at default drift allowance' do
|
563
|
+
expect( Hoodoo::Utilities.is_in_future?( @future_date + @default, @future_date ) ).to eq( false )
|
564
|
+
end
|
565
|
+
|
566
|
+
it 'says "yes" outside default drift allowance' do
|
567
|
+
expect( Hoodoo::Utilities.is_in_future?( @future_date + @default + 1, @future_date ) ).to eq( true )
|
568
|
+
end
|
517
569
|
end
|
518
570
|
|
519
571
|
it 'drift allowance can be reconfigured' do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hoodoo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Loyalty New Zealand
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-12-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rack
|
@@ -598,7 +598,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
598
598
|
version: '0'
|
599
599
|
requirements: []
|
600
600
|
rubyforge_project:
|
601
|
-
rubygems_version: 2.7.
|
601
|
+
rubygems_version: 2.7.8
|
602
602
|
signing_key:
|
603
603
|
specification_version: 4
|
604
604
|
summary: Opinionated APIs
|