mongoid 0.5.2 → 0.5.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.
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