chronological 1.0.0beta6 → 1.0.0beta7

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -252,6 +252,11 @@ default behavior which is `Time.now.utc`. Using this option you can more easily
252
252
  see if an instance (or instances) would be started, ended, etc as of a given
253
253
  date.
254
254
 
255
+ All range status methods can also take a `:base_of` option _this is only
256
+ meaningful for strategies which utilize an offset for either the start
257
+ time or the end time_ which will calculate the absolute time based on
258
+ that time rather than any time stored within the instance.
259
+
255
260
  Affected methods:
256
261
 
257
262
  * `started?`
@@ -56,6 +56,18 @@ module Chronological
56
56
  (object.send(field_names[:starting_time]) <= Time.now.utc) && object.send(field_names[:ending_time]).future?
57
57
  end
58
58
 
59
+ def started?(object, options = {})
60
+ Time.now >= object.send(field_names[:starting_time], options)
61
+ end
62
+
63
+ def ended?(object, options = {})
64
+ Time.now >= object.send(field_names[:ending_time], options)
65
+ end
66
+
67
+ def not_yet_ended?(object, options = {})
68
+ !ended?(object, options)
69
+ end
70
+
59
71
  ###
60
72
  # Scopes
61
73
  #
@@ -1,15 +1,19 @@
1
1
  module Chronological
2
2
  class RelativeStrategy < BaseStrategy
3
- def starting_time(object)
4
- return nil unless object.send(field_names[:base_of_offset]).present? && object.send(field_names[:starting_offset]).present?
3
+ def starting_time(object, options = {})
4
+ base_of_offset = options[:base_of] || object.send(field_names[:base_of_offset])
5
5
 
6
- object.send(field_names[:base_of_offset]) - object.send(field_names[:starting_offset])
6
+ return nil unless base_of_offset.present? && object.send(field_names[:starting_offset]).present?
7
+
8
+ base_of_offset - object.send(field_names[:starting_offset])
7
9
  end
8
10
 
9
- def ending_time(object)
10
- return nil unless object.send(field_names[:base_of_offset]).present? && object.send(field_names[:ending_offset]).present?
11
+ def ending_time(object, options = {})
12
+ base_of_offset = options[:base_of] || object.send(field_names[:base_of_offset])
13
+
14
+ return nil unless base_of_offset.present? && object.send(field_names[:ending_offset]).present?
11
15
 
12
- object.send(field_names[:base_of_offset]) - object.send(field_names[:ending_offset])
16
+ base_of_offset - object.send(field_names[:ending_offset])
13
17
  end
14
18
 
15
19
  def scheduled?(object)
@@ -1,3 +1,3 @@
1
1
  module Chronological
2
- VERSION = '1.0.0beta6'
2
+ VERSION = '1.0.0beta7'
3
3
  end
data/lib/chronological.rb CHANGED
@@ -15,18 +15,48 @@ module Chronological
15
15
  columns_hash[strategy.field_names[:ending_date].to_s] ||= ActiveRecord::ConnectionAdapters::Column.new(strategy.field_names[:ending_date], nil, 'date')
16
16
  end
17
17
 
18
- unless strategy.has_absolute_start?
19
- define_method(strategy.field_names[:starting_time]) do
20
- strategy.starting_time(self)
18
+ if strategy.has_absolute_start?
19
+ define_method(strategy.field_names[:starting_time]) do |*args|
20
+ super()
21
+ end
22
+ else
23
+ define_method(strategy.field_names[:starting_time]) do |*args|
24
+ options = args.last.is_a?(Hash) ? args.last : {}
25
+
26
+ strategy.starting_time(self, options)
21
27
  end
22
28
  end
23
29
 
24
- unless strategy.has_absolute_end?
25
- define_method(strategy.field_names[:ending_time]) do
26
- strategy.ending_time(self)
30
+ if strategy.has_absolute_end?
31
+ define_method(strategy.field_names[:ending_time]) do |*args|
32
+ super()
33
+ end
34
+ else
35
+ define_method(strategy.field_names[:ending_time]) do |*args|
36
+ options = args.last.is_a?(Hash) ? args.last : {}
37
+
38
+ strategy.ending_time(self, options)
27
39
  end
28
40
  end
29
41
 
42
+ define_method(:started?) do |*args|
43
+ options = args.last.is_a?(Hash) ? args.last : {}
44
+
45
+ strategy.started?(self, options)
46
+ end
47
+
48
+ define_method(:ended?) do |*args|
49
+ options = args.last.is_a?(Hash) ? args.last : {}
50
+
51
+ strategy.ended?(self, options)
52
+ end
53
+
54
+ define_method(:not_yet_ended?) do |*args|
55
+ options = args.last.is_a?(Hash) ? args.last : {}
56
+
57
+ strategy.not_yet_ended?(self, options)
58
+ end
59
+
30
60
  define_method(:scheduled?) do
31
61
  strategy.scheduled?(self)
32
62
  end
@@ -407,6 +407,36 @@ describe Chronological::AbsoluteStrategy, :timecop => true do
407
407
  context 'and has already ended' do
408
408
  let(:end_time) { past }
409
409
 
410
+ describe '#started?' do
411
+ it 'is started when called directly' do
412
+ chronologicable.should be_started
413
+ end
414
+
415
+ it 'ignores any passed in base time' do
416
+ chronologicable.should be_started(:base_of => 100.years.from_now)
417
+ end
418
+ end
419
+
420
+ describe '#ended?' do
421
+ it 'is ended when called directly' do
422
+ chronologicable.should be_ended
423
+ end
424
+
425
+ it 'ignores any passed in base time' do
426
+ chronologicable.should be_ended(:base_of => 100.years.from_now)
427
+ end
428
+ end
429
+
430
+ describe '#not_yet_ended?' do
431
+ it 'is not_yet_ended when called directly' do
432
+ chronologicable.should_not be_not_yet_ended
433
+ end
434
+
435
+ it 'ignores any passed in base time' do
436
+ chronologicable.should_not be_not_yet_ended(:base_of => 100.years.from_now)
437
+ end
438
+ end
439
+
410
440
  describe '.in_progress?' do
411
441
  it 'is false' do
412
442
  AbsoluteChronologicable.should_not be_in_progress
@@ -441,6 +471,36 @@ describe Chronological::AbsoluteStrategy, :timecop => true do
441
471
  context 'and ends now' do
442
472
  let(:end_time) { now }
443
473
 
474
+ describe '#started?' do
475
+ it 'is started when called directly' do
476
+ chronologicable.should be_started
477
+ end
478
+
479
+ it 'ignores any passed in base time' do
480
+ chronologicable.should be_started(:base_of => 100.years.from_now)
481
+ end
482
+ end
483
+
484
+ describe '#ended?' do
485
+ it 'is ended when called directly' do
486
+ chronologicable.should be_ended
487
+ end
488
+
489
+ it 'ignores any passed in base time' do
490
+ chronologicable.should be_ended(:base_of => 100.years.from_now)
491
+ end
492
+ end
493
+
494
+ describe '#not_yet_ended?' do
495
+ it 'is not_yet_ended when called directly' do
496
+ chronologicable.should_not be_not_yet_ended
497
+ end
498
+
499
+ it 'ignores any passed in base time' do
500
+ chronologicable.should_not be_not_yet_ended(:base_of => 100.years.from_now)
501
+ end
502
+ end
503
+
444
504
  describe '.in_progress?' do
445
505
  it 'is false' do
446
506
  AbsoluteChronologicable.should_not be_in_progress
@@ -475,6 +535,36 @@ describe Chronological::AbsoluteStrategy, :timecop => true do
475
535
  context 'and ends later' do
476
536
  let(:end_time) { later }
477
537
 
538
+ describe '#started?' do
539
+ it 'is started when called directly' do
540
+ chronologicable.should be_started
541
+ end
542
+
543
+ it 'ignores any passed in base time' do
544
+ chronologicable.should be_started(:base_of => 100.years.from_now)
545
+ end
546
+ end
547
+
548
+ describe '#ended?' do
549
+ it 'is ended when called directly' do
550
+ chronologicable.should_not be_ended
551
+ end
552
+
553
+ it 'ignores any passed in base time' do
554
+ chronologicable.should_not be_ended(:base_of => 100.years.ago)
555
+ end
556
+ end
557
+
558
+ describe '#not_yet_ended?' do
559
+ it 'is not_yet_ended when called directly' do
560
+ chronologicable.should be_not_yet_ended
561
+ end
562
+
563
+ it 'ignores any passed in base time' do
564
+ chronologicable.should be_not_yet_ended(:base_of => 100.years.ago)
565
+ end
566
+ end
567
+
478
568
  describe '.in_progress?' do
479
569
  it 'is true' do
480
570
  AbsoluteChronologicable.should be_in_progress
@@ -513,6 +603,36 @@ describe Chronological::AbsoluteStrategy, :timecop => true do
513
603
  context 'and ends now' do
514
604
  let(:end_time) { now }
515
605
 
606
+ describe '#started?' do
607
+ it 'is started when called directly' do
608
+ chronologicable.should be_started
609
+ end
610
+
611
+ it 'ignores any passed in base time' do
612
+ chronologicable.should be_started(:base_of => 100.years.from_now)
613
+ end
614
+ end
615
+
616
+ describe '#ended?' do
617
+ it 'is ended when called directly' do
618
+ chronologicable.should be_ended
619
+ end
620
+
621
+ it 'ignores any passed in base time' do
622
+ chronologicable.should be_ended(:base_of => 100.years.from_now)
623
+ end
624
+ end
625
+
626
+ describe '#not_yet_ended?' do
627
+ it 'is not_yet_ended when called directly' do
628
+ chronologicable.should_not be_not_yet_ended
629
+ end
630
+
631
+ it 'ignores any passed in base time' do
632
+ chronologicable.should_not be_not_yet_ended(:base_of => 100.years.from_now)
633
+ end
634
+ end
635
+
516
636
  describe '.in_progress?' do
517
637
  it 'is false' do
518
638
  AbsoluteChronologicable.should_not be_in_progress
@@ -547,6 +667,36 @@ describe Chronological::AbsoluteStrategy, :timecop => true do
547
667
  context 'and ends later' do
548
668
  let(:end_time) { later }
549
669
 
670
+ describe '#started?' do
671
+ it 'is started when called directly' do
672
+ chronologicable.should be_started
673
+ end
674
+
675
+ it 'ignores any passed in base time' do
676
+ chronologicable.should be_started(:base_of => 100.years.from_now)
677
+ end
678
+ end
679
+
680
+ describe '#ended?' do
681
+ it 'is ended when called directly' do
682
+ chronologicable.should_not be_ended
683
+ end
684
+
685
+ it 'ignores any passed in base time' do
686
+ chronologicable.should_not be_ended(:base_of => 100.years.ago)
687
+ end
688
+ end
689
+
690
+ describe '#not_yet_ended?' do
691
+ it 'is not_yet_ended when called directly' do
692
+ chronologicable.should be_not_yet_ended
693
+ end
694
+
695
+ it 'ignores any passed in base time' do
696
+ chronologicable.should be_not_yet_ended(:base_of => 100.years.ago)
697
+ end
698
+ end
699
+
550
700
  describe '.in_progress?' do
551
701
  it 'is true' do
552
702
  AbsoluteChronologicable.should be_in_progress
@@ -583,6 +733,36 @@ describe Chronological::AbsoluteStrategy, :timecop => true do
583
733
  let(:start_time) { later }
584
734
  let(:end_time) { later }
585
735
 
736
+ describe '#started?' do
737
+ it 'is started when called directly' do
738
+ chronologicable.should_not be_started
739
+ end
740
+
741
+ it 'ignores any passed in base time' do
742
+ chronologicable.should_not be_started(:base_of => 100.years.ago)
743
+ end
744
+ end
745
+
746
+ describe '#ended?' do
747
+ it 'is ended when called directly' do
748
+ chronologicable.should_not be_ended
749
+ end
750
+
751
+ it 'ignores any passed in base time' do
752
+ chronologicable.should_not be_ended(:base_of => 100.years.ago)
753
+ end
754
+ end
755
+
756
+ describe '#not_yet_ended?' do
757
+ it 'is not_yet_ended when called directly' do
758
+ chronologicable.should be_not_yet_ended
759
+ end
760
+
761
+ it 'ignores any passed in base time' do
762
+ chronologicable.should be_not_yet_ended(:base_of => 100.years.ago)
763
+ end
764
+ end
765
+
586
766
  describe '.in_progress?' do
587
767
  it 'is false' do
588
768
  AbsoluteChronologicable.should_not be_in_progress
@@ -376,9 +376,13 @@ describe Chronological::RelativeStrategy, :timecop => true do
376
376
  end
377
377
  end
378
378
 
379
- it 'does not have a start time' do
379
+ it 'does not have a start time when called directly' do
380
380
  chronologicable.started_at.should be_nil
381
381
  end
382
+
383
+ it 'has the proper start time when a base is passed in' do
384
+ chronologicable.started_at(:base_of => Time.local(2012, 7, 26, 12, 0, 0)).should eql Time.local(2012, 7, 26, 11, 59, 30)
385
+ end
382
386
  end
383
387
 
384
388
  context 'and the starting offset is not set' do
@@ -468,25 +472,37 @@ describe Chronological::RelativeStrategy, :timecop => true do
468
472
  end
469
473
  end
470
474
 
471
- it 'does not have a start time' do
475
+ it 'does not have a start time when called directly' do
472
476
  chronologicable.started_at.should be_nil
473
477
  end
478
+
479
+ it 'does not have a start time when a base is passed in' do
480
+ chronologicable.started_at(:base_of => Time.local(2012, 7, 26, 12, 0, 0)).should be_nil
481
+ end
474
482
  end
475
483
 
476
484
  context 'and the ending offset is set' do
477
485
  let(:ending_offset) { 0 }
478
486
 
479
- it 'does not have an end time' do
487
+ it 'does not have an end time when called directly' do
480
488
  chronologicable.ended_at.should be_nil
481
489
  end
490
+
491
+ it 'calculates the correct end time when a base is passed in' do
492
+ chronologicable.ended_at(:base_of => Time.local(2012, 7, 26, 12, 0, 0)).should eql Time.local(2012, 7, 26, 12, 0, 0)
493
+ end
482
494
  end
483
495
 
484
496
  context 'and the ending offset is not set' do
485
497
  let(:ending_offset) { nil }
486
498
 
487
- it 'does not have an end time' do
499
+ it 'does not have an end time when called directly' do
488
500
  chronologicable.ended_at.should be_nil
489
501
  end
502
+
503
+ it 'does not have an end time when a base is passed in' do
504
+ chronologicable.ended_at(:base_of => Time.local(2012, 7, 26, 12, 0, 0)).should be_nil
505
+ end
490
506
  end
491
507
 
492
508
  context 'and neither of the offsets is set' do
@@ -750,9 +766,13 @@ describe Chronological::RelativeStrategy, :timecop => true do
750
766
  end
751
767
  end
752
768
 
753
- it 'does not have a start time' do
769
+ it 'does not have a start time when called directly' do
754
770
  chronologicable.started_at.should be_nil
755
771
  end
772
+
773
+ it 'does not have a start time when a base is passed in' do
774
+ chronologicable.started_at(:base_of => Time.local(2012, 7, 26, 12, 0, 0)).should be_nil
775
+ end
756
776
  end
757
777
 
758
778
  context 'when the starting offset is set' do
@@ -926,25 +946,37 @@ describe Chronological::RelativeStrategy, :timecop => true do
926
946
  end
927
947
  end
928
948
 
929
- it 'calculates the correct start time' do
949
+ it 'calculates the correct start time when called directly' do
930
950
  chronologicable.started_at.should eql Time.local(2012, 7, 26, 6, 0, 0)
931
951
  end
952
+
953
+ it 'calculates the correct start time when a base is passed in' do
954
+ chronologicable.started_at(:base_of => Time.local(2012, 7, 26, 12, 0, 0)).should eql Time.local(2012, 7, 26, 11, 59, 30)
955
+ end
932
956
  end
933
957
 
934
958
  context 'and the ending offset is set' do
935
959
  let(:ending_offset) { 30 }
936
960
 
937
- it 'calculates the correct end time' do
961
+ it 'calculates the correct end time when called directly' do
938
962
  chronologicable.ended_at.should eql Time.local(2012, 7, 26, 6, 0, 0)
939
963
  end
964
+
965
+ it 'calculates the correct end time when a base is passed in' do
966
+ chronologicable.ended_at(:base_of => Time.local(2012, 7, 26, 12, 0, 0)).should eql Time.local(2012, 7, 26, 11, 59, 30)
967
+ end
940
968
  end
941
969
 
942
970
  context 'and the ending offset is not set' do
943
971
  let(:ending_offset) { nil }
944
972
 
945
- it 'does not have a end time' do
973
+ it 'does not have a end time when called directly' do
946
974
  chronologicable.ended_at.should be_nil
947
975
  end
976
+
977
+ it 'does not have an end time when a base is passed in' do
978
+ chronologicable.ended_at(:base_of => Time.local(2012, 7, 26, 12, 0, 0)).should be_nil
979
+ end
948
980
  end
949
981
  end
950
982
 
@@ -956,6 +988,30 @@ describe Chronological::RelativeStrategy, :timecop => true do
956
988
  context 'and before the ending offset' do
957
989
  let(:ending_offset) { 30 }
958
990
 
991
+ it 'is not started when called directly' do
992
+ chronologicable.should_not be_started
993
+ end
994
+
995
+ it 'is started if the base time is overridden to a time before the offset plus "now"' do
996
+ chronologicable.should be_started(:base_of => Time.local(2012, 7, 26, 6, 0, 29))
997
+ end
998
+
999
+ it 'is not ended when called directly' do
1000
+ chronologicable.should_not be_ended
1001
+ end
1002
+
1003
+ it 'is ended if the base time is overridden to a time on or after the offset plus "now"' do
1004
+ chronologicable.should be_ended(:base_of => Time.local(2012, 7, 26, 6, 0, 29))
1005
+ end
1006
+
1007
+ it 'is not yet ended when called directly' do
1008
+ chronologicable.should be_not_yet_ended
1009
+ end
1010
+
1011
+ it 'is not not yet ended if the base time is overridden to a time on or after the offset plus "now"' do
1012
+ chronologicable.should_not be_not_yet_ended(:base_of => Time.local(2012, 7, 26, 6, 0, 29))
1013
+ end
1014
+
959
1015
  it 'is not included in the started list' do
960
1016
  RelativeChronologicable.started.should_not include chronologicable
961
1017
  end
@@ -979,13 +1035,37 @@ describe Chronological::RelativeStrategy, :timecop => true do
979
1035
  end
980
1036
 
981
1037
  context 'when it is currently a time the same as the starting offset' do
982
- let(:now) { Time.local(2012, 7, 26, 6, 0, 0) }
1038
+ let(:now) { Time.local(2012, 7, 26, 6, 0, 0) }
983
1039
  let(:base_time) { Time.local(2012, 7, 26, 6, 0, 30) }
984
1040
  let(:starting_offset) { 30 }
985
1041
 
986
1042
  context 'and before the ending offset' do
987
1043
  let(:ending_offset) { 29 }
988
1044
 
1045
+ it 'is not started when called directly' do
1046
+ chronologicable.should be_started
1047
+ end
1048
+
1049
+ it 'is not started if the base time is overridden to a time after the offset plus "now"' do
1050
+ chronologicable.should_not be_started(:base_of => Time.local(2012, 7, 26, 6, 0, 31))
1051
+ end
1052
+
1053
+ it 'is not ended when called directly' do
1054
+ chronologicable.should_not be_ended
1055
+ end
1056
+
1057
+ it 'is ended if the base time is overridden to a time on or after the offset plus "now"' do
1058
+ chronologicable.should be_ended(:base_of => Time.local(2012, 7, 26, 6, 0, 29))
1059
+ end
1060
+
1061
+ it 'is not yet ended when called directly' do
1062
+ chronologicable.should be_not_yet_ended
1063
+ end
1064
+
1065
+ it 'is not not yet ended if the base time is overridden to a time on or after the offset plus "now"' do
1066
+ chronologicable.should_not be_not_yet_ended(:base_of => Time.local(2012, 7, 26, 6, 0, 29))
1067
+ end
1068
+
989
1069
  it 'is included in the started list' do
990
1070
  RelativeChronologicable.started.should include chronologicable
991
1071
  end
@@ -1010,6 +1090,30 @@ describe Chronological::RelativeStrategy, :timecop => true do
1010
1090
  context 'and the same as the ending offset' do
1011
1091
  let(:ending_offset) { 30 }
1012
1092
 
1093
+ it 'is not started when called directly' do
1094
+ chronologicable.should be_started
1095
+ end
1096
+
1097
+ it 'is not started if the base time is overridden to a time after the offset plus "now"' do
1098
+ chronologicable.should_not be_started(:base_of => Time.local(2012, 7, 26, 6, 0, 31))
1099
+ end
1100
+
1101
+ it 'is not ended when called directly' do
1102
+ chronologicable.should be_ended
1103
+ end
1104
+
1105
+ it 'is ended if the base time is overridden to a time on or after the offset plus "now"' do
1106
+ chronologicable.should_not be_ended(:base_of => Time.local(2012, 7, 26, 6, 0, 31))
1107
+ end
1108
+
1109
+ it 'is not yet ended when called directly' do
1110
+ chronologicable.should_not be_not_yet_ended
1111
+ end
1112
+
1113
+ it 'is not not yet ended if the base time is overridden to a time on or after the offset plus "now"' do
1114
+ chronologicable.should be_not_yet_ended(:base_of => Time.local(2012, 7, 26, 6, 0, 31))
1115
+ end
1116
+
1013
1117
  it 'is included in the started list' do
1014
1118
  RelativeChronologicable.started.should include chronologicable
1015
1119
  end
@@ -1033,13 +1137,37 @@ describe Chronological::RelativeStrategy, :timecop => true do
1033
1137
  end
1034
1138
 
1035
1139
  context 'when it is currently a time after the starting offset' do
1036
- let(:now) { Time.local(2012, 7, 26, 6, 0, 2) }
1140
+ let(:now) { Time.local(2012, 7, 26, 6, 0, 2) }
1037
1141
  let(:base_time) { Time.local(2012, 7, 26, 6, 0, 30) }
1038
1142
  let(:starting_offset) { 30 }
1039
1143
 
1040
1144
  context 'and before the ending offset' do
1041
1145
  let(:ending_offset) { 27 }
1042
1146
 
1147
+ it 'is not started when called directly' do
1148
+ chronologicable.should be_started
1149
+ end
1150
+
1151
+ it 'is not started if the base time is overridden to a time after the offset plus "now"' do
1152
+ chronologicable.should_not be_started(:base_of => Time.local(2012, 7, 26, 6, 0, 33))
1153
+ end
1154
+
1155
+ it 'is not ended when called directly' do
1156
+ chronologicable.should_not be_ended
1157
+ end
1158
+
1159
+ it 'is ended if the base time is overridden to a time on or after the offset plus "now"' do
1160
+ chronologicable.should be_ended(:base_of => Time.local(2012, 7, 26, 6, 0, 29))
1161
+ end
1162
+
1163
+ it 'is not yet ended when called directly' do
1164
+ chronologicable.should be_not_yet_ended
1165
+ end
1166
+
1167
+ it 'is not not yet ended if the base time is overridden to a time on or after the offset plus "now"' do
1168
+ chronologicable.should_not be_not_yet_ended(:base_of => Time.local(2012, 7, 26, 6, 0, 29))
1169
+ end
1170
+
1043
1171
  it 'is included in the started list' do
1044
1172
  RelativeChronologicable.started.should include chronologicable
1045
1173
  end
@@ -1064,6 +1192,30 @@ describe Chronological::RelativeStrategy, :timecop => true do
1064
1192
  context 'and the same as the ending offset' do
1065
1193
  let(:ending_offset) { 28 }
1066
1194
 
1195
+ it 'is not started when called directly' do
1196
+ chronologicable.should be_started
1197
+ end
1198
+
1199
+ it 'is not started if the base time is overridden to a time after the offset plus "now"' do
1200
+ chronologicable.should_not be_started(:base_of => Time.local(2012, 7, 26, 6, 0, 33))
1201
+ end
1202
+
1203
+ it 'is not ended when called directly' do
1204
+ chronologicable.should be_ended
1205
+ end
1206
+
1207
+ it 'is ended if the base time is overridden to a time on or after the offset plus "now"' do
1208
+ chronologicable.should_not be_ended(:base_of => Time.local(2012, 7, 26, 6, 0, 31))
1209
+ end
1210
+
1211
+ it 'is not yet ended when called directly' do
1212
+ chronologicable.should_not be_not_yet_ended
1213
+ end
1214
+
1215
+ it 'is not not yet ended if the base time is overridden to a time on or after the offset plus "now"' do
1216
+ chronologicable.should be_not_yet_ended(:base_of => Time.local(2012, 7, 26, 6, 0, 31))
1217
+ end
1218
+
1067
1219
  it 'is included in the started list' do
1068
1220
  RelativeChronologicable.started.should include chronologicable
1069
1221
  end
@@ -1088,6 +1240,30 @@ describe Chronological::RelativeStrategy, :timecop => true do
1088
1240
  context 'and after the ending offset' do
1089
1241
  let(:ending_offset) { 29 }
1090
1242
 
1243
+ it 'is not started when called directly' do
1244
+ chronologicable.should be_started
1245
+ end
1246
+
1247
+ it 'is not started if the base time is overridden to a time after the offset plus "now"' do
1248
+ chronologicable.should_not be_started(:base_of => Time.local(2012, 7, 26, 6, 0, 33))
1249
+ end
1250
+
1251
+ it 'is not ended when called directly' do
1252
+ chronologicable.should be_ended
1253
+ end
1254
+
1255
+ it 'is ended if the base time is overridden to a time on or after the offset plus "now"' do
1256
+ chronologicable.should_not be_ended(:base_of => Time.local(2012, 7, 26, 6, 0, 32))
1257
+ end
1258
+
1259
+ it 'is not yet ended when called directly' do
1260
+ chronologicable.should_not be_not_yet_ended
1261
+ end
1262
+
1263
+ it 'is not not yet ended if the base time is overridden to a time on or after the offset plus "now"' do
1264
+ chronologicable.should be_not_yet_ended(:base_of => Time.local(2012, 7, 26, 6, 0, 32))
1265
+ end
1266
+
1091
1267
  it 'is included in the started list' do
1092
1268
  RelativeChronologicable.started.should include chronologicable
1093
1269
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chronological
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0beta6
4
+ version: 1.0.0beta7
5
5
  prerelease: 5
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-11-05 00:00:00.000000000 Z
13
+ date: 2012-11-19 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rspec