chronological 1.0.0beta5 → 1.0.0beta6

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -282,19 +282,19 @@ MyTimeRangeClass.ended :as_of => 42.years.from_now #=> [range_instance]
282
282
 
283
283
  When calling `duration` on a Chronological, by default it will return
284
284
  the days, hours, minutes and seconds in a Hash. If you need a specific
285
- combination of these pieces, you can pass them in an `:as` options like
285
+ combination of these pieces, you can pass them in an `:in` options like
286
286
  so:
287
287
 
288
288
  ```ruby
289
289
  # range_instance's total duration is 5 days, 1 hour, 44 minutes and 23 seconds
290
290
 
291
- range_instance.duration :as => [:days, :hours, :seconds]
291
+ range_instance.duration :in => [:days, :hours, :seconds]
292
292
  #=> { :days => 5, :hours => 1, :seconds => 2663 }
293
293
 
294
- range_instance.duration :as => [:days, :hours, :minutes]
294
+ range_instance.duration :in => [:days, :hours, :minutes]
295
295
  #=> { :days => 5, :hours => 1, :minutes => 44 }
296
296
 
297
- range_instance.duration :as => [:hours, :minutes, :seconds]
297
+ range_instance.duration :in => [:hours, :minutes, :seconds]
298
298
  #=> { :hours => 121, :minutes => 44, :seconds => 23 }
299
299
  ```
300
300
 
@@ -34,6 +34,8 @@ module Chronological
34
34
  end
35
35
 
36
36
  def duration_in_seconds(object)
37
+ return nil unless object.send(field_names[:ending_time]).present? && object.send(field_names[:starting_time]).present?
38
+
37
39
  (object.send(field_names[:ending_time]) - object.send(field_names[:starting_time]))
38
40
  end
39
41
 
@@ -22,8 +22,8 @@ module Chronological
22
22
  !object.in_progress?
23
23
  end
24
24
 
25
- def duration(object, options = { :as => [:days, :hours, :minutes, :seconds] })
26
- duration_parts = options[:as]
25
+ def duration(object, options = { :in => [:days, :hours, :minutes, :seconds] })
26
+ duration_parts = options[:in]
27
27
  remaining_duration = duration_in_seconds(object)
28
28
 
29
29
  return Hash.new unless remaining_duration.present?
@@ -1,3 +1,3 @@
1
1
  module Chronological
2
- VERSION = '1.0.0beta5'
2
+ VERSION = '1.0.0beta6'
3
3
  end
@@ -613,5 +613,28 @@ describe Chronological::AbsoluteStrategy, :timecop => true do
613
613
  end
614
614
  end
615
615
  end
616
+
617
+ describe '#duration_in_seconds' do
618
+ let(:strategy) { Chronological::AbsoluteStrategy.new( starting_time: :started_at_utc,
619
+ ending_time: :ended_at_utc) }
620
+
621
+ context 'when the starting time is not set' do
622
+ let(:start_time) { nil }
623
+ let(:end_time) { now }
624
+
625
+ it 'is nil' do
626
+ strategy.send(:duration_in_seconds, chronologicable).should be_nil
627
+ end
628
+ end
629
+
630
+ context 'when the starting time is not set' do
631
+ let(:start_time) { now }
632
+ let(:end_time) { nil }
633
+
634
+ it 'is nil' do
635
+ strategy.send(:duration_in_seconds, chronologicable).should be_nil
636
+ end
637
+ end
638
+ end
616
639
  end
617
640
  end
@@ -72,7 +72,7 @@ describe Chronological::BaseStrategy do
72
72
 
73
73
  describe '#duration' do
74
74
  context 'when passed an options hash limiting the parts of the output' do
75
- let(:duration_hash) { strategy.duration(chrono, :as => [:days, :hours, :seconds]) }
75
+ let(:duration_hash) { strategy.duration(chrono, :in => [:days, :hours, :seconds]) }
76
76
 
77
77
  before { strategy.should_receive(:duration_in_seconds).and_return(438263) }
78
78
 
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.0beta5
4
+ version: 1.0.0beta6
5
5
  prerelease: 5
6
6
  platform: ruby
7
7
  authors: