mongoid 0.5.2 → 0.5.3

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.5.2
1
+ 0.5.3
@@ -268,7 +268,7 @@ module Mongoid #:nodoc:
268
268
  #
269
269
  # Returns: <tt>self</tt>
270
270
  def select(*args)
271
- @options[:fields] = args.flatten; self
271
+ @options[:fields] = args.flatten if args.any?; self
272
272
  end
273
273
 
274
274
  # Adds a criterion to the +Criteria+ that specifies how many results to skip
@@ -1,29 +1,56 @@
1
1
  require "mongoid/extensions/array/conversions"
2
2
  require "mongoid/extensions/array/parentization"
3
+ require "mongoid/extensions/boolean/conversions"
4
+ require "mongoid/extensions/date/conversions"
5
+ require "mongoid/extensions/float/conversions"
3
6
  require "mongoid/extensions/hash/accessors"
7
+ require "mongoid/extensions/integer/conversions"
4
8
  require "mongoid/extensions/object/conversions"
5
9
  require "mongoid/extensions/object/parentization"
10
+ require "mongoid/extensions/string/conversions"
6
11
  require "mongoid/extensions/string/inflections"
7
12
  require "mongoid/extensions/symbol/inflections"
13
+ require "mongoid/extensions/time/conversions"
8
14
 
9
15
  class Array #:nodoc:
10
16
  include Mongoid::Extensions::Array::Conversions
11
17
  include Mongoid::Extensions::Array::Parentization
12
18
  end
13
19
 
20
+ class Boolean #:nodoc
21
+ extend Mongoid::Extensions::Boolean::Conversions
22
+ end
23
+
24
+ class Date #:nodoc
25
+ extend Mongoid::Extensions::Date::Conversions
26
+ end
27
+
28
+ class Float #:nodoc
29
+ extend Mongoid::Extensions::Float::Conversions
30
+ end
31
+
14
32
  class Hash #:nodoc
15
33
  include Mongoid::Extensions::Hash::Accessors
16
34
  end
17
35
 
36
+ class Integer #:nodoc
37
+ extend Mongoid::Extensions::Integer::Conversions
38
+ end
39
+
18
40
  class Object #:nodoc:
19
41
  include Mongoid::Extensions::Object::Conversions
20
42
  include Mongoid::Extensions::Object::Parentization
21
43
  end
22
44
 
23
45
  class String #:nodoc
46
+ extend Mongoid::Extensions::String::Conversions
24
47
  include Mongoid::Extensions::String::Inflections
25
48
  end
26
49
 
27
50
  class Symbol #:nodoc
28
51
  include Mongoid::Extensions::Symbol::Inflections
29
52
  end
53
+
54
+ class Time #:nodoc
55
+ extend Mongoid::Extensions::Time::Conversions
56
+ end
@@ -0,0 +1,12 @@
1
+ module Mongoid #:nodoc:
2
+ module Extensions #:nodoc:
3
+ module Boolean #:nodoc:
4
+ module Conversions #:nodoc:
5
+ def cast(value)
6
+ return true if value == "true"
7
+ false
8
+ end
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,11 @@
1
+ module Mongoid #:nodoc:
2
+ module Extensions #:nodoc:
3
+ module Date #:nodoc:
4
+ module Conversions #:nodoc:
5
+ def cast(value)
6
+ parse(value.to_s)
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module Mongoid #:nodoc:
2
+ module Extensions #:nodoc:
3
+ module Float #:nodoc:
4
+ module Conversions #:nodoc:
5
+ def cast(value)
6
+ value.to_f
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module Mongoid #:nodoc:
2
+ module Extensions #:nodoc:
3
+ module Integer #:nodoc:
4
+ module Conversions #:nodoc:
5
+ def cast(value)
6
+ value.to_i
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module Mongoid #:nodoc:
2
+ module Extensions #:nodoc:
3
+ module String #:nodoc:
4
+ module Conversions #:nodoc:
5
+ def cast(value)
6
+ value.to_s
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module Mongoid #:nodoc:
2
+ module Extensions #:nodoc:
3
+ module Time #:nodoc:
4
+ module Conversions #:nodoc:
5
+ def cast(value)
6
+ value.to_time
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -3,7 +3,8 @@ module Mongoid #:nodoc:
3
3
 
4
4
  attr_reader \
5
5
  :default,
6
- :name
6
+ :name,
7
+ :type
7
8
 
8
9
  # Create the new field with a name and optional additional options. Valid
9
10
  # options are :default
@@ -19,12 +20,13 @@ module Mongoid #:nodoc:
19
20
  def initialize(name, options = {})
20
21
  @name = name
21
22
  @default = options[:default]
23
+ @type = options[:type] || String
22
24
  end
23
25
 
24
26
  # Gets the value for the supplied object. If the object is nil, then the
25
27
  # default value will be returned.
26
28
  def value(object)
27
- object ? object : default
29
+ object ? type.cast(object) : default
28
30
  end
29
31
 
30
32
  end
@@ -4,8 +4,8 @@ module Mongoid
4
4
  def self.included(base)
5
5
  base.class_eval do
6
6
  include InstanceMethods
7
- field :created_at
8
- field :modified_at
7
+ field :created_at, :type => Time
8
+ field :modified_at, :type => Time
9
9
  before_create :update_created_at, :update_modified_at
10
10
  before_save :update_modified_at
11
11
  end
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{mongoid}
8
- s.version = "0.5.2"
8
+ s.version = "0.5.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Durran Jordan"]
@@ -40,11 +40,18 @@ Gem::Specification.new do |s|
40
40
  "lib/mongoid/extensions.rb",
41
41
  "lib/mongoid/extensions/array/conversions.rb",
42
42
  "lib/mongoid/extensions/array/parentization.rb",
43
+ "lib/mongoid/extensions/boolean/conversions.rb",
44
+ "lib/mongoid/extensions/date/conversions.rb",
45
+ "lib/mongoid/extensions/float/conversions.rb",
43
46
  "lib/mongoid/extensions/hash/accessors.rb",
47
+ "lib/mongoid/extensions/integer/conversions.rb",
48
+ "lib/mongoid/extensions/object/casting.rb",
44
49
  "lib/mongoid/extensions/object/conversions.rb",
45
50
  "lib/mongoid/extensions/object/parentization.rb",
51
+ "lib/mongoid/extensions/string/conversions.rb",
46
52
  "lib/mongoid/extensions/string/inflections.rb",
47
53
  "lib/mongoid/extensions/symbol/inflections.rb",
54
+ "lib/mongoid/extensions/time/conversions.rb",
48
55
  "lib/mongoid/field.rb",
49
56
  "lib/mongoid/timestamps.rb",
50
57
  "mongoid.gemspec",
@@ -68,11 +75,17 @@ Gem::Specification.new do |s|
68
75
  "spec/unit/mongoid/document_spec.rb",
69
76
  "spec/unit/mongoid/extensions/array/conversions_spec.rb",
70
77
  "spec/unit/mongoid/extensions/array/parentization_spec.rb",
78
+ "spec/unit/mongoid/extensions/boolean/conversions_spec.rb",
79
+ "spec/unit/mongoid/extensions/date/conversions_spec.rb",
80
+ "spec/unit/mongoid/extensions/float/conversions_spec.rb",
71
81
  "spec/unit/mongoid/extensions/hash/accessors_spec.rb",
82
+ "spec/unit/mongoid/extensions/integer/conversions_spec.rb",
72
83
  "spec/unit/mongoid/extensions/object/conversions_spec.rb",
73
84
  "spec/unit/mongoid/extensions/object/parentization_spec.rb",
85
+ "spec/unit/mongoid/extensions/string/conversions_spec.rb",
74
86
  "spec/unit/mongoid/extensions/string/inflections_spec.rb",
75
87
  "spec/unit/mongoid/extensions/symbol/inflections_spec.rb",
88
+ "spec/unit/mongoid/extensions/time/conversions_spec.rb",
76
89
  "spec/unit/mongoid/field_spec.rb",
77
90
  "spec/unit/mongoid/timestamps_spec.rb"
78
91
  ]
@@ -101,11 +114,17 @@ Gem::Specification.new do |s|
101
114
  "spec/unit/mongoid/document_spec.rb",
102
115
  "spec/unit/mongoid/extensions/array/conversions_spec.rb",
103
116
  "spec/unit/mongoid/extensions/array/parentization_spec.rb",
117
+ "spec/unit/mongoid/extensions/boolean/conversions_spec.rb",
118
+ "spec/unit/mongoid/extensions/date/conversions_spec.rb",
119
+ "spec/unit/mongoid/extensions/float/conversions_spec.rb",
104
120
  "spec/unit/mongoid/extensions/hash/accessors_spec.rb",
121
+ "spec/unit/mongoid/extensions/integer/conversions_spec.rb",
105
122
  "spec/unit/mongoid/extensions/object/conversions_spec.rb",
106
123
  "spec/unit/mongoid/extensions/object/parentization_spec.rb",
124
+ "spec/unit/mongoid/extensions/string/conversions_spec.rb",
107
125
  "spec/unit/mongoid/extensions/string/inflections_spec.rb",
108
126
  "spec/unit/mongoid/extensions/symbol/inflections_spec.rb",
127
+ "spec/unit/mongoid/extensions/time/conversions_spec.rb",
109
128
  "spec/unit/mongoid/field_spec.rb",
110
129
  "spec/unit/mongoid/timestamps_spec.rb"
111
130
  ]
@@ -332,13 +332,26 @@ describe Mongoid::Criteria do
332
332
 
333
333
  describe "#select" do
334
334
 
335
- it "adds the options for limiting by fields" do
336
- @criteria.select(:title, :text)
337
- @criteria.options.should == { :fields => [ :title, :text ] }
335
+ context "when args are provided" do
336
+
337
+ it "adds the options for limiting by fields" do
338
+ @criteria.select(:title, :text)
339
+ @criteria.options.should == { :fields => [ :title, :text ] }
340
+ end
341
+
342
+ it "returns self" do
343
+ @criteria.select.should == @criteria
344
+ end
345
+
338
346
  end
339
347
 
340
- it "returns self" do
341
- @criteria.select.should == @criteria
348
+ context "when no args provided" do
349
+
350
+ it "does not add the field option" do
351
+ @criteria.select
352
+ @criteria.options[:fields].should be_nil
353
+ end
354
+
342
355
  end
343
356
 
344
357
  end
@@ -0,0 +1,25 @@
1
+ require File.join(File.dirname(__FILE__), "/../../../../spec_helper.rb")
2
+
3
+ describe Mongoid::Extensions::Boolean::Conversions do
4
+
5
+ describe "#cast" do
6
+
7
+ context "when 'true'" do
8
+
9
+ it "returns true" do
10
+ Boolean.cast("true").should be_true
11
+ end
12
+
13
+ end
14
+
15
+ context "when 'false'" do
16
+
17
+ it "returns false" do
18
+ Boolean.cast("false").should be_false
19
+ end
20
+
21
+ end
22
+
23
+ end
24
+
25
+ end
@@ -0,0 +1,24 @@
1
+ require File.join(File.dirname(__FILE__), "/../../../../spec_helper.rb")
2
+
3
+ describe Mongoid::Extensions::Date::Conversions do
4
+
5
+ describe "#cast" do
6
+
7
+ context "when string provided" do
8
+
9
+ it "parses the string" do
10
+ Date.cast("1976/11/19").should == Date.new(1976, 11, 19)
11
+ end
12
+
13
+ end
14
+
15
+ context "when time provided" do
16
+
17
+ it "parses the time" do
18
+ Date.cast(30.seconds.ago).should == Date.today
19
+ end
20
+
21
+ end
22
+ end
23
+
24
+ end
@@ -0,0 +1,13 @@
1
+ require File.join(File.dirname(__FILE__), "/../../../../spec_helper.rb")
2
+
3
+ describe Mongoid::Extensions::Float::Conversions do
4
+
5
+ describe "#cast" do
6
+
7
+ it "converts the string to a float" do
8
+ Float.cast("3.45").should == 3.45
9
+ end
10
+
11
+ end
12
+
13
+ end
@@ -0,0 +1,11 @@
1
+ require File.join(File.dirname(__FILE__), "/../../../../spec_helper.rb")
2
+
3
+ describe Mongoid::Extensions::Integer::Conversions do
4
+
5
+ describe "#cast" do
6
+ it "converts the string to an Integer" do
7
+ Integer.cast("32").should == 32
8
+ end
9
+ end
10
+
11
+ end
@@ -0,0 +1,10 @@
1
+ require File.join(File.dirname(__FILE__), "/../../../../spec_helper.rb")
2
+
3
+ describe Mongoid::Extensions::String::Conversions do
4
+
5
+ describe "#cast" do
6
+ it "returns the object to_s" do
7
+ String.cast(1).should == "1"
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,14 @@
1
+ require File.join(File.dirname(__FILE__), "/../../../../spec_helper.rb")
2
+
3
+ describe Mongoid::Extensions::Time::Conversions do
4
+
5
+ describe "#cast" do
6
+ context "when value is a string" do
7
+ it "converts to a time" do
8
+ time = Time.local(1976, 11, 19).utc
9
+ Time.cast(time.to_s).should == time
10
+ end
11
+ end
12
+ end
13
+
14
+ end
@@ -26,10 +26,23 @@ describe Mongoid::Field do
26
26
 
27
27
  end
28
28
 
29
+ describe "#type" do
30
+
31
+ before do
32
+ @field = Mongoid::Field.new(:name)
33
+ end
34
+
35
+ it "defaults to String" do
36
+ @field.type.should == String
37
+ end
38
+
39
+ end
40
+
29
41
  describe "#value" do
30
42
 
31
43
  before do
32
- @field = Mongoid::Field.new(:score, :default => 10)
44
+ @type = mock
45
+ @field = Mongoid::Field.new(:score, :default => 10, :type => @type)
33
46
  end
34
47
 
35
48
  context "nil is provided" do
@@ -42,8 +55,9 @@ describe Mongoid::Field do
42
55
 
43
56
  context "value is provided" do
44
57
 
45
- it "returns the value" do
46
- @field.value(30).should == 30
58
+ it "casts the value" do
59
+ @type.expects(:cast).with("30").returns(30)
60
+ @field.value("30").should == 30
47
61
  end
48
62
 
49
63
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongoid
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.2
4
+ version: 0.5.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Durran Jordan
@@ -86,11 +86,18 @@ files:
86
86
  - lib/mongoid/extensions.rb
87
87
  - lib/mongoid/extensions/array/conversions.rb
88
88
  - lib/mongoid/extensions/array/parentization.rb
89
+ - lib/mongoid/extensions/boolean/conversions.rb
90
+ - lib/mongoid/extensions/date/conversions.rb
91
+ - lib/mongoid/extensions/float/conversions.rb
89
92
  - lib/mongoid/extensions/hash/accessors.rb
93
+ - lib/mongoid/extensions/integer/conversions.rb
94
+ - lib/mongoid/extensions/object/casting.rb
90
95
  - lib/mongoid/extensions/object/conversions.rb
91
96
  - lib/mongoid/extensions/object/parentization.rb
97
+ - lib/mongoid/extensions/string/conversions.rb
92
98
  - lib/mongoid/extensions/string/inflections.rb
93
99
  - lib/mongoid/extensions/symbol/inflections.rb
100
+ - lib/mongoid/extensions/time/conversions.rb
94
101
  - lib/mongoid/field.rb
95
102
  - lib/mongoid/timestamps.rb
96
103
  - mongoid.gemspec
@@ -114,11 +121,17 @@ files:
114
121
  - spec/unit/mongoid/document_spec.rb
115
122
  - spec/unit/mongoid/extensions/array/conversions_spec.rb
116
123
  - spec/unit/mongoid/extensions/array/parentization_spec.rb
124
+ - spec/unit/mongoid/extensions/boolean/conversions_spec.rb
125
+ - spec/unit/mongoid/extensions/date/conversions_spec.rb
126
+ - spec/unit/mongoid/extensions/float/conversions_spec.rb
117
127
  - spec/unit/mongoid/extensions/hash/accessors_spec.rb
128
+ - spec/unit/mongoid/extensions/integer/conversions_spec.rb
118
129
  - spec/unit/mongoid/extensions/object/conversions_spec.rb
119
130
  - spec/unit/mongoid/extensions/object/parentization_spec.rb
131
+ - spec/unit/mongoid/extensions/string/conversions_spec.rb
120
132
  - spec/unit/mongoid/extensions/string/inflections_spec.rb
121
133
  - spec/unit/mongoid/extensions/symbol/inflections_spec.rb
134
+ - spec/unit/mongoid/extensions/time/conversions_spec.rb
122
135
  - spec/unit/mongoid/field_spec.rb
123
136
  - spec/unit/mongoid/timestamps_spec.rb
124
137
  has_rdoc: true
@@ -169,10 +182,16 @@ test_files:
169
182
  - spec/unit/mongoid/document_spec.rb
170
183
  - spec/unit/mongoid/extensions/array/conversions_spec.rb
171
184
  - spec/unit/mongoid/extensions/array/parentization_spec.rb
185
+ - spec/unit/mongoid/extensions/boolean/conversions_spec.rb
186
+ - spec/unit/mongoid/extensions/date/conversions_spec.rb
187
+ - spec/unit/mongoid/extensions/float/conversions_spec.rb
172
188
  - spec/unit/mongoid/extensions/hash/accessors_spec.rb
189
+ - spec/unit/mongoid/extensions/integer/conversions_spec.rb
173
190
  - spec/unit/mongoid/extensions/object/conversions_spec.rb
174
191
  - spec/unit/mongoid/extensions/object/parentization_spec.rb
192
+ - spec/unit/mongoid/extensions/string/conversions_spec.rb
175
193
  - spec/unit/mongoid/extensions/string/inflections_spec.rb
176
194
  - spec/unit/mongoid/extensions/symbol/inflections_spec.rb
195
+ - spec/unit/mongoid/extensions/time/conversions_spec.rb
177
196
  - spec/unit/mongoid/field_spec.rb
178
197
  - spec/unit/mongoid/timestamps_spec.rb