mongoid_max_denormalize 0.0.3 → 0.0.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.
@@ -50,6 +50,8 @@ module Mongoid
|
|
50
50
|
obj.denormalize_from_#{relation}(true)
|
51
51
|
obj.save!
|
52
52
|
end
|
53
|
+
|
54
|
+
nil
|
53
55
|
end
|
54
56
|
EOM
|
55
57
|
klass.class_eval callback_code
|
@@ -102,7 +104,7 @@ EOM
|
|
102
104
|
end
|
103
105
|
|
104
106
|
yield if block_given?
|
105
|
-
return if changed_fields.empty?
|
107
|
+
return if (changed_fields.empty? && !fields.empty?)
|
106
108
|
|
107
109
|
to_update = { "$set" => {}, "$inc" => {}, "$push" => {} }
|
108
110
|
to_get = {}
|
@@ -0,0 +1,85 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
#
|
5
|
+
# The case
|
6
|
+
#
|
7
|
+
# This is to demonstrate when we denormalize a Many to One
|
8
|
+
# with no fields and only an option :count => true
|
9
|
+
#
|
10
|
+
class Inhabitant
|
11
|
+
include Mongoid::Document
|
12
|
+
|
13
|
+
belongs_to :city
|
14
|
+
end
|
15
|
+
|
16
|
+
class City
|
17
|
+
include Mongoid::Document
|
18
|
+
include Mongoid::Max::Denormalize
|
19
|
+
|
20
|
+
has_many :inhabitants
|
21
|
+
|
22
|
+
denormalize :inhabitants, count: true
|
23
|
+
end
|
24
|
+
|
25
|
+
|
26
|
+
#
|
27
|
+
# The specs
|
28
|
+
#
|
29
|
+
describe "Case: a city and his inhabitants" do
|
30
|
+
|
31
|
+
before do
|
32
|
+
@city = City.create!
|
33
|
+
end
|
34
|
+
|
35
|
+
context "when nothing" do
|
36
|
+
context "considering the city" do
|
37
|
+
subject { @city }
|
38
|
+
|
39
|
+
it "should not have inhabitants" do
|
40
|
+
@city.inhabitants.should be_empty
|
41
|
+
@city.inhabitants_count.should eq 0
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
context "when adding 20 inhabitants" do
|
47
|
+
before do
|
48
|
+
5.times do
|
49
|
+
@city.inhabitants.create!
|
50
|
+
end
|
51
|
+
@city.reload
|
52
|
+
end
|
53
|
+
|
54
|
+
context "considering the city" do
|
55
|
+
subject { @city }
|
56
|
+
|
57
|
+
its(:inhabitants) { should have(5).inhabitants }
|
58
|
+
its(:inhabitants_count) { should eq 5 }
|
59
|
+
|
60
|
+
context "when destroying 2 inhabitants" do
|
61
|
+
before do
|
62
|
+
2.times do
|
63
|
+
Inhabitant.first.destroy
|
64
|
+
end
|
65
|
+
@city.reload
|
66
|
+
end
|
67
|
+
|
68
|
+
its(:inhabitants) { should have(3).inhabitants }
|
69
|
+
its(:inhabitants_count) { should eq 3 }
|
70
|
+
end
|
71
|
+
|
72
|
+
context "when destroying all inhabitants" do
|
73
|
+
before do
|
74
|
+
Inhabitant.destroy_all
|
75
|
+
@city.reload
|
76
|
+
end
|
77
|
+
|
78
|
+
its(:inhabitants) { should have(0).inhabitant }
|
79
|
+
its(:inhabitants_count) { should eq 0 }
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
end
|
85
|
+
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mongoid_max_denormalize
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -94,6 +94,7 @@ files:
|
|
94
94
|
- lib/mongoid/max/denormalize/base.rb
|
95
95
|
- lib/mongoid/max/denormalize.rb
|
96
96
|
- spec/lib/mongoid_max_denormalize_spec.rb
|
97
|
+
- spec/cases/city_and_inhabitants_spec.rb
|
97
98
|
- spec/cases/song_and_ratings_spec.rb
|
98
99
|
- spec/cases/existing_models_spec.rb
|
99
100
|
- spec/cases/contact_and_addresses_spec.rb
|
@@ -125,6 +126,7 @@ specification_version: 3
|
|
125
126
|
summary: MaxMapper, polyvalent ORM for Rails
|
126
127
|
test_files:
|
127
128
|
- spec/lib/mongoid_max_denormalize_spec.rb
|
129
|
+
- spec/cases/city_and_inhabitants_spec.rb
|
128
130
|
- spec/cases/song_and_ratings_spec.rb
|
129
131
|
- spec/cases/existing_models_spec.rb
|
130
132
|
- spec/cases/contact_and_addresses_spec.rb
|