mongo_doc 0.6.7 → 0.6.8

Sign up to get free protection for your applications and to get access to all the features.
data/README.textile CHANGED
@@ -1,6 +1,6 @@
1
1
  h1. MongoDoc
2
2
 
3
- Version: Hurricane (0.6.7) 2010/07/10
3
+ Version: Hurricane (0.6.8) 2010/07/11
4
4
 
5
5
  h2. Notes
6
6
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.6.7
1
+ 0.6.8
@@ -48,7 +48,7 @@ module MongoDoc
48
48
  end
49
49
 
50
50
  def initialize(attrs = {})
51
- self.attributes = attrs
51
+ self.attributes = attrs if attrs
52
52
  end
53
53
 
54
54
  def ==(other)
@@ -64,6 +64,10 @@ module MongoDoc
64
64
  _id.nil?
65
65
  end
66
66
 
67
+ def persisted?
68
+ _id.present?
69
+ end
70
+
67
71
  def remove
68
72
  raise UnsupportedOperation.new('Document#remove is not supported for embedded documents') if _root
69
73
  remove_document
@@ -95,9 +99,14 @@ module MongoDoc
95
99
  end
96
100
  end
97
101
 
102
+ def to_model
103
+ self
104
+ end
105
+
98
106
  def to_param
99
- _id.to_s
107
+ _id ? _id.to_s : nil
100
108
  end
109
+ alias to_key to_param
101
110
 
102
111
  def update_attributes(attrs)
103
112
  self.attributes = attrs
data/lib/mongo_doc.rb CHANGED
@@ -3,7 +3,7 @@ require 'active_support'
3
3
  require 'active_support/core_ext'
4
4
 
5
5
  module MongoDoc
6
- VERSION = '0.6.7'
6
+ VERSION = '0.6.8'
7
7
  end
8
8
 
9
9
  require 'mongo_doc/connection'
data/mongo_doc.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{mongo_doc}
8
- s.version = "0.6.7"
8
+ s.version = "0.6.8"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Les Hill"]
12
- s.date = %q{2010-07-10}
12
+ s.date = %q{2010-07-11}
13
13
  s.description = %q{ODM for MongoDB}
14
14
  s.email = %q{leshill@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -135,6 +135,7 @@ Gem::Specification.new do |s|
135
135
  "perf/mongo_document.rb",
136
136
  "perf/ruby_driver.rb",
137
137
  "script/console",
138
+ "spec/active_model_behavior.rb",
138
139
  "spec/array_including_argument_matcher.rb",
139
140
  "spec/associations/collection_proxy_spec.rb",
140
141
  "spec/associations/document_proxy_spec.rb",
@@ -178,7 +179,8 @@ Gem::Specification.new do |s|
178
179
  s.rubygems_version = %q{1.3.7}
179
180
  s.summary = %q{ODM for MongoDB}
180
181
  s.test_files = [
181
- "spec/array_including_argument_matcher.rb",
182
+ "spec/active_model_behavior.rb",
183
+ "spec/array_including_argument_matcher.rb",
182
184
  "spec/associations/collection_proxy_spec.rb",
183
185
  "spec/associations/document_proxy_spec.rb",
184
186
  "spec/associations/hash_proxy_spec.rb",
@@ -0,0 +1,64 @@
1
+ module ActiveModelBehavior
2
+ share_as :AnActiveModel do
3
+ def be_a_boolean
4
+ ::Rspec::Matchers::Matcher.new :be_a_boolean do
5
+ match do |value|
6
+ [ true, false ].include?( value )
7
+ end
8
+ end
9
+ end
10
+
11
+ it { should respond_to(:to_model) }
12
+ it { should respond_to(:to_key) }
13
+ it { should respond_to(:to_param) }
14
+
15
+ it { should respond_to(:valid?) }
16
+ its(:valid?) { should be_a_boolean }
17
+
18
+ it { should respond_to(:persisted?) }
19
+ its(:persisted?) { should be_a_boolean }
20
+
21
+ its(:class) { should respond_to(:model_name) }
22
+
23
+ context "the model name" do
24
+ subject do
25
+ described_class.model_name
26
+ end
27
+
28
+ it { should be_kind_of(String) }
29
+ its(:human) { should be_kind_of(String) }
30
+ its(:partial_path) { should be_kind_of(String) }
31
+ its(:singular) { should be_kind_of(String) }
32
+ its(:plural) { should be_kind_of(String) }
33
+ end
34
+
35
+ context "when its not persisted" do
36
+ subject do
37
+ obj = described_class.new
38
+ obj.stub!(:persisted?).and_return(false)
39
+ obj
40
+ end
41
+
42
+ its(:to_key) { should be_nil }
43
+ its(:to_param) { should be_nil }
44
+ end
45
+
46
+ it { should respond_to(:errors) }
47
+
48
+ context "errors" do
49
+ subject do
50
+ described_class.new.errors
51
+ end
52
+
53
+ it { should respond_to(:[]) }
54
+ it { should respond_to(:full_messages) }
55
+
56
+ context "[:hello]" do
57
+ it { subject[:hello].should be_an_instance_of(Array) }
58
+
59
+ its(:full_messages) { should be_an_instance_of(Array) }
60
+ end
61
+ end
62
+ end
63
+ end
64
+
@@ -23,44 +23,53 @@ describe "MongoDoc::Document" do
23
23
  end
24
24
  end
25
25
 
26
- context "satisfies form_for requirements" do
26
+ context "ActiveModel" do
27
27
  class FormForTest
28
28
  include MongoDoc::Document
29
29
 
30
30
  attr_accessor :data
31
31
  end
32
32
 
33
- before do
34
- @doc = FormForTest.new
35
- @doc._id = '1'
33
+ describe FormForTest do
34
+ it_should_behave_like AnActiveModel
36
35
  end
37
36
 
38
- it "#id returns the _id" do
39
- @doc.id.should == @doc._id
40
- end
37
+ let(:doc) { FormForTest.new }
41
38
 
42
- it "#to_param returns the string of the _id" do
43
- @doc.to_param.should == @doc._id.to_s
39
+ context "persisted record" do
40
+ subject { doc._id = '1'; doc }
41
+
42
+ it { should_not be_new_record }
43
+ it { should be_persisted }
44
+ its(:id) { should == doc._id }
45
+ its(:to_param) { should == doc._id.to_s }
46
+ its(:to_key) { should == doc._id.to_s }
44
47
  end
45
48
 
46
- context "#new_record?" do
47
- it "is true when the object does not have an _id" do
48
- @doc._id = nil
49
- @doc.should be_new_record
50
- end
49
+ context "record has not been persisted" do
50
+ subject { doc }
51
51
 
52
- it "is false when the object has an id" do
53
- @doc.should_not be_new_record
54
- end
52
+ it { should be_new_record }
53
+ it { should_not be_persisted }
54
+ its(:id) { should be_nil }
55
+ its(:to_param) { should be_nil }
56
+ its(:to_key) { should be_nil }
55
57
  end
56
58
 
57
59
  it "#initialize takes a hash" do
58
60
  data = 'data'
59
61
  FormForTest.new(:data => data).data.should == data
60
62
  end
63
+
64
+ it "#initialize accepts a nil" do
65
+ expect do
66
+ FormForTest.new(nil)
67
+ end.should_not raise_error
68
+ end
69
+
61
70
  end
62
71
 
63
- context "saving" do
72
+ context "saving" do
64
73
  class SaveRoot
65
74
  include MongoDoc::Document
66
75
 
data/spec/spec_helper.rb CHANGED
@@ -6,9 +6,11 @@ require 'rspec/autorun'
6
6
  require 'bson_matchers'
7
7
  require 'hash_matchers'
8
8
  require 'array_including_argument_matcher'
9
+ require 'active_model_behavior'
9
10
  require 'document_ext'
10
11
 
11
12
  RSpec.configure do |config|
12
13
  config.include(BsonMatchers)
13
14
  config.include(HashMatchers)
15
+ config.include(ActiveModelBehavior)
14
16
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongo_doc
3
3
  version: !ruby/object:Gem::Version
4
- hash: 9
4
+ hash: 23
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 6
9
- - 7
10
- version: 0.6.7
9
+ - 8
10
+ version: 0.6.8
11
11
  platform: ruby
12
12
  authors:
13
13
  - Les Hill
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-07-10 00:00:00 -04:00
18
+ date: 2010-07-11 00:00:00 -04:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -264,6 +264,7 @@ files:
264
264
  - perf/mongo_document.rb
265
265
  - perf/ruby_driver.rb
266
266
  - script/console
267
+ - spec/active_model_behavior.rb
267
268
  - spec/array_including_argument_matcher.rb
268
269
  - spec/associations/collection_proxy_spec.rb
269
270
  - spec/associations/document_proxy_spec.rb
@@ -335,6 +336,7 @@ signing_key:
335
336
  specification_version: 3
336
337
  summary: ODM for MongoDB
337
338
  test_files:
339
+ - spec/active_model_behavior.rb
338
340
  - spec/array_including_argument_matcher.rb
339
341
  - spec/associations/collection_proxy_spec.rb
340
342
  - spec/associations/document_proxy_spec.rb