ruby-duration 0.5.4 → 2.0.2
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.
- data/.rvmrc +1 -0
- data/Gemfile.lock +4 -5
- data/README.md +1 -0
- data/lib/duration.rb +7 -6
- data/lib/duration/mongoid.rb +32 -29
- data/lib/duration/version.rb +2 -2
- data/lib/ruby-duration.rb +1 -1
- data/ruby-duration.gemspec +2 -2
- data/test/helper.rb +1 -2
- data/test/test_duration.rb +1 -2
- data/test/{duration/test_i18n.rb → test_i18n.rb} +2 -2
- data/test/test_mongoid.rb +49 -0
- metadata +88 -130
- data/test/duration/test_mongoid.rb +0 -45
data/.rvmrc
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
rvm 1.9.2@ruby-duration
|
data/Gemfile.lock
CHANGED
@@ -1,15 +1,16 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
ruby-duration (0.
|
4
|
+
ruby-duration (2.0.1)
|
5
|
+
activesupport (>= 3.0.0)
|
5
6
|
i18n
|
6
7
|
|
7
8
|
GEM
|
8
9
|
remote: http://rubygems.org/
|
9
10
|
specs:
|
10
|
-
activesupport (3.0.
|
11
|
+
activesupport (3.0.9)
|
11
12
|
bluecloth (2.0.9)
|
12
|
-
i18n (0.
|
13
|
+
i18n (0.5.0)
|
13
14
|
minitest (1.7.2)
|
14
15
|
rake (0.8.7)
|
15
16
|
simplecov (0.3.6)
|
@@ -21,10 +22,8 @@ PLATFORMS
|
|
21
22
|
ruby
|
22
23
|
|
23
24
|
DEPENDENCIES
|
24
|
-
activesupport (>= 3.0.0)
|
25
25
|
bluecloth (>= 0.3.5)
|
26
26
|
bundler (>= 1.0.0)
|
27
|
-
i18n
|
28
27
|
minitest
|
29
28
|
rake
|
30
29
|
ruby-duration!
|
data/README.md
CHANGED
@@ -37,6 +37,7 @@ Show me the code
|
|
37
37
|
Duration.new(:weeks => 1, :days => 20).iso8601 => "P3W6DT0H0M0S"
|
38
38
|
|
39
39
|
### Mongoid support
|
40
|
+
The current version of this gem supports Mongoid >= [2.1.0](https://github.com/mongoid/mongoid). For lower Mongoid versions try the tag [v1.0.0](https://github.com/peleteiro/ruby-duration/tree/v1.0.0)
|
40
41
|
|
41
42
|
require 'duration/mongoid'
|
42
43
|
|
data/lib/duration.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
require 'i18n'
|
3
|
+
require 'active_support/core_ext'
|
3
4
|
|
4
5
|
# Duration objects are simple mechanisms that allow you to operate on durations
|
5
6
|
# of time. They allow you to know how much time has passed since a certain
|
@@ -11,7 +12,7 @@ class Duration
|
|
11
12
|
include Comparable
|
12
13
|
|
13
14
|
UNITS = [:seconds, :minutes, :hours, :days, :weeks]
|
14
|
-
|
15
|
+
|
15
16
|
MULTIPLES = {:seconds => 1,
|
16
17
|
:minutes => 60,
|
17
18
|
:hours => 3600,
|
@@ -92,7 +93,7 @@ class Duration
|
|
92
93
|
def blank?
|
93
94
|
@total == 0
|
94
95
|
end
|
95
|
-
|
96
|
+
|
96
97
|
# @return true if total different than 0
|
97
98
|
def present?
|
98
99
|
!blank?
|
@@ -161,7 +162,7 @@ class Duration
|
|
161
162
|
|
162
163
|
alias_method :to_i, :total
|
163
164
|
alias_method :strftime, :format
|
164
|
-
|
165
|
+
|
165
166
|
private
|
166
167
|
|
167
168
|
# Calculates the duration from seconds and figures out what the actual
|
@@ -180,11 +181,11 @@ private
|
|
180
181
|
# Gather the divided units
|
181
182
|
@weeks, @days, @hours, @minutes, @seconds = units
|
182
183
|
end
|
183
|
-
|
184
|
+
|
184
185
|
def i18n_for(singular)
|
185
186
|
plural = "#{singular}s"
|
186
187
|
label = send(plural) == 1 ? singular : plural
|
187
|
-
|
188
|
+
|
188
189
|
I18n.t(label, :scope => :ruby_duration, :default => label.to_s)
|
189
190
|
end
|
190
|
-
end
|
191
|
+
end
|
data/lib/duration/mongoid.rb
CHANGED
@@ -1,34 +1,37 @@
|
|
1
|
-
#
|
2
|
-
require 'duration'
|
3
|
-
require 'active_support/core_ext'
|
1
|
+
require "#{File.dirname(__FILE__)}/../duration"
|
4
2
|
|
5
3
|
# Mongoid serialization support for Duration type.
|
6
|
-
module
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
4
|
+
module Mongoid
|
5
|
+
module Fields
|
6
|
+
module Serializable
|
7
|
+
class Duration
|
8
|
+
include Serializable
|
9
|
+
|
10
|
+
# Deserialize a Duration given the amount of seconds stored by Mongodb
|
11
|
+
#
|
12
|
+
# @param [Integer, nil] duration in seconds
|
13
|
+
# @return [Duration] deserialized Duration
|
14
|
+
def deserialize(seconds)
|
15
|
+
return if !seconds
|
16
|
+
::Duration.new(seconds)
|
17
|
+
end
|
16
18
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
19
|
+
# Serialize a Duration or a Hash (with duration units) or a amount of seconds to
|
20
|
+
# a BSON serializable type.
|
21
|
+
#
|
22
|
+
# @param [Duration, Hash, Integer] value
|
23
|
+
# @return [Integer] duration in seconds
|
24
|
+
def serialize(value)
|
25
|
+
return if value.blank?
|
26
|
+
if value.is_a?(Hash)
|
27
|
+
value.delete_if{|k, v| v.blank? || !::Duration::UNITS.include?(k.to_sym)}
|
28
|
+
return if value.blank?
|
29
|
+
::Duration.new(value).to_i
|
30
|
+
elsif value.respond_to?(:to_i)
|
31
|
+
value.to_i
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
30
35
|
end
|
31
36
|
end
|
32
|
-
end
|
33
|
-
|
34
|
-
Duration.send(:extend, Duration::Mongoid)
|
37
|
+
end
|
data/lib/duration/version.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
1
|
class Duration
|
2
|
-
VERSION = "0.
|
3
|
-
end
|
2
|
+
VERSION = "2.0.2"
|
3
|
+
end
|
data/lib/ruby-duration.rb
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
require
|
2
|
+
require "#{File.dirname(__FILE__)}/duration"
|
data/ruby-duration.gemspec
CHANGED
@@ -6,7 +6,7 @@ Gem::Specification.new do |s|
|
|
6
6
|
s.version = Duration::VERSION
|
7
7
|
s.platform = Gem::Platform::RUBY
|
8
8
|
s.authors = ["Jose Peleteiro", "Bruno Azisaka Maciel"]
|
9
|
-
s.email = ["jose@peleteiro.net", "bruno@
|
9
|
+
s.email = ["jose@peleteiro.net", "bruno@azisaka.com.br"]
|
10
10
|
s.homepage = "http://github.com/peleteiro/ruby-duration"
|
11
11
|
s.summary = "Duration type"
|
12
12
|
s.description = "Duration type"
|
@@ -14,13 +14,13 @@ Gem::Specification.new do |s|
|
|
14
14
|
s.required_rubygems_version = ">= 1.3.6"
|
15
15
|
s.rubyforge_project = "ruby-duration"
|
16
16
|
|
17
|
+
s.add_dependency "activesupport", ">= 3.0.0"
|
17
18
|
s.add_dependency "i18n", ">= 0"
|
18
19
|
|
19
20
|
s.add_development_dependency "bundler", ">= 1.0.0"
|
20
21
|
s.add_development_dependency "minitest", ">= 0"
|
21
22
|
s.add_development_dependency "yard", ">= 0"
|
22
23
|
s.add_development_dependency "rake", ">= 0"
|
23
|
-
s.add_development_dependency "activesupport", ">= 3.0.0"
|
24
24
|
s.add_development_dependency "simplecov", ">= 0.3.5"
|
25
25
|
s.add_development_dependency "bluecloth", ">= 0.3.5"
|
26
26
|
|
data/test/helper.rb
CHANGED
data/test/test_duration.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
require 'helper'
|
3
3
|
|
4
|
-
I18n.load_path << File.join(File.dirname(__FILE__), '
|
4
|
+
I18n.load_path << File.join(File.dirname(__FILE__), 'fixtures', 'locales', 'pt.yml')
|
5
5
|
|
6
|
-
describe "I18n" do
|
6
|
+
describe "I18n" do
|
7
7
|
describe "when the locale is pt" do
|
8
8
|
before do
|
9
9
|
I18n.locale = :pt
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require 'helper'
|
3
|
+
require 'duration/mongoid'
|
4
|
+
|
5
|
+
describe "mongoid support" do
|
6
|
+
before do
|
7
|
+
@mongoid_field = Mongoid::Fields::Serializable::Duration.new
|
8
|
+
end
|
9
|
+
|
10
|
+
describe "#get - Mongoid's deserialization" do
|
11
|
+
it "should return the duration given the total in seconds" do
|
12
|
+
assert_equal Duration.new(90), @mongoid_field.deserialize(90)
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should return nil for nil serialized values" do
|
16
|
+
assert_nil @mongoid_field.deserialize(nil)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe "#set - Mongoid's serialization" do
|
21
|
+
it "should serialize to nil given an invalid serialized value or nil" do
|
22
|
+
assert_nil @mongoid_field.serialize([1,2,3])
|
23
|
+
assert_nil @mongoid_field.serialize(nil)
|
24
|
+
assert_nil @mongoid_field.serialize("")
|
25
|
+
assert_nil @mongoid_field.serialize({})
|
26
|
+
assert_nil @mongoid_field.serialize({:seconds => "", :hours => ""})
|
27
|
+
assert_nil @mongoid_field.serialize({:x => 100, :seconds => ""})
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should return total seconds given a duration" do
|
31
|
+
assert_equal 90, @mongoid_field.serialize(Duration.new(:minutes => 1, :seconds => 30))
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should return total seconds given a duration in seconds" do
|
35
|
+
assert_equal 10, @mongoid_field.serialize(10)
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should return total seconds given a duration in string" do
|
39
|
+
assert_equal 10, @mongoid_field.serialize("10")
|
40
|
+
assert_equal 10, @mongoid_field.serialize("10string")
|
41
|
+
assert_equal 0, @mongoid_field.serialize("string") # not blank
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should return total seconds given a duration in hash" do
|
45
|
+
assert_equal 90, @mongoid_field.serialize(:minutes => 1, :seconds => 30)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
metadata
CHANGED
@@ -1,147 +1,115 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-duration
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
- 0
|
7
|
-
- 5
|
8
|
-
- 4
|
9
|
-
version: 0.5.4
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 2.0.2
|
5
|
+
prerelease:
|
10
6
|
platform: ruby
|
11
|
-
authors:
|
7
|
+
authors:
|
12
8
|
- Jose Peleteiro
|
13
9
|
- Bruno Azisaka Maciel
|
14
10
|
autorequire:
|
15
11
|
bindir: bin
|
16
12
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
13
|
+
date: 2011-08-04 00:00:00.000000000Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: activesupport
|
17
|
+
requirement: &2153695180 !ruby/object:Gem::Requirement
|
18
|
+
none: false
|
19
|
+
requirements:
|
20
|
+
- - ! '>='
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 3.0.0
|
23
|
+
type: :runtime
|
23
24
|
prerelease: false
|
24
|
-
|
25
|
+
version_requirements: *2153695180
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: i18n
|
28
|
+
requirement: &2153694720 !ruby/object:Gem::Requirement
|
25
29
|
none: false
|
26
|
-
requirements:
|
27
|
-
- -
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
|
30
|
-
- 0
|
31
|
-
version: "0"
|
30
|
+
requirements:
|
31
|
+
- - ! '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
32
34
|
type: :runtime
|
33
|
-
version_requirements: *id001
|
34
|
-
- !ruby/object:Gem::Dependency
|
35
|
-
name: bundler
|
36
35
|
prerelease: false
|
37
|
-
|
36
|
+
version_requirements: *2153694720
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: bundler
|
39
|
+
requirement: &2153694260 !ruby/object:Gem::Requirement
|
38
40
|
none: false
|
39
|
-
requirements:
|
40
|
-
- -
|
41
|
-
- !ruby/object:Gem::Version
|
42
|
-
segments:
|
43
|
-
- 1
|
44
|
-
- 0
|
45
|
-
- 0
|
41
|
+
requirements:
|
42
|
+
- - ! '>='
|
43
|
+
- !ruby/object:Gem::Version
|
46
44
|
version: 1.0.0
|
47
45
|
type: :development
|
48
|
-
version_requirements: *id002
|
49
|
-
- !ruby/object:Gem::Dependency
|
50
|
-
name: minitest
|
51
46
|
prerelease: false
|
52
|
-
|
47
|
+
version_requirements: *2153694260
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: minitest
|
50
|
+
requirement: &2153693800 !ruby/object:Gem::Requirement
|
53
51
|
none: false
|
54
|
-
requirements:
|
55
|
-
- -
|
56
|
-
- !ruby/object:Gem::Version
|
57
|
-
|
58
|
-
- 0
|
59
|
-
version: "0"
|
52
|
+
requirements:
|
53
|
+
- - ! '>='
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '0'
|
60
56
|
type: :development
|
61
|
-
version_requirements: *id003
|
62
|
-
- !ruby/object:Gem::Dependency
|
63
|
-
name: yard
|
64
57
|
prerelease: false
|
65
|
-
|
58
|
+
version_requirements: *2153693800
|
59
|
+
- !ruby/object:Gem::Dependency
|
60
|
+
name: yard
|
61
|
+
requirement: &2153693340 !ruby/object:Gem::Requirement
|
66
62
|
none: false
|
67
|
-
requirements:
|
68
|
-
- -
|
69
|
-
- !ruby/object:Gem::Version
|
70
|
-
|
71
|
-
- 0
|
72
|
-
version: "0"
|
63
|
+
requirements:
|
64
|
+
- - ! '>='
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: '0'
|
73
67
|
type: :development
|
74
|
-
version_requirements: *id004
|
75
|
-
- !ruby/object:Gem::Dependency
|
76
|
-
name: rake
|
77
68
|
prerelease: false
|
78
|
-
|
69
|
+
version_requirements: *2153693340
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: rake
|
72
|
+
requirement: &2153692880 !ruby/object:Gem::Requirement
|
79
73
|
none: false
|
80
|
-
requirements:
|
81
|
-
- -
|
82
|
-
- !ruby/object:Gem::Version
|
83
|
-
|
84
|
-
- 0
|
85
|
-
version: "0"
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
86
78
|
type: :development
|
87
|
-
version_requirements: *id005
|
88
|
-
- !ruby/object:Gem::Dependency
|
89
|
-
name: activesupport
|
90
79
|
prerelease: false
|
91
|
-
|
92
|
-
|
93
|
-
requirements:
|
94
|
-
- - ">="
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
segments:
|
97
|
-
- 3
|
98
|
-
- 0
|
99
|
-
- 0
|
100
|
-
version: 3.0.0
|
101
|
-
type: :development
|
102
|
-
version_requirements: *id006
|
103
|
-
- !ruby/object:Gem::Dependency
|
80
|
+
version_requirements: *2153692880
|
81
|
+
- !ruby/object:Gem::Dependency
|
104
82
|
name: simplecov
|
105
|
-
|
106
|
-
requirement: &id007 !ruby/object:Gem::Requirement
|
83
|
+
requirement: &2153692420 !ruby/object:Gem::Requirement
|
107
84
|
none: false
|
108
|
-
requirements:
|
109
|
-
- -
|
110
|
-
- !ruby/object:Gem::Version
|
111
|
-
segments:
|
112
|
-
- 0
|
113
|
-
- 3
|
114
|
-
- 5
|
85
|
+
requirements:
|
86
|
+
- - ! '>='
|
87
|
+
- !ruby/object:Gem::Version
|
115
88
|
version: 0.3.5
|
116
89
|
type: :development
|
117
|
-
version_requirements: *id007
|
118
|
-
- !ruby/object:Gem::Dependency
|
119
|
-
name: bluecloth
|
120
90
|
prerelease: false
|
121
|
-
|
91
|
+
version_requirements: *2153692420
|
92
|
+
- !ruby/object:Gem::Dependency
|
93
|
+
name: bluecloth
|
94
|
+
requirement: &2153691960 !ruby/object:Gem::Requirement
|
122
95
|
none: false
|
123
|
-
requirements:
|
124
|
-
- -
|
125
|
-
- !ruby/object:Gem::Version
|
126
|
-
segments:
|
127
|
-
- 0
|
128
|
-
- 3
|
129
|
-
- 5
|
96
|
+
requirements:
|
97
|
+
- - ! '>='
|
98
|
+
- !ruby/object:Gem::Version
|
130
99
|
version: 0.3.5
|
131
100
|
type: :development
|
132
|
-
|
101
|
+
prerelease: false
|
102
|
+
version_requirements: *2153691960
|
133
103
|
description: Duration type
|
134
|
-
email:
|
104
|
+
email:
|
135
105
|
- jose@peleteiro.net
|
136
|
-
- bruno@
|
106
|
+
- bruno@azisaka.com.br
|
137
107
|
executables: []
|
138
|
-
|
139
108
|
extensions: []
|
140
|
-
|
141
109
|
extra_rdoc_files: []
|
142
|
-
|
143
|
-
files:
|
110
|
+
files:
|
144
111
|
- .gitignore
|
112
|
+
- .rvmrc
|
145
113
|
- Gemfile
|
146
114
|
- Gemfile.lock
|
147
115
|
- LICENSE
|
@@ -152,44 +120,34 @@ files:
|
|
152
120
|
- lib/duration/version.rb
|
153
121
|
- lib/ruby-duration.rb
|
154
122
|
- ruby-duration.gemspec
|
155
|
-
- test/duration/test_i18n.rb
|
156
|
-
- test/duration/test_mongoid.rb
|
157
123
|
- test/fixtures/locales/pt.yml
|
158
124
|
- test/helper.rb
|
159
125
|
- test/test_duration.rb
|
160
|
-
|
126
|
+
- test/test_i18n.rb
|
127
|
+
- test/test_mongoid.rb
|
161
128
|
homepage: http://github.com/peleteiro/ruby-duration
|
162
129
|
licenses: []
|
163
|
-
|
164
130
|
post_install_message:
|
165
|
-
rdoc_options:
|
131
|
+
rdoc_options:
|
166
132
|
- --charset=UTF-8
|
167
|
-
require_paths:
|
133
|
+
require_paths:
|
168
134
|
- lib
|
169
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
135
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
170
136
|
none: false
|
171
|
-
requirements:
|
172
|
-
- -
|
173
|
-
- !ruby/object:Gem::Version
|
174
|
-
|
175
|
-
|
176
|
-
version: "0"
|
177
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
137
|
+
requirements:
|
138
|
+
- - ! '>='
|
139
|
+
- !ruby/object:Gem::Version
|
140
|
+
version: '0'
|
141
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
178
142
|
none: false
|
179
|
-
requirements:
|
180
|
-
- -
|
181
|
-
- !ruby/object:Gem::Version
|
182
|
-
segments:
|
183
|
-
- 1
|
184
|
-
- 3
|
185
|
-
- 6
|
143
|
+
requirements:
|
144
|
+
- - ! '>='
|
145
|
+
- !ruby/object:Gem::Version
|
186
146
|
version: 1.3.6
|
187
147
|
requirements: []
|
188
|
-
|
189
148
|
rubyforge_project: ruby-duration
|
190
|
-
rubygems_version: 1.
|
149
|
+
rubygems_version: 1.8.6
|
191
150
|
signing_key:
|
192
151
|
specification_version: 3
|
193
152
|
summary: Duration type
|
194
153
|
test_files: []
|
195
|
-
|
@@ -1,45 +0,0 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
require 'helper'
|
3
|
-
|
4
|
-
describe "mongoid support" do
|
5
|
-
|
6
|
-
describe "#get - Mongoid's deserialization" do
|
7
|
-
it "should return the duration given the total in seconds" do
|
8
|
-
assert_equal Duration.new(90), Duration.get(90)
|
9
|
-
end
|
10
|
-
|
11
|
-
it "should return nil for nil serialized values" do
|
12
|
-
assert_nil Duration.get(nil)
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
describe "#set - Mongoid's serialization" do
|
17
|
-
it "should serialize to nil given an invalid serialized value or nil" do
|
18
|
-
assert_nil Duration.set([1,2,3])
|
19
|
-
assert_nil Duration.set(nil)
|
20
|
-
assert_nil Duration.set("")
|
21
|
-
assert_nil Duration.set({})
|
22
|
-
assert_nil Duration.set({:seconds => "", :hours => ""})
|
23
|
-
assert_nil Duration.set({:x => 100, :seconds => ""})
|
24
|
-
end
|
25
|
-
|
26
|
-
it "should return total seconds given a duration" do
|
27
|
-
assert_equal 90, Duration.set(Duration.new(:minutes => 1, :seconds => 30))
|
28
|
-
end
|
29
|
-
|
30
|
-
it "should return total seconds given a duration in seconds" do
|
31
|
-
assert_equal 10, Duration.set(10)
|
32
|
-
end
|
33
|
-
|
34
|
-
it "should return total seconds given a duration in string" do
|
35
|
-
assert_equal 10, Duration.set("10")
|
36
|
-
assert_equal 10, Duration.set("10string")
|
37
|
-
assert_equal 0, Duration.set("string") # not blank
|
38
|
-
end
|
39
|
-
|
40
|
-
it "should return total seconds given a duration in hash" do
|
41
|
-
assert_equal 90, Duration.set(:minutes => 1, :seconds => 30)
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
end
|