dm-types 0.9.3 → 0.9.4
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/lib/dm-types.rb +1 -1
- data/lib/dm-types/enum.rb +20 -1
- data/lib/dm-types/version.rb +2 -2
- data/spec/integration/enum_spec.rb +31 -2
- data/spec/integration/file_path_spec.rb +1 -1
- data/spec/unit/csv_spec.rb +6 -6
- data/spec/unit/json_spec.rb +4 -4
- data/spec/unit/yaml_spec.rb +5 -5
- metadata +3 -3
data/lib/dm-types.rb
CHANGED
data/lib/dm-types/enum.rb
CHANGED
@@ -33,7 +33,10 @@ module DataMapper
|
|
33
33
|
end
|
34
34
|
|
35
35
|
def self.dump(value, property)
|
36
|
-
|
36
|
+
case value
|
37
|
+
when Array then value.collect { |v| self.dump(v, property) }
|
38
|
+
else self.flag_map.invert[value]
|
39
|
+
end
|
37
40
|
end
|
38
41
|
|
39
42
|
def self.typecast(value, property)
|
@@ -48,4 +51,20 @@ module DataMapper
|
|
48
51
|
end
|
49
52
|
end # class Enum
|
50
53
|
end # module Types
|
54
|
+
|
55
|
+
if defined?(Validate)
|
56
|
+
module Validate
|
57
|
+
module AutoValidate
|
58
|
+
alias :orig_auto_generate_validations :auto_generate_validations
|
59
|
+
def auto_generate_validations(property)
|
60
|
+
orig_auto_generate_validations(property)
|
61
|
+
return unless property.options[:auto_validation]
|
62
|
+
|
63
|
+
if property.type.ancestors.include?(Types::Enum)
|
64
|
+
validates_within property.name, options_with_message({:set => property.type.flag_map.values}, property, :within)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
51
70
|
end # module DataMapper
|
data/lib/dm-types/version.rb
CHANGED
@@ -14,8 +14,8 @@ describe DataMapper::Types::Enum do
|
|
14
14
|
|
15
15
|
it "should work" do
|
16
16
|
repository(:default) do
|
17
|
-
Bug.create
|
18
|
-
Bug.create
|
17
|
+
Bug.create(:status => :crit)
|
18
|
+
Bug.create(:status => :warn)
|
19
19
|
end
|
20
20
|
|
21
21
|
bugs = Bug.all
|
@@ -26,4 +26,33 @@ describe DataMapper::Types::Enum do
|
|
26
26
|
it 'should immediately typecast supplied values' do
|
27
27
|
Bug.new(:status => :crit).status.should == :crit
|
28
28
|
end
|
29
|
+
|
30
|
+
describe "with finders" do
|
31
|
+
before(:all) do
|
32
|
+
@info = Bug.create(:status => :info)
|
33
|
+
end
|
34
|
+
it "should work with equality opeand" do
|
35
|
+
Bug.all(:status => [:info, :unknown]).entries.should == [@info]
|
36
|
+
end
|
37
|
+
it "should work with inequality operand" do
|
38
|
+
Bug.all(:status.not => [:crit, :warn]).entries.should == [@info]
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
if defined?(Validate)
|
43
|
+
describe 'with validation' do
|
44
|
+
it "should accept crit status" do
|
45
|
+
bug = Bug.new
|
46
|
+
bug.status = :crit
|
47
|
+
bug.should be_valid
|
48
|
+
end
|
49
|
+
|
50
|
+
it "should not accept blah status" do
|
51
|
+
bug = Bug.new
|
52
|
+
bug.status = :blah
|
53
|
+
bug.should_not be_valid
|
54
|
+
bug.errors.on(:status).should_not be_empty
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
29
58
|
end
|
data/spec/unit/csv_spec.rb
CHANGED
@@ -8,15 +8,15 @@ describe DataMapper::Types::Csv, ".load" do
|
|
8
8
|
FasterCSV.should_receive(:parse).with('csv_string').once
|
9
9
|
DataMapper::Types::Csv.load('csv_string', :property)
|
10
10
|
end
|
11
|
-
|
11
|
+
|
12
12
|
it 'should do nothing if the value is a string' do
|
13
13
|
FasterCSV.should_not_receive(:parse)
|
14
14
|
DataMapper::Types::Csv.load([], :property).should == []
|
15
15
|
end
|
16
|
-
|
16
|
+
|
17
17
|
it 'should return nil otherwise' do
|
18
18
|
DataMapper::Types::Csv.load({}, :property).should == nil
|
19
|
-
DataMapper::Types::Csv.load(nil, :property).should == nil
|
19
|
+
DataMapper::Types::Csv.load(nil, :property).should == nil
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
@@ -24,14 +24,14 @@ describe DataMapper::Types::Csv, ".dump" do
|
|
24
24
|
it 'should dump to CSV' do
|
25
25
|
DataMapper::Types::Csv.dump([[1, 2, 3]], :property).should == "1,2,3\n"
|
26
26
|
end
|
27
|
-
|
27
|
+
|
28
28
|
it 'should do nothing if the value is a string' do
|
29
29
|
FasterCSV.should_not_receive(:generate)
|
30
30
|
DataMapper::Types::Csv.dump('string', :property).should == 'string'
|
31
31
|
end
|
32
|
-
|
32
|
+
|
33
33
|
it 'should return nil otherwise' do
|
34
34
|
DataMapper::Types::Csv.dump({}, :property).should == nil
|
35
|
-
DataMapper::Types::Csv.dump(nil, :property).should == nil
|
35
|
+
DataMapper::Types::Csv.dump(nil, :property).should == nil
|
36
36
|
end
|
37
37
|
end
|
data/spec/unit/json_spec.rb
CHANGED
@@ -5,12 +5,12 @@ describe DataMapper::Types::Json, ".load" do
|
|
5
5
|
it 'should return nil if nil is provided' do
|
6
6
|
DataMapper::Types::Json.load(nil, :property).should be_nil
|
7
7
|
end
|
8
|
-
|
8
|
+
|
9
9
|
it 'should parse the value if a string is provided' do
|
10
10
|
JSON.should_receive(:load).with('json_string').once
|
11
11
|
DataMapper::Types::Json.load('json_string', :property)
|
12
12
|
end
|
13
|
-
|
13
|
+
|
14
14
|
it 'should raise an ArgumentError if something else is given' do
|
15
15
|
lambda {
|
16
16
|
DataMapper::Types::Json.load(:sym, :property)
|
@@ -22,12 +22,12 @@ describe DataMapper::Types::Json, ".dump" do
|
|
22
22
|
it 'should return nil if the value is nil' do
|
23
23
|
DataMapper::Types::Json.dump(nil, :property).should be_nil
|
24
24
|
end
|
25
|
-
|
25
|
+
|
26
26
|
it 'should do nothing if the value is a string' do
|
27
27
|
JSON.should_not_receive(:dump)
|
28
28
|
DataMapper::Types::Json.dump('', :property).should be_kind_of(String)
|
29
29
|
end
|
30
|
-
|
30
|
+
|
31
31
|
it 'should dump to a JSON string otherwise' do
|
32
32
|
JSON.should_receive(:dump).with([]).once
|
33
33
|
DataMapper::Types::Json.dump([], :property)
|
data/spec/unit/yaml_spec.rb
CHANGED
@@ -5,12 +5,12 @@ describe DataMapper::Types::Yaml, ".load" do
|
|
5
5
|
it 'should return nil if nil is provided' do
|
6
6
|
DataMapper::Types::Yaml.load(nil, :property).should be_nil
|
7
7
|
end
|
8
|
-
|
8
|
+
|
9
9
|
it 'should parse the value if a string is provided' do
|
10
10
|
YAML.should_receive(:load).with('yaml_string').once
|
11
11
|
DataMapper::Types::Yaml.load('yaml_string', :property)
|
12
12
|
end
|
13
|
-
|
13
|
+
|
14
14
|
it 'should raise an ArgumentError if something else is given' do
|
15
15
|
lambda {
|
16
16
|
DataMapper::Types::Yaml.load(:sym, :property)
|
@@ -22,17 +22,17 @@ describe DataMapper::Types::Yaml, ".dump" do
|
|
22
22
|
it 'should return nil if the value is nil' do
|
23
23
|
DataMapper::Types::Yaml.dump(nil, :property).should be_nil
|
24
24
|
end
|
25
|
-
|
25
|
+
|
26
26
|
it 'should do nothing if the value is a string which begins with ---' do
|
27
27
|
YAML.should_not_receive(:dump)
|
28
28
|
DataMapper::Types::Yaml.dump('--- str', :property).should be_kind_of(String)
|
29
29
|
end
|
30
|
-
|
30
|
+
|
31
31
|
it 'should dump to a YAML string if the value is a normal string' do
|
32
32
|
YAML.should_receive(:dump).with('string').once
|
33
33
|
DataMapper::Types::Yaml.dump('string', :property)
|
34
34
|
end
|
35
|
-
|
35
|
+
|
36
36
|
it 'should dump to a YAML string otherwise' do
|
37
37
|
YAML.should_receive(:dump).with([]).once
|
38
38
|
DataMapper::Types::Yaml.dump([], :property)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dm-types
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sam Smoot
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-
|
12
|
+
date: 2008-08-21 00:00:00 -05:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -20,7 +20,7 @@ dependencies:
|
|
20
20
|
requirements:
|
21
21
|
- - "="
|
22
22
|
- !ruby/object:Gem::Version
|
23
|
-
version: 0.9.
|
23
|
+
version: 0.9.4
|
24
24
|
version:
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: hoe
|