duranged 0.0.2 → 0.0.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 46db5544d738bea7c2e616f797e6667e817cd9a1
4
- data.tar.gz: e7fe1eae2d4205fc344175e7ea9f9298549e77fd
3
+ metadata.gz: 642f12029f91fdc00c2f2e5982ebe82fc79abd9a
4
+ data.tar.gz: dd5cafa8f72224e081beb598e7e8d35c79e1b762
5
5
  SHA512:
6
- metadata.gz: c38eba26ed2b9208cd0c95bfa61224287940af2cf5f92bc0b4604bf1dc8ef762d63a9a1103d5ec38d79fe46cb59287b0a3e151a948b375b33eec24f18911e979
7
- data.tar.gz: 2a7319101bfb44860c33ead635bac7d27634c6a0f62ab8c56057cf83dfc6734e51d0d5cdf25269c806c9a089bc9b1c0e24e54ea20c326aadff7c320ac107b9ff
6
+ metadata.gz: 4ec1213caf3dfd5dcb196fd7e465f3bb85aeadceef35fdef0d8b85bf8a1359324fc81a3a6caaa0710b5e45123941b9012020ef0b0d16850cdabcaded98b9b369
7
+ data.tar.gz: 67856f597e86030ec143aff31312e81a9a8b1b43e2581c93dbcc3b75223c4b51b17f3f39b89ee68357fdeee5fb2917560d4f97e57275f905a7b3389f1d115eb0
@@ -48,6 +48,27 @@ module Duranged
48
48
  self.class.new(to_i - other.to_i)
49
49
  end
50
50
 
51
+ def round_to!(period=:minutes)
52
+ send("round_to_#{period}!")
53
+ end
54
+
55
+ def round_to_minutes!
56
+ if seconds >= 30
57
+ @value = value + (60 - seconds)
58
+ else
59
+ @value = value - seconds
60
+ end
61
+ end
62
+
63
+ def round_to_hours!
64
+ round_to_minutes!
65
+ if minutes >= 30
66
+ @value = value + (60 - minutes).minutes
67
+ else
68
+ @value = value - minutes.minutes
69
+ end
70
+ end
71
+
51
72
  protected
52
73
 
53
74
  def parse_hash(hash)
@@ -1,3 +1,3 @@
1
1
  module Duranged
2
- VERSION = '0.0.2'
2
+ VERSION = '0.0.3'
3
3
  end
@@ -180,6 +180,65 @@ RSpec.shared_examples "the base class" do |klass|
180
180
  end
181
181
  end
182
182
 
183
+ describe '#round_to!' do
184
+ context 'when passed minutes' do
185
+ it 'calls #round_to_minutes!' do
186
+ expect(subject).to receive(:round_to_minutes!)
187
+ subject.round_to! :minutes
188
+ end
189
+ end
190
+
191
+ context 'when passed hours' do
192
+ it 'calls #round_to_hours!' do
193
+ expect(subject).to receive(:round_to_hours!)
194
+ subject.round_to! :hours
195
+ end
196
+ end
197
+
198
+ context 'when not passed a period' do
199
+ it 'calls #round_to_minutes!' do
200
+ expect(subject).to receive(:round_to_minutes!)
201
+ subject.round_to!
202
+ end
203
+ end
204
+ end
205
+
206
+ describe '#round_to_minutes!' do
207
+ context 'when seconds is >= 30' do
208
+ subject { klass.new(3630.seconds) }
209
+
210
+ it 'rounds up to the next minute' do
211
+ expect(subject.round_to_minutes!.to_i).to eq 3660
212
+ end
213
+ end
214
+
215
+ context 'when seconds is < 30' do
216
+ subject { klass.new(3620.seconds) }
217
+
218
+ it 'rounds down to the minute' do
219
+ expect(subject.round_to_minutes!.to_i).to eq 3600
220
+ end
221
+ end
222
+ end
223
+
224
+ describe '#round_to_hours!' do
225
+ context 'when minutes is >= 30' do
226
+ subject { klass.new(90.minutes) }
227
+
228
+ it 'rounds up to the next hour' do
229
+ expect(subject.round_to_hours!.to_i).to eq 2.hours
230
+ end
231
+ end
232
+
233
+ context 'when minutes is < 30' do
234
+ subject { klass.new(80.minutes) }
235
+
236
+ it 'rounds down to the hour' do
237
+ expect(subject.round_to_hours!.to_i).to eq 1.hour
238
+ end
239
+ end
240
+ end
241
+
183
242
  describe '#as_json' do
184
243
  it 'returns the value integer' do
185
244
  expect(subject.as_json).to eq subject.value
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: duranged
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mark Rebec
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-13 00:00:00.000000000 Z
11
+ date: 2016-01-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport