mongodb 0.0.13 → 2.0.0

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.
@@ -0,0 +1,57 @@
1
+ require 'object/spec_helper'
2
+ require 'mongo/object/spec/shared_object_crud'
3
+
4
+ describe "Object CRUD" do
5
+ with_mongo
6
+
7
+ describe 'single object' do
8
+ it_should_behave_like "single object CRUD"
9
+
10
+ before do
11
+ class Unit
12
+ include Mongo::Object
13
+
14
+ attr_accessor :name, :info
15
+ def == o; [self.class, name, info] == [o.class, o.name, o.info] end
16
+ end
17
+
18
+ @unit = Unit.new.tap do |o|
19
+ o.name, o.info = 'Zeratul', 'Dark Templar'
20
+ end
21
+ end
22
+ after{remove_constants :Unit}
23
+
24
+ it "should allow to read object as hash, without unmarshalling" do
25
+ db.units.save! @unit
26
+ db.units.first({}, object: false).is_a?(Hash).should be_true
27
+ end
28
+ end
29
+
30
+ describe 'embedded object' do
31
+ it_should_behave_like 'embedded object CRUD'
32
+
33
+ before do
34
+ class Unit
35
+ include Mongo::Object
36
+
37
+ attr_accessor :items
38
+ def == o; [self.class, self.items] == [o.class, o.items] end
39
+
40
+ class Item
41
+ include Mongo::Object
42
+
43
+ attr_accessor :name
44
+ def == o; [self.class, self.name] == [o.class, o.name] end
45
+ end
46
+ end
47
+
48
+ @item_class = Unit::Item
49
+ @unit = Unit.new
50
+ @unit.items = [
51
+ Unit::Item.new.tap{|o| o.name = 'Psionic blade'},
52
+ Unit::Item.new.tap{|o| o.name = 'Plasma shield'},
53
+ ]
54
+ end
55
+ after{remove_constants :Unit}
56
+ end
57
+ end
@@ -3,17 +3,4 @@ require 'mongo/object'
3
3
  require 'rspec_ext'
4
4
  require 'mongo/object/spec'
5
5
 
6
- require 'driver/spec_helper'
7
-
8
- # To simplify callback expectations
9
- module RSpec::CallbackHelper
10
- def run_before_callbacks method_name, options = {}
11
- callback_method_name = :"before_#{method_name}"
12
- respond_to?(callback_method_name) ? send(callback_method_name) : true
13
- end
14
-
15
- def run_after_callbacks method_name, options = {}
16
- callback_method_name = :"after_#{method_name}"
17
- respond_to?(callback_method_name) ? send(callback_method_name) : true
18
- end
19
- end
6
+ require 'driver/spec_helper'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongodb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.13
4
+ version: 2.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,19 +9,19 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-09-22 00:00:00.000000000Z
12
+ date: 2011-11-18 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: mongo
16
- requirement: &2833290 !ruby/object:Gem::Requirement
16
+ requirement: &2849860 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: '1.3'
21
+ version: '1.4'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2833290
24
+ version_requirements: *2849860
25
25
  description:
26
26
  email:
27
27
  executables: []
@@ -41,26 +41,25 @@ files:
41
41
  - lib/mongo/migration/migration.rb
42
42
  - lib/mongo/migration/tasks.rb
43
43
  - lib/mongo/migration.rb
44
+ - lib/mongo/object/collection_helper.rb
45
+ - lib/mongo/object/load.rb
44
46
  - lib/mongo/object/object.rb
45
- - lib/mongo/object/object_helper.rb
46
- - lib/mongo/object/spec/crud_shared.rb
47
+ - lib/mongo/object/spec/shared_object_crud.rb
47
48
  - lib/mongo/object/spec.rb
48
49
  - lib/mongo/object/support.rb
49
50
  - lib/mongo/object.rb
50
51
  - lib/mongodb/gems.rb
51
52
  - spec/driver/collection_spec.rb
52
53
  - spec/driver/connection_spec.rb
53
- - spec/driver/crud_spec.rb
54
54
  - spec/driver/database_spec.rb
55
55
  - spec/driver/dynamic_finders_spec.rb
56
56
  - spec/driver/fixes_spec.rb
57
- - spec/driver/hash_helper_spec.rb
57
+ - spec/driver/hash_crud_spec.rb
58
58
  - spec/driver/spec_helper.rb
59
59
  - spec/migration/migration_spec.rb
60
- - spec/object/callbacks_spec.rb
61
- - spec/object/crud_spec.rb
60
+ - spec/object/miscellaneous_spec.rb
61
+ - spec/object/object_crud_spec.rb
62
62
  - spec/object/spec_helper.rb
63
- - spec/object/validation_spec.rb
64
63
  homepage: http://alexeypetrushin.github.com/mongodb
65
64
  licenses: []
66
65
  post_install_message:
@@ -1,63 +0,0 @@
1
- shared_examples_for 'object CRUD' do
2
- it 'crud' do
3
- # read
4
- db.units.count.should == 0
5
- db.units.all.should == []
6
- db.units.first.should == nil
7
-
8
- # create
9
- db.units.save(@zeratul).should be_true
10
- @zeratul._id.should_not be_nil
11
-
12
- # read
13
- db.units.count.should == 1
14
- db.units.all.should == [@zeratul]
15
- db.units.first.should == @zeratul
16
- db.units.first.object_id.should_not == @zeratul.object_id
17
-
18
- # update
19
- @zeratul.info = 'Killer of Cerebrates'
20
- db.units.save(@zeratul).should be_true
21
- db.units.count.should == 1
22
- db.units.first(name: 'Zeratul').info.should == 'Killer of Cerebrates'
23
-
24
- # destroy
25
- db.units.destroy(@zeratul).should be_true
26
- db.units.count.should == 0
27
- end
28
- end
29
-
30
- shared_examples_for 'embedded object CRUD' do
31
- it 'crud' do
32
- # create
33
- db.players.save(@player)
34
- @player._id.should_not be_nil
35
-
36
- # read
37
- db.players.count.should == 1
38
- db.players.first.should == @player
39
- db.players.first.object_id.should_not == @players.object_id
40
-
41
- # update
42
- @player.missions.first.stats['units'] = 9
43
- mission = @mission_class.new.tap do |m|
44
- m.name = 'Desperate Alliance'
45
- m.stats = {'buildings' => 11, 'units' => 40}
46
- end
47
- @player.missions << mission
48
- db.players.save @player
49
- db.players.count.should == 1
50
- db.players.first.should == @player
51
- db.players.first.object_id.should_not == @player.object_id
52
-
53
- # destroy
54
- db.players.destroy @player
55
- db.players.count.should == 0
56
- end
57
-
58
- it "embedded object should have :_parent reference to the main object" do
59
- db.players.save @player
60
- player = db.players.first
61
- player.missions.first._parent.should == player
62
- end
63
- end
@@ -1,70 +0,0 @@
1
- require 'driver/spec_helper'
2
-
3
- describe "Hash CRUD" do
4
- with_mongo
5
-
6
- describe 'simple' do
7
- before do
8
- @zeratul = {'name' => 'Zeratul', 'info' => 'Dark Templar'}
9
- end
10
-
11
- it 'crud' do
12
- # read
13
- db.units.count.should == 0
14
- db.units.all.should == []
15
- db.units.first.should == nil
16
-
17
- # create
18
- db.units.save(@zeratul).should be_mongo_id
19
- @zeratul['_id'].should be_mongo_id
20
-
21
- # read
22
- db.units.all.should == [@zeratul]
23
- db.units.count.should == 1
24
- db.units.first.should == @zeratul
25
-
26
- # update
27
- @zeratul['info'] = 'Killer of Cerebrates'
28
- db.units.save @zeratul
29
- db.units.count.should == 1
30
- db.units.first(name: 'Zeratul')['info'].should == 'Killer of Cerebrates'
31
-
32
- # destroy
33
- db.units.destroy @zeratul
34
- db.units.count.should == 0
35
- end
36
- end
37
-
38
- describe 'embedded' do
39
- before do
40
- @player = {
41
- 'name' => 'Alex',
42
- 'missions' => [
43
- {'name' => 'Wasteland', 'stats' => {'buildings' => 5, 'units' => 10}},
44
- {'name' => 'Backwater Station', 'stats' => {'buildings' => 8, 'units' => 25}}
45
- ]
46
- }
47
- end
48
-
49
- it 'crud' do
50
- # create
51
- db.players.save(@player).should be_mongo_id
52
-
53
- # read
54
- db.players.count.should == 1
55
- db.players.first.should == @player
56
-
57
- # update
58
- @player['missions'].first['stats']['units'] = 9
59
- @player['missions'].push 'name' => 'Desperate Alliance', 'stats' => {'buildings' => 11, 'units' => 40}
60
- db.players.save(@player).should_not be_nil
61
- db.players.count.should == 1
62
- db.players.first.should == @player
63
- db.players.first.object_id.should_not == @player.object_id
64
-
65
- # destroy
66
- db.players.destroy @player
67
- db.players.count.should == 0
68
- end
69
- end
70
- end
@@ -1,25 +0,0 @@
1
- require 'driver/spec_helper'
2
-
3
- describe "Collection" do
4
- before do
5
- @helper = Object.new
6
- @helper.send :extend, Mongo::CollectionExt
7
- end
8
-
9
- # Discarded
10
- # it "symbolize" do
11
- # @helper.send(:symbolize_doc, {
12
- # 'a' => 1,
13
- # 'b' => {
14
- # 'c' => 2,
15
- # 'd' => [{'e' => 3}]
16
- # }
17
- # }).should == {
18
- # a: 1,
19
- # b: {
20
- # c: 2,
21
- # d: [{e: 3}]
22
- # }
23
- # }
24
- # end
25
- end
@@ -1,115 +0,0 @@
1
- require 'object/spec_helper'
2
-
3
- describe 'Object callbacks' do
4
- with_mongo
5
-
6
- [Object, Array, Hash].each do |embedded_object_superclass|
7
- embedded_object_class = nil
8
- before :all do
9
- class MainObject
10
- include Mongo::Object, RSpec::CallbackHelper
11
-
12
- attr_accessor :children
13
- end
14
-
15
- embedded_object_class = Class.new embedded_object_superclass do
16
- include Mongo::Object, RSpec::CallbackHelper
17
- end
18
- end
19
- after(:all){remove_constants :MainObject}
20
-
21
- before do
22
- @child = embedded_object_class.new
23
- @object = MainObject.new
24
- @object.children = [@child]
25
- end
26
-
27
- it 'create' do
28
- %w(before_validate after_validate before_save before_create after_create after_save).each do |name|
29
- @object.should_receive(name).once.ordered.and_return(true)
30
- @child.should_receive(name).once.ordered.and_return(true)
31
- end
32
-
33
- db.objects.save(@object).should be_true
34
- end
35
-
36
- it 'update' do
37
- db.objects.save(@object).should be_true
38
-
39
- %w(before_validate after_validate before_save before_update after_update after_save).each do |name|
40
- @object.should_receive(name).once.ordered.and_return(true)
41
- @child.should_receive(name).once.ordered.and_return(true)
42
- end
43
- db.objects.save(@object).should be_true
44
- end
45
-
46
- it 'destroy' do
47
- db.objects.save(@object).should be_true
48
-
49
- %w(before_validate after_validate before_destroy after_destroy).each do |name|
50
- @object.should_receive(name).once.ordered.and_return(true)
51
- @child.should_receive(name).once.ordered.and_return(true)
52
- end
53
- db.objects.destroy(@object).should be_true
54
- end
55
-
56
- it 'should be able skip callbacks' do
57
- @object.should_not_receive(:run_callbacks)
58
- @child.should_not_receive(:run_callbacks)
59
-
60
- db.objects.save(@object, callbacks: false).should be_true
61
- db.objects.count.should == 1
62
- db.objects.save(@object, callbacks: false).should be_true
63
- db.objects.count.should == 1
64
- db.objects.destroy(@object, callbacks: false).should be_true
65
- db.objects.count.should == 0
66
- end
67
-
68
- it 'should be able interrupt CRUD' do
69
- @child.stub! :run_before_callbacks do |method_name|
70
- false if method_name == :create
71
- end
72
- db.objects.save(@object).should be_false
73
- db.objects.count.should == 0
74
- end
75
-
76
- describe "embedded" do
77
- it 'should fire :destroy on detached objects' do
78
- db.objects.save(@object).should be_true
79
- @object.children.clear
80
- @child.should_receive(:before_destroy).once.and_return(true)
81
- db.objects.destroy(@object).should be_true
82
- end
83
-
84
- it 'should fire :destroy on deleted objects in update' do
85
- db.objects.save(@object).should be_true
86
- @object.children.clear
87
- @child.should_receive(:before_destroy).once.and_return(true)
88
- db.objects.save(@object).should be_true
89
- end
90
-
91
- it 'should fire :create on new objects in update' do
92
- db.objects.save(@object).should be_true
93
- child2 = embedded_object_class.new
94
- @object.children << child2
95
- child2.should_receive(:before_create).once.and_return(true)
96
- child2.should_not_receive(:before_update)
97
- db.objects.save(@object).should be_true
98
- end
99
- end
100
-
101
- it "should fire :after_build callback after building the object" do
102
- class SpecialMainObject < MainObject
103
- def run_after_callbacks method, options
104
- self.class.build_callback if method == :build
105
- end
106
- end
107
-
108
- player = SpecialMainObject.new
109
- db.objects.save! player
110
-
111
- SpecialMainObject.should_receive :build_callback
112
- db.objects.first
113
- end
114
- end
115
- end
@@ -1,61 +0,0 @@
1
- require 'object/spec_helper'
2
- require 'mongo/object/spec/crud_shared'
3
-
4
- describe "Object CRUD" do
5
- with_mongo
6
-
7
- describe 'simple' do
8
- before :all do
9
- class Unit2
10
- include Mongo::Object
11
-
12
- def initialize name = nil, info = nil; @name, @info = name, info end
13
- attr_accessor :name, :info
14
- def == o; [self.class, name, info] == [o.class, o.respond_to(:name), o.respond_to(:info)] end
15
- end
16
- end
17
- after(:all){remove_constants :Unit2}
18
-
19
- before do
20
- @zeratul = Unit2.new 'Zeratul', 'Dark Templar'
21
- end
22
-
23
- it_should_behave_like "object CRUD"
24
-
25
- it "should allow to read object as hash" do
26
- db.units.save! @zeratul
27
- db.units.first({}, object: false).is_a?(Hash).should be_true
28
- end
29
- end
30
-
31
- describe 'embedded' do
32
- before :all do
33
- class Player2
34
- include Mongo::Object
35
-
36
- attr_accessor :missions
37
- def == o; [self.class, self.missions] == [o.class, o.respond_to(:missions)] end
38
-
39
- class Mission
40
- include Mongo::Object
41
-
42
- def initialize name = nil, stats = nil; @name, @stats = name, stats end
43
- attr_accessor :name, :stats
44
- def == o; [self.class, self.name, self.stats] == [o.class, o.respond_to(:name), o.respond_to(:stats)] end
45
- end
46
- end
47
- end
48
- after(:all){remove_constants :Player2}
49
-
50
- before do
51
- @mission_class = Player2::Mission
52
- @player = Player2.new
53
- @player.missions = [
54
- Player2::Mission.new('Wasteland', {'buildings' => 5, 'units' => 10}),
55
- Player2::Mission.new('Backwater Station', {'buildings' => 8, 'units' => 25}),
56
- ]
57
- end
58
-
59
- it_should_behave_like 'embedded object CRUD'
60
- end
61
- end