dm-types 1.1.0.rc2 → 1.1.0.rc3
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/Gemfile +1 -1
- data/VERSION +1 -1
- data/dm-types.gemspec +9 -9
- data/lib/dm-types.rb +0 -6
- data/lib/dm-types/bcrypt_hash.rb +3 -3
- data/lib/dm-types/comma_separated_list.rb +9 -6
- data/lib/dm-types/csv.rb +6 -7
- data/lib/dm-types/enum.rb +2 -0
- data/lib/dm-types/epoch_time.rb +13 -11
- data/lib/dm-types/file_path.rb +4 -7
- data/lib/dm-types/flag.rb +17 -5
- data/lib/dm-types/ip_address.rb +9 -6
- data/lib/dm-types/json.rb +4 -0
- data/lib/dm-types/regexp.rb +2 -0
- data/lib/dm-types/slug.rb +5 -3
- data/lib/dm-types/uri.rb +2 -0
- data/lib/dm-types/uuid.rb +2 -0
- data/lib/dm-types/yaml.rb +2 -0
- data/spec/integration/comma_separated_list_spec.rb +1 -5
- data/spec/integration/flag_spec.rb +1 -1
- data/spec/integration/uri_spec.rb +1 -1
- data/spec/unit/epoch_time_spec.rb +49 -64
- metadata +5 -5
data/Gemfile
CHANGED
@@ -5,7 +5,7 @@ source 'http://rubygems.org'
|
|
5
5
|
SOURCE = ENV.fetch('SOURCE', :git).to_sym
|
6
6
|
REPO_POSTFIX = SOURCE == :path ? '' : '.git'
|
7
7
|
DATAMAPPER = SOURCE == :path ? Pathname(__FILE__).dirname.parent : 'http://github.com/datamapper'
|
8
|
-
DM_VERSION = '~> 1.1.0.
|
8
|
+
DM_VERSION = '~> 1.1.0.rc3'
|
9
9
|
DO_VERSION = '~> 0.10.2'
|
10
10
|
DM_DO_ADAPTERS = %w[ sqlite postgres mysql oracle sqlserver ]
|
11
11
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.1.0.
|
1
|
+
1.1.0.rc3
|
data/dm-types.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{dm-types}
|
8
|
-
s.version = "1.1.0.
|
8
|
+
s.version = "1.1.0.rc3"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Dan Kubb"]
|
12
|
-
s.date = %q{2011-03-
|
12
|
+
s.date = %q{2011-03-10}
|
13
13
|
s.description = %q{DataMapper plugin providing extra data types}
|
14
14
|
s.email = %q{dan.kubb [a] gmail [d] com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -87,7 +87,7 @@ Gem::Specification.new do |s|
|
|
87
87
|
s.homepage = %q{http://github.com/datamapper/dm-types}
|
88
88
|
s.require_paths = ["lib"]
|
89
89
|
s.rubyforge_project = %q{datamapper}
|
90
|
-
s.rubygems_version = %q{1.
|
90
|
+
s.rubygems_version = %q{1.6.2}
|
91
91
|
s.summary = %q{DataMapper plugin providing extra data types}
|
92
92
|
s.test_files = [
|
93
93
|
"spec/fixtures/article.rb",
|
@@ -133,35 +133,35 @@ Gem::Specification.new do |s|
|
|
133
133
|
|
134
134
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
135
135
|
s.add_runtime_dependency(%q<bcrypt-ruby>, ["~> 2.1.4"])
|
136
|
-
s.add_runtime_dependency(%q<dm-core>, ["~> 1.1.0.
|
136
|
+
s.add_runtime_dependency(%q<dm-core>, ["~> 1.1.0.rc3"])
|
137
137
|
s.add_runtime_dependency(%q<fastercsv>, ["~> 1.5.4"])
|
138
138
|
s.add_runtime_dependency(%q<json>, ["~> 1.4.6"])
|
139
139
|
s.add_runtime_dependency(%q<stringex>, ["~> 1.2.0"])
|
140
140
|
s.add_runtime_dependency(%q<uuidtools>, ["~> 2.1.2"])
|
141
|
-
s.add_development_dependency(%q<dm-validations>, ["~> 1.1.0.
|
141
|
+
s.add_development_dependency(%q<dm-validations>, ["~> 1.1.0.rc3"])
|
142
142
|
s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
|
143
143
|
s.add_development_dependency(%q<rake>, ["~> 0.8.7"])
|
144
144
|
s.add_development_dependency(%q<rspec>, ["~> 1.3.1"])
|
145
145
|
else
|
146
146
|
s.add_dependency(%q<bcrypt-ruby>, ["~> 2.1.4"])
|
147
|
-
s.add_dependency(%q<dm-core>, ["~> 1.1.0.
|
147
|
+
s.add_dependency(%q<dm-core>, ["~> 1.1.0.rc3"])
|
148
148
|
s.add_dependency(%q<fastercsv>, ["~> 1.5.4"])
|
149
149
|
s.add_dependency(%q<json>, ["~> 1.4.6"])
|
150
150
|
s.add_dependency(%q<stringex>, ["~> 1.2.0"])
|
151
151
|
s.add_dependency(%q<uuidtools>, ["~> 2.1.2"])
|
152
|
-
s.add_dependency(%q<dm-validations>, ["~> 1.1.0.
|
152
|
+
s.add_dependency(%q<dm-validations>, ["~> 1.1.0.rc3"])
|
153
153
|
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
154
154
|
s.add_dependency(%q<rake>, ["~> 0.8.7"])
|
155
155
|
s.add_dependency(%q<rspec>, ["~> 1.3.1"])
|
156
156
|
end
|
157
157
|
else
|
158
158
|
s.add_dependency(%q<bcrypt-ruby>, ["~> 2.1.4"])
|
159
|
-
s.add_dependency(%q<dm-core>, ["~> 1.1.0.
|
159
|
+
s.add_dependency(%q<dm-core>, ["~> 1.1.0.rc3"])
|
160
160
|
s.add_dependency(%q<fastercsv>, ["~> 1.5.4"])
|
161
161
|
s.add_dependency(%q<json>, ["~> 1.4.6"])
|
162
162
|
s.add_dependency(%q<stringex>, ["~> 1.2.0"])
|
163
163
|
s.add_dependency(%q<uuidtools>, ["~> 2.1.2"])
|
164
|
-
s.add_dependency(%q<dm-validations>, ["~> 1.1.0.
|
164
|
+
s.add_dependency(%q<dm-validations>, ["~> 1.1.0.rc3"])
|
165
165
|
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
166
166
|
s.add_dependency(%q<rake>, ["~> 0.8.7"])
|
167
167
|
s.add_dependency(%q<rspec>, ["~> 1.3.1"])
|
data/lib/dm-types.rb
CHANGED
data/lib/dm-types/bcrypt_hash.rb
CHANGED
@@ -4,6 +4,7 @@ require 'bcrypt'
|
|
4
4
|
module DataMapper
|
5
5
|
class Property
|
6
6
|
class BCryptHash < String
|
7
|
+
|
7
8
|
length 60
|
8
9
|
|
9
10
|
def primitive?(value)
|
@@ -11,9 +12,7 @@ module DataMapper
|
|
11
12
|
end
|
12
13
|
|
13
14
|
def load(value)
|
14
|
-
|
15
|
-
nil
|
16
|
-
else
|
15
|
+
unless value.nil?
|
17
16
|
begin
|
18
17
|
primitive?(value) ? value : BCrypt::Password.new(value)
|
19
18
|
rescue BCrypt::Errors::InvalidHash
|
@@ -29,6 +28,7 @@ module DataMapper
|
|
29
28
|
def typecast_to_primitive(value)
|
30
29
|
load(value)
|
31
30
|
end
|
31
|
+
|
32
32
|
end # class BCryptHash
|
33
33
|
end # class Property
|
34
34
|
end # module DataMapper
|
@@ -4,23 +4,26 @@ require 'dm-types/yaml'
|
|
4
4
|
module DataMapper
|
5
5
|
class Property
|
6
6
|
class CommaSeparatedList < Yaml
|
7
|
+
|
7
8
|
def dump(value)
|
8
9
|
if value.nil?
|
9
10
|
nil
|
10
11
|
elsif value.kind_of?(::Array)
|
11
12
|
super(value)
|
12
13
|
elsif value.kind_of?(::String)
|
13
|
-
v =
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
14
|
+
v = []
|
15
|
+
|
16
|
+
value.split(',').each do |element|
|
17
|
+
element.strip!
|
18
|
+
v << element unless element.empty?
|
19
|
+
end
|
20
|
+
|
18
21
|
super(v)
|
19
22
|
else
|
20
23
|
raise ArgumentError, "+value+ of CommaSeparatedList must be a string, an array or nil, but given #{value.inspect}"
|
21
24
|
end
|
22
25
|
end # dump
|
23
|
-
end # CommaSeparatedList
|
24
26
|
|
27
|
+
end # CommaSeparatedList
|
25
28
|
end # Property
|
26
29
|
end # DataMapper
|
data/lib/dm-types/csv.rb
CHANGED
@@ -10,27 +10,26 @@ end
|
|
10
10
|
module DataMapper
|
11
11
|
class Property
|
12
12
|
class Csv < Text
|
13
|
+
|
13
14
|
def primitive?(value)
|
14
15
|
super || value.kind_of?(::Array)
|
15
16
|
end
|
16
17
|
|
17
18
|
def load(value)
|
18
19
|
case value
|
19
|
-
|
20
|
-
|
21
|
-
else
|
22
|
-
nil
|
20
|
+
when ::String then CSV.parse(value)
|
21
|
+
when ::Array then value
|
23
22
|
end
|
24
23
|
end
|
25
24
|
|
26
25
|
def dump(value)
|
27
26
|
case value
|
28
|
-
when ::Array
|
27
|
+
when ::Array
|
28
|
+
CSV.generate { |csv| value.each { |row| csv << row } }
|
29
29
|
when ::String then value
|
30
|
-
else
|
31
|
-
nil
|
32
30
|
end
|
33
31
|
end
|
32
|
+
|
34
33
|
end # class Csv
|
35
34
|
end # class Property
|
36
35
|
end # module DataMapper
|
data/lib/dm-types/enum.rb
CHANGED
@@ -4,6 +4,7 @@ require 'dm-types/support/flags'
|
|
4
4
|
module DataMapper
|
5
5
|
class Property
|
6
6
|
class Enum < Integer
|
7
|
+
|
7
8
|
include Flags
|
8
9
|
|
9
10
|
def initialize(model, name, options = {})
|
@@ -46,6 +47,7 @@ module DataMapper
|
|
46
47
|
else value
|
47
48
|
end
|
48
49
|
end
|
50
|
+
|
49
51
|
end # class Enum
|
50
52
|
end # class Property
|
51
53
|
end # module DataMapper
|
data/lib/dm-types/epoch_time.rb
CHANGED
@@ -1,18 +1,12 @@
|
|
1
1
|
require 'dm-core'
|
2
2
|
|
3
|
-
begin
|
4
|
-
# provide Time#utc_time for DateTime#to_time in AS
|
5
|
-
require 'active_support/core_ext/time/calculations'
|
6
|
-
rescue LoadError
|
7
|
-
# do nothing, extlib is being used and does not require this method
|
8
|
-
end
|
9
|
-
|
10
3
|
module DataMapper
|
11
4
|
class Property
|
12
5
|
class EpochTime < Integer
|
6
|
+
|
13
7
|
def load(value)
|
14
|
-
if value.kind_of?(::
|
15
|
-
::Time.at(value)
|
8
|
+
if value.kind_of?(::Numeric)
|
9
|
+
::Time.at(value.to_i)
|
16
10
|
else
|
17
11
|
value
|
18
12
|
end
|
@@ -20,10 +14,18 @@ module DataMapper
|
|
20
14
|
|
21
15
|
def dump(value)
|
22
16
|
case value
|
23
|
-
when ::
|
24
|
-
when ::DateTime then value.
|
17
|
+
when ::Numeric, ::Time then value.to_i
|
18
|
+
when ::DateTime then datetime_to_time(value).to_i
|
25
19
|
end
|
26
20
|
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
def datetime_to_time(datetime)
|
25
|
+
utc = datetime.new_offset(0)
|
26
|
+
::Time.utc(utc.year, utc.month, utc.day, utc.hour, utc.min, utc.sec)
|
27
|
+
end
|
28
|
+
|
27
29
|
end # class EpochTime
|
28
30
|
end # class Property
|
29
31
|
end # module DataMapper
|
data/lib/dm-types/file_path.rb
CHANGED
@@ -4,6 +4,7 @@ require 'dm-core'
|
|
4
4
|
module DataMapper
|
5
5
|
class Property
|
6
6
|
class FilePath < String
|
7
|
+
|
7
8
|
length 255
|
8
9
|
|
9
10
|
def primitive?(value)
|
@@ -15,21 +16,17 @@ module DataMapper
|
|
15
16
|
end
|
16
17
|
|
17
18
|
def load(value)
|
18
|
-
|
19
|
-
nil
|
20
|
-
else
|
21
|
-
Pathname.new(value)
|
22
|
-
end
|
19
|
+
Pathname.new(value) unless DataMapper::Ext.blank?(value)
|
23
20
|
end
|
24
21
|
|
25
22
|
def dump(value)
|
26
|
-
|
27
|
-
value.to_s
|
23
|
+
value.to_s unless DataMapper::Ext.blank?(value)
|
28
24
|
end
|
29
25
|
|
30
26
|
def typecast_to_primitive(value)
|
31
27
|
load(value)
|
32
28
|
end
|
29
|
+
|
33
30
|
end # class FilePath
|
34
31
|
end # class Property
|
35
32
|
end # module DataMapper
|
data/lib/dm-types/flag.rb
CHANGED
@@ -4,6 +4,7 @@ require 'dm-types/support/flags'
|
|
4
4
|
module DataMapper
|
5
5
|
class Property
|
6
6
|
class Flag < Integer
|
7
|
+
|
7
8
|
include Flags
|
8
9
|
|
9
10
|
def initialize(model, name, options = {})
|
@@ -34,18 +35,29 @@ module DataMapper
|
|
34
35
|
end
|
35
36
|
|
36
37
|
def dump(value)
|
37
|
-
|
38
|
-
|
39
|
-
|
38
|
+
unless value.nil?
|
39
|
+
flags = Array(value).map { |flag| flag.to_sym }
|
40
|
+
flags.uniq!
|
41
|
+
|
42
|
+
flag = 0
|
43
|
+
|
44
|
+
flag_map.invert.values_at(*flags).each do |i|
|
45
|
+
next if i.nil?
|
46
|
+
flag += (1 << i)
|
47
|
+
end
|
48
|
+
|
49
|
+
flag
|
50
|
+
end
|
40
51
|
end
|
41
52
|
|
42
53
|
def typecast(value)
|
43
54
|
case value
|
44
|
-
when nil
|
45
|
-
when ::Array then value.map {|v| v.to_sym}
|
55
|
+
when nil then nil
|
56
|
+
when ::Array then value.map { |v| v.to_sym }
|
46
57
|
else [value.to_sym]
|
47
58
|
end
|
48
59
|
end
|
60
|
+
|
49
61
|
end # class Flag
|
50
62
|
end # class Property
|
51
63
|
end # module DataMapper
|
data/lib/dm-types/ip_address.rb
CHANGED
@@ -4,6 +4,7 @@ require 'dm-core'
|
|
4
4
|
module DataMapper
|
5
5
|
class Property
|
6
6
|
class IPAddress < String
|
7
|
+
|
7
8
|
length 39
|
8
9
|
|
9
10
|
def primitive?(value)
|
@@ -17,23 +18,25 @@ module DataMapper
|
|
17
18
|
def load(value)
|
18
19
|
if value.nil?
|
19
20
|
nil
|
20
|
-
elsif value.is_a?(::String)
|
21
|
-
|
22
|
-
|
23
|
-
|
21
|
+
elsif value.is_a?(::String)
|
22
|
+
unless value.empty?
|
23
|
+
IPAddr.new(value)
|
24
|
+
else
|
25
|
+
IPAddr.new("0.0.0.0")
|
26
|
+
end
|
24
27
|
else
|
25
28
|
raise ArgumentError.new("+value+ must be nil or a String")
|
26
29
|
end
|
27
30
|
end
|
28
31
|
|
29
32
|
def dump(value)
|
30
|
-
|
31
|
-
value.to_s
|
33
|
+
value.to_s unless value.nil?
|
32
34
|
end
|
33
35
|
|
34
36
|
def typecast_to_primitive(value)
|
35
37
|
load(value)
|
36
38
|
end
|
39
|
+
|
37
40
|
end # class IPAddress
|
38
41
|
end # module Property
|
39
42
|
end # module DataMapper
|
data/lib/dm-types/json.rb
CHANGED
@@ -4,6 +4,7 @@ require 'json' unless defined? JSON
|
|
4
4
|
module DataMapper
|
5
5
|
class Property
|
6
6
|
class Json < Text
|
7
|
+
|
7
8
|
def custom?
|
8
9
|
true
|
9
10
|
end
|
@@ -37,7 +38,10 @@ module DataMapper
|
|
37
38
|
def typecast_to_primitive(value)
|
38
39
|
::JSON.load(value.to_s)
|
39
40
|
end
|
41
|
+
|
40
42
|
end # class Json
|
43
|
+
|
41
44
|
JSON = Json
|
45
|
+
|
42
46
|
end # class Property
|
43
47
|
end # module DataMapper
|
data/lib/dm-types/regexp.rb
CHANGED
data/lib/dm-types/slug.rb
CHANGED
@@ -4,15 +4,16 @@ require 'stringex'
|
|
4
4
|
module DataMapper
|
5
5
|
class Property
|
6
6
|
class Slug < String
|
7
|
+
|
7
8
|
# Maximum length chosen because URI type is limited to 2000
|
8
9
|
# characters, and a slug is a component of a URI, so it should
|
9
10
|
# not exceed the maximum URI length either.
|
10
11
|
length 2000
|
11
12
|
|
12
13
|
def typecast(value)
|
13
|
-
|
14
|
-
|
15
|
-
|
14
|
+
if value.nil?
|
15
|
+
nil
|
16
|
+
elsif value.respond_to?(:to_str)
|
16
17
|
escape(value.to_str)
|
17
18
|
else
|
18
19
|
raise ArgumentError, '+value+ must be nil or respond to #to_str'
|
@@ -22,6 +23,7 @@ module DataMapper
|
|
22
23
|
def escape(string)
|
23
24
|
string.to_url
|
24
25
|
end
|
26
|
+
|
25
27
|
end # class Slug
|
26
28
|
end # class Property
|
27
29
|
end # module DataMapper
|
data/lib/dm-types/uri.rb
CHANGED
@@ -4,6 +4,7 @@ require 'dm-core'
|
|
4
4
|
module DataMapper
|
5
5
|
class Property
|
6
6
|
class URI < String
|
7
|
+
|
7
8
|
# Maximum length chosen based on recommendation:
|
8
9
|
# http://stackoverflow.com/questions/417142/what-is-the-maximum-length-of-an-url
|
9
10
|
length 2000
|
@@ -31,6 +32,7 @@ module DataMapper
|
|
31
32
|
def typecast_to_primitive(value)
|
32
33
|
load(value)
|
33
34
|
end
|
35
|
+
|
34
36
|
end # class URI
|
35
37
|
end # class Property
|
36
38
|
end # module DataMapper
|
data/lib/dm-types/uuid.rb
CHANGED
@@ -39,6 +39,7 @@ module DataMapper
|
|
39
39
|
# -- benburkert Nov 15, 08
|
40
40
|
#
|
41
41
|
class UUID < String
|
42
|
+
|
42
43
|
length 36
|
43
44
|
|
44
45
|
# We need to override this method otherwise typecast_to_primitive won't be called.
|
@@ -67,6 +68,7 @@ module DataMapper
|
|
67
68
|
def typecast_to_primitive(value)
|
68
69
|
load(value)
|
69
70
|
end
|
71
|
+
|
70
72
|
end
|
71
73
|
end
|
72
74
|
end
|
data/lib/dm-types/yaml.rb
CHANGED
@@ -4,6 +4,7 @@ require 'dm-core'
|
|
4
4
|
module DataMapper
|
5
5
|
class Property
|
6
6
|
class Yaml < Text
|
7
|
+
|
7
8
|
def custom?
|
8
9
|
true
|
9
10
|
end
|
@@ -31,6 +32,7 @@ module DataMapper
|
|
31
32
|
def typecast(value)
|
32
33
|
value
|
33
34
|
end
|
35
|
+
|
34
36
|
end # class Yaml
|
35
37
|
end # class Property
|
36
38
|
end # module DataMapper
|
@@ -78,11 +78,7 @@ try_spec do
|
|
78
78
|
end
|
79
79
|
|
80
80
|
it 'has blank entries removed' do
|
81
|
-
@resource.interests.any? { |i|
|
82
|
-
end
|
83
|
-
|
84
|
-
it 'has duplicates removed' do
|
85
|
-
@resource.interests.select { |i| i == 'fire' }.size.should == 1
|
81
|
+
@resource.interests.any? { |i| DataMapper::Ext.blank?(i) }.should be(false)
|
86
82
|
end
|
87
83
|
end
|
88
84
|
end
|
@@ -120,7 +120,7 @@ try_spec do
|
|
120
120
|
end
|
121
121
|
|
122
122
|
it 'can be found by uri' do
|
123
|
-
DataMapper::TypesFixtures::Bookmark.first(:uri => uri).should_not
|
123
|
+
DataMapper::TypesFixtures::Bookmark.first(:uri => uri).should_not be_nil
|
124
124
|
end
|
125
125
|
|
126
126
|
describe 'when reloaded' do
|
@@ -1,73 +1,58 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
3
|
+
describe DataMapper::Property::EpochTime do
|
4
|
+
before :all do
|
5
|
+
class ::User
|
6
|
+
include DataMapper::Resource
|
7
|
+
|
8
|
+
property :id, Serial
|
9
|
+
property :bday, EpochTime
|
10
|
+
end
|
11
|
+
|
12
|
+
@property = User.properties[:bday]
|
13
|
+
end
|
14
|
+
|
15
|
+
describe '#dump' do
|
16
|
+
subject { @property.dump(value) }
|
17
|
+
|
18
|
+
describe 'with a Time instance' do
|
19
|
+
let(:value) { Time.now }
|
20
|
+
|
21
|
+
it { should == value.to_i }
|
22
|
+
end
|
23
|
+
|
24
|
+
describe 'with a DateTime instance' do
|
25
|
+
let(:value) { DateTime.now }
|
26
|
+
|
27
|
+
it { should == Time.parse(value.to_s).to_i }
|
13
28
|
end
|
14
29
|
|
15
|
-
describe '
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
end
|
36
|
-
|
37
|
-
describe 'when given an integer' do
|
38
|
-
before :all do
|
39
|
-
@input = Time.now.to_i
|
40
|
-
end
|
41
|
-
|
42
|
-
it 'returns value as is' do
|
43
|
-
@property.dump(@input).should == @input
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
describe 'when given nil' do
|
48
|
-
before :all do
|
49
|
-
@input = nil
|
50
|
-
end
|
51
|
-
|
52
|
-
it 'returns value as is' do
|
53
|
-
@property.dump(@input).should == @input
|
54
|
-
end
|
55
|
-
end
|
30
|
+
describe 'with a number' do
|
31
|
+
let(:value) { Time.now.to_i }
|
32
|
+
|
33
|
+
it { should == value }
|
34
|
+
end
|
35
|
+
|
36
|
+
describe 'with nil' do
|
37
|
+
let(:value) { nil }
|
38
|
+
|
39
|
+
it { should == value }
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
describe '#load' do
|
44
|
+
subject { @property.load(value) }
|
45
|
+
|
46
|
+
describe 'with a number' do
|
47
|
+
let(:value) { Time.now.to_i }
|
48
|
+
|
49
|
+
it { should == Time.at(value) }
|
56
50
|
end
|
57
51
|
|
58
|
-
describe '
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
describe 'when value is an integer' do
|
66
|
-
it 'returns time object from timestamp' do
|
67
|
-
t = Time.now.to_i
|
68
|
-
@property.load(Time.now.to_i).should == Time.at(t)
|
69
|
-
end
|
70
|
-
end
|
52
|
+
describe 'with nil' do
|
53
|
+
let(:value) { nil }
|
54
|
+
|
55
|
+
it { should == value }
|
71
56
|
end
|
72
57
|
end
|
73
58
|
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: dm-types
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease: 6
|
5
|
-
version: 1.1.0.
|
5
|
+
version: 1.1.0.rc3
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Dan Kubb
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-03-
|
13
|
+
date: 2011-03-10 00:00:00 -08:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -31,7 +31,7 @@ dependencies:
|
|
31
31
|
requirements:
|
32
32
|
- - ~>
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: 1.1.0.
|
34
|
+
version: 1.1.0.rc3
|
35
35
|
type: :runtime
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: *id002
|
@@ -86,7 +86,7 @@ dependencies:
|
|
86
86
|
requirements:
|
87
87
|
- - ~>
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: 1.1.0.
|
89
|
+
version: 1.1.0.rc3
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: *id007
|
@@ -223,7 +223,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
223
223
|
requirements: []
|
224
224
|
|
225
225
|
rubyforge_project: datamapper
|
226
|
-
rubygems_version: 1.
|
226
|
+
rubygems_version: 1.6.2
|
227
227
|
signing_key:
|
228
228
|
specification_version: 3
|
229
229
|
summary: DataMapper plugin providing extra data types
|