mongomodel 0.3.3 → 0.3.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.
Files changed (37) hide show
  1. data/Appraisals +9 -0
  2. data/Gemfile +2 -2
  3. data/Rakefile +23 -13
  4. data/gemfiles/rails-3.0.gemfile +10 -0
  5. data/gemfiles/rails-3.0.gemfile.lock +73 -0
  6. data/gemfiles/rails-3.1.gemfile +10 -0
  7. data/gemfiles/rails-3.1.gemfile.lock +83 -0
  8. data/lib/mongomodel.rb +0 -1
  9. data/lib/mongomodel/concerns/abstract_class.rb +1 -0
  10. data/lib/mongomodel/concerns/associations.rb +12 -3
  11. data/lib/mongomodel/concerns/associations/base/definition.rb +5 -3
  12. data/lib/mongomodel/concerns/attribute_methods.rb +14 -7
  13. data/lib/mongomodel/concerns/properties.rb +15 -4
  14. data/lib/mongomodel/document/indexes.rb +14 -5
  15. data/lib/mongomodel/document/persistence.rb +7 -5
  16. data/lib/mongomodel/document/scopes.rb +22 -8
  17. data/lib/mongomodel/railtie.rb +2 -3
  18. data/lib/mongomodel/support/collection.rb +3 -1
  19. data/lib/mongomodel/support/map.rb +4 -2
  20. data/lib/mongomodel/support/mongo_options.rb +9 -34
  21. data/lib/mongomodel/support/scope.rb +2 -14
  22. data/lib/mongomodel/version.rb +1 -1
  23. data/mongomodel.gemspec +3 -3
  24. data/spec/mongomodel/concerns/associations/belongs_to_spec.rb +4 -6
  25. data/spec/mongomodel/concerns/associations/has_many_by_ids_spec.rb +123 -123
  26. data/spec/mongomodel/concerns/logging_spec.rb +1 -1
  27. data/spec/mongomodel/document/dynamic_finders_spec.rb +32 -32
  28. data/spec/mongomodel/support/scope_spec.rb +0 -18
  29. data/spec/spec.opts +0 -3
  30. data/spec/spec_helper.rb +4 -4
  31. data/spec/support/helpers/document_finder_stubs.rb +2 -2
  32. data/spec/support/matchers/be_a_subclass_of.rb +1 -1
  33. data/spec/support/matchers/be_truthy.rb +1 -1
  34. data/spec/support/matchers/find_with.rb +4 -4
  35. data/spec/support/matchers/respond_to_boolean.rb +1 -1
  36. data/spec/support/matchers/run_callbacks.rb +1 -1
  37. metadata +23 -74
@@ -6,7 +6,7 @@ module MongoModel
6
6
  define_class(:TestDocument, described_class)
7
7
 
8
8
  let(:logger) { mock('logger').as_null_object }
9
- before(:all) { MongoModel.logger = logger }
9
+ before(:each) { MongoModel.logger = logger }
10
10
 
11
11
  it "should have a logger reader on the class" do
12
12
  TestDocument.logger.should == logger
@@ -18,6 +18,38 @@ module MongoModel
18
18
  @mary = Person.create!(:name => 'Mary', :age => 33, :id => '5')
19
19
  end
20
20
 
21
+ def self.should_find(*args, &block)
22
+ it "should return correct results when called with #{args.inspect}" do
23
+ expected = instance_eval(&block)
24
+ subject.send(valid_finder, *args).should == expected
25
+ end
26
+ end
27
+
28
+ def self.should_raise(*args, &block)
29
+ it "should raise DocumentNotFound exception if results not found" do
30
+ message = instance_eval(&block)
31
+ lambda { subject.send(valid_finder, *args) }.should raise_error(DocumentNotFound, message)
32
+ end
33
+ end
34
+
35
+ def self.should_initialize(*args, &block)
36
+ it "should initialize new instance" do
37
+ result = subject.send(valid_finder, *args)
38
+ result.should be_a_new_record
39
+ result.should be_an_instance_of(Person)
40
+ yield(result).should be_true
41
+ end
42
+ end
43
+
44
+ def self.should_create(*args, &block)
45
+ it "should create new instance" do
46
+ result = subject.send(valid_finder, *args)
47
+ result.should_not be_a_new_record
48
+ result.should be_an_instance_of(Person)
49
+ yield(result).should be_true
50
+ end
51
+ end
52
+
21
53
  shared_examples_for "a dynamic finder" do
22
54
  it { should respond_to(valid_finder) }
23
55
  it { should_not respond_to(invalid_finder) }
@@ -25,38 +57,6 @@ module MongoModel
25
57
  it "should raise NoMethodError calling an invalid finder" do
26
58
  lambda { subject.send(invalid_finder, "Foo") }.should raise_error(NoMethodError)
27
59
  end
28
-
29
- def self.should_find(*args, &block)
30
- it "should return correct results when called with #{args.inspect}" do
31
- expected = instance_eval(&block)
32
- subject.send(valid_finder, *args).should == expected
33
- end
34
- end
35
-
36
- def self.should_raise(*args, &block)
37
- it "should raise DocumentNotFound exception if results not found" do
38
- message = instance_eval(&block)
39
- lambda { subject.send(valid_finder, *args) }.should raise_error(DocumentNotFound, message)
40
- end
41
- end
42
-
43
- def self.should_initialize(*args, &block)
44
- it "should initialize new instance" do
45
- result = subject.send(valid_finder, *args)
46
- result.should be_a_new_record
47
- result.should be_an_instance_of(Person)
48
- yield(result).should be_true
49
- end
50
- end
51
-
52
- def self.should_create(*args, &block)
53
- it "should create new instance" do
54
- result = subject.send(valid_finder, *args)
55
- result.should_not be_a_new_record
56
- result.should be_an_instance_of(Person)
57
- yield(result).should be_true
58
- end
59
- end
60
60
  end
61
61
 
62
62
  describe "find first by single property" do
@@ -398,15 +398,6 @@ module MongoModel
398
398
  subject.first.should == posts[0]
399
399
  end
400
400
  end
401
-
402
- subject_not_loaded do
403
- it "should cache find result" do
404
- model.should_find(finder_options.merge(:limit => 1), [posts[0]]) do
405
- subject.first
406
- subject.first
407
- end
408
- end
409
- end
410
401
  end
411
402
  end
412
403
  end
@@ -483,15 +474,6 @@ module MongoModel
483
474
  subject.last.should == post
484
475
  end
485
476
  end
486
-
487
- subject_not_loaded do
488
- it "should cache find result" do
489
- model.should_find(reversed_finder_options.merge(:limit => 1), [post]) do
490
- subject.last
491
- subject.last
492
- end
493
- end
494
- end
495
477
  end
496
478
  end
497
479
  end
@@ -1,7 +1,4 @@
1
1
  --colour
2
2
  --format
3
3
  progress
4
- --loadby
5
- mtime
6
- --reverse
7
4
  --backtrace
@@ -1,14 +1,14 @@
1
1
  require 'rubygems'
2
2
  require 'bundler/setup'
3
- require 'spec'
4
3
 
5
- # Require MongoModel library
6
- require File.dirname(__FILE__) + '/../lib/mongomodel'
4
+ require 'rspec'
5
+
6
+ require 'mongomodel'
7
7
 
8
8
  # Require spec helpers
9
9
  Dir[File.dirname(__FILE__) + "/support/**/*.rb"].each { |f| require f }
10
10
 
11
- Spec::Runner.configure do |config|
11
+ RSpec.configure do |config|
12
12
  include SpecsFor
13
13
  include DefineClass
14
14
 
@@ -1,7 +1,7 @@
1
- require 'spec/mocks'
1
+ require 'rspec/mocks'
2
2
 
3
3
  module DocumentFinderStubs
4
- include Spec::Mocks::ExampleMethods
4
+ include RSpec::Mocks::ExampleMethods
5
5
 
6
6
  def stub_find(result)
7
7
  find_result = mock('find result', :to_a => result.map { |doc| doc.to_mongo }, :count => result.size).as_null_object
@@ -1,4 +1,4 @@
1
- Spec::Matchers.define(:be_a_subclass_of) do |ancestor|
1
+ RSpec::Matchers.define(:be_a_subclass_of) do |ancestor|
2
2
  match do |klass|
3
3
  klass.ancestors.include?(ancestor)
4
4
  end
@@ -1,4 +1,4 @@
1
- Spec::Matchers.define(:be_truthy) do
1
+ RSpec::Matchers.define(:be_truthy) do
2
2
  match do |object|
3
3
  !!object
4
4
  end
@@ -1,5 +1,5 @@
1
- Spec::Matchers.define(:find_with) do |find_options|
2
- extend Spec::Mocks::ExampleMethods
1
+ RSpec::Matchers.define(:find_with) do |find_options|
2
+ extend RSpec::Mocks::ExampleMethods
3
3
 
4
4
  match do |klass|
5
5
  selector, options = MongoModel::MongoOptions.new(klass, find_options).to_a
@@ -16,8 +16,8 @@ Spec::Matchers.define(:find_with) do |find_options|
16
16
  end
17
17
  end
18
18
 
19
- Spec::Matchers.define(:count_with) do |find_options|
20
- extend Spec::Mocks::ExampleMethods
19
+ RSpec::Matchers.define(:count_with) do |find_options|
20
+ extend RSpec::Mocks::ExampleMethods
21
21
 
22
22
  match do |klass|
23
23
  selector, options = MongoModel::MongoOptions.new(klass, find_options).to_a
@@ -1,4 +1,4 @@
1
- Spec::Matchers.define(:respond_to_boolean) do |method|
1
+ RSpec::Matchers.define(:respond_to_boolean) do |method|
2
2
  match do |instance|
3
3
  instance.respond_to?(method) && is_boolean?(instance.send(method))
4
4
  end
@@ -1,4 +1,4 @@
1
- Spec::Matchers.define(:run_callbacks) do |*callbacks|
1
+ RSpec::Matchers.define(:run_callbacks) do |*callbacks|
2
2
  match do |instance|
3
3
  instance.history == expand_callbacks(callbacks)
4
4
  end
metadata CHANGED
@@ -1,13 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongomodel
3
3
  version: !ruby/object:Gem::Version
4
- hash: 21
5
4
  prerelease:
6
- segments:
7
- - 0
8
- - 3
9
- - 3
10
- version: 0.3.3
5
+ version: 0.3.4
11
6
  platform: ruby
12
7
  authors:
13
8
  - Sam Pohlenz
@@ -15,121 +10,75 @@ autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
12
 
18
- date: 2011-04-21 00:00:00 +09:30
13
+ date: 2011-07-06 00:00:00 +09:30
19
14
  default_executable:
20
15
  dependencies:
21
16
  - !ruby/object:Gem::Dependency
22
17
  name: activesupport
23
- prerelease: false
24
18
  requirement: &id001 !ruby/object:Gem::Requirement
25
19
  none: false
26
20
  requirements:
27
21
  - - ~>
28
22
  - !ruby/object:Gem::Version
29
- hash: 1
30
- segments:
31
- - 3
32
- - 0
33
- - 3
34
- version: 3.0.3
23
+ version: "3.0"
35
24
  type: :runtime
25
+ prerelease: false
36
26
  version_requirements: *id001
37
27
  - !ruby/object:Gem::Dependency
38
28
  name: activemodel
39
- prerelease: false
40
29
  requirement: &id002 !ruby/object:Gem::Requirement
41
30
  none: false
42
31
  requirements:
43
32
  - - ~>
44
33
  - !ruby/object:Gem::Version
45
- hash: 1
46
- segments:
47
- - 3
48
- - 0
49
- - 3
50
- version: 3.0.3
34
+ version: "3.0"
51
35
  type: :runtime
36
+ prerelease: false
52
37
  version_requirements: *id002
53
38
  - !ruby/object:Gem::Dependency
54
39
  name: mongo
55
- prerelease: false
56
40
  requirement: &id003 !ruby/object:Gem::Requirement
57
41
  none: false
58
42
  requirements:
59
43
  - - ~>
60
44
  - !ruby/object:Gem::Version
61
- hash: 27
62
- segments:
63
- - 1
64
- - 3
65
- - 0
66
45
  version: 1.3.0
67
46
  type: :runtime
47
+ prerelease: false
68
48
  version_requirements: *id003
69
49
  - !ruby/object:Gem::Dependency
70
50
  name: will_paginate
71
- prerelease: false
72
51
  requirement: &id004 !ruby/object:Gem::Requirement
73
52
  none: false
74
53
  requirements:
75
54
  - - ~>
76
55
  - !ruby/object:Gem::Version
77
- hash: 29
78
- segments:
79
- - 2
80
- - 3
81
- - 15
82
56
  version: 2.3.15
83
57
  type: :runtime
84
- version_requirements: *id004
85
- - !ruby/object:Gem::Dependency
86
- name: SystemTimer
87
58
  prerelease: false
88
- requirement: &id005 !ruby/object:Gem::Requirement
89
- none: false
90
- requirements:
91
- - - ~>
92
- - !ruby/object:Gem::Version
93
- hash: 25
94
- segments:
95
- - 1
96
- - 2
97
- - 3
98
- version: 1.2.3
99
- type: :runtime
100
- version_requirements: *id005
59
+ version_requirements: *id004
101
60
  - !ruby/object:Gem::Dependency
102
61
  name: bundler
103
- prerelease: false
104
- requirement: &id006 !ruby/object:Gem::Requirement
62
+ requirement: &id005 !ruby/object:Gem::Requirement
105
63
  none: false
106
64
  requirements:
107
65
  - - ">="
108
66
  - !ruby/object:Gem::Version
109
- hash: 23
110
- segments:
111
- - 1
112
- - 0
113
- - 0
114
67
  version: 1.0.0
115
68
  type: :development
116
- version_requirements: *id006
69
+ prerelease: false
70
+ version_requirements: *id005
117
71
  - !ruby/object:Gem::Dependency
118
72
  name: rspec
119
- prerelease: false
120
- requirement: &id007 !ruby/object:Gem::Requirement
73
+ requirement: &id006 !ruby/object:Gem::Requirement
121
74
  none: false
122
75
  requirements:
123
- - - "="
76
+ - - ~>
124
77
  - !ruby/object:Gem::Version
125
- hash: 27
126
- segments:
127
- - 1
128
- - 3
129
- - 0
130
- version: 1.3.0
78
+ version: 2.6.0
131
79
  type: :development
132
- version_requirements: *id007
80
+ prerelease: false
81
+ version_requirements: *id006
133
82
  description: MongoModel is a MongoDB ORM for Ruby/Rails similar to ActiveRecord and DataMapper.
134
83
  email:
135
84
  - sam@sampohlenz.com
@@ -141,12 +90,17 @@ extra_rdoc_files: []
141
90
 
142
91
  files:
143
92
  - .gitignore
93
+ - Appraisals
144
94
  - Gemfile
145
95
  - LICENSE
146
96
  - README.md
147
97
  - Rakefile
148
98
  - autotest/discover.rb
149
99
  - bin/console
100
+ - gemfiles/rails-3.0.gemfile
101
+ - gemfiles/rails-3.0.gemfile.lock
102
+ - gemfiles/rails-3.1.gemfile
103
+ - gemfiles/rails-3.1.gemfile.lock
150
104
  - lib/mongomodel.rb
151
105
  - lib/mongomodel/attributes/mongo.rb
152
106
  - lib/mongomodel/attributes/store.rb
@@ -303,7 +257,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
303
257
  requirements:
304
258
  - - ">="
305
259
  - !ruby/object:Gem::Version
306
- hash: 3
260
+ hash: -3936197743219655173
307
261
  segments:
308
262
  - 0
309
263
  version: "0"
@@ -312,16 +266,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
312
266
  requirements:
313
267
  - - ">="
314
268
  - !ruby/object:Gem::Version
315
- hash: 23
316
- segments:
317
- - 1
318
- - 3
319
- - 6
320
269
  version: 1.3.6
321
270
  requirements: []
322
271
 
323
272
  rubyforge_project: mongomodel
324
- rubygems_version: 1.6.1
273
+ rubygems_version: 1.5.2
325
274
  signing_key:
326
275
  specification_version: 3
327
276
  summary: MongoDB ORM for Ruby/Rails