mongoid-genesis 0.0.2 → 0.0.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.
@@ -27,9 +27,13 @@ module Mongoid
27
27
 
28
28
  def write_and_preserve_attribute(field_name, value)
29
29
  init_genesis if not self.genesis
30
- self.genesis.preserve field_name
31
30
 
32
- self.write_attribute(field_name, value)
31
+ if value and self.genesis.read_attribute(field_name) == value
32
+ self.restore_genesis(field_name)
33
+ else
34
+ self.genesis.preserve field_name
35
+ self.write_attribute(field_name, value)
36
+ end
33
37
  end
34
38
  end
35
39
  end
@@ -24,20 +24,34 @@ describe Mongoid::Genesis do
24
24
  its(:title) { should eql 'The Art of Peace' }
25
25
  its('genesis.title') { should eql 'The Art of War' }
26
26
 
27
- context "when changing title to 'The Art of Neutrality'" do
27
+ context "and changing title to 'The Art of Neutrality'" do
28
28
  before { book.write_and_preserve_attribute :title, 'The Art of Neutrality' }
29
29
 
30
30
  its(:title) { should eql 'The Art of Neutrality' }
31
31
  its('genesis.title') { should eql 'The Art of War' }
32
+
33
+ context "and rechanging it to 'The Art of War'" do
34
+ before { book.write_and_preserve_attribute :title, 'The Art of War' }
35
+
36
+ its(:title) { should eql 'The Art of War' }
37
+ its('genesis.title') { should be_nil }
38
+ end
32
39
  end
33
40
  end
41
+
42
+ context "when changing title to nil" do
43
+ before { book.write_and_preserve_attribute :title, nil }
44
+
45
+ its(:title) { should be_nil }
46
+ its('genesis.title') { should eql 'The Art of War' }
47
+ end
34
48
  end
35
49
 
36
50
  describe "#restore_genesis" do
37
51
  context "when changing title to 'The Art of Peace'" do
38
52
  before { book.write_and_preserve_attribute :title, 'The Art of Peace' }
39
53
 
40
- context "when restoring genesis for title" do
54
+ context "and restoring genesis for title" do
41
55
  before { book.restore_genesis(:title) }
42
56
 
43
57
  its(:title) { should eql 'The Art of War' }
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongoid-genesis
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 25
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 2
10
- version: 0.0.2
9
+ - 3
10
+ version: 0.0.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - Sebastien Rosa
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-04-02 00:00:00 Z
18
+ date: 2012-04-27 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: mongoid
@@ -79,9 +79,25 @@ dependencies:
79
79
  type: :development
80
80
  version_requirements: *id004
81
81
  - !ruby/object:Gem::Dependency
82
- name: metrical
82
+ name: rspec-compact-doc-formatter
83
83
  prerelease: false
84
84
  requirement: &id005 !ruby/object:Gem::Requirement
85
+ none: false
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ hash: 25
90
+ segments:
91
+ - 0
92
+ - 0
93
+ - 3
94
+ version: 0.0.3
95
+ type: :development
96
+ version_requirements: *id005
97
+ - !ruby/object:Gem::Dependency
98
+ name: metrical
99
+ prerelease: false
100
+ requirement: &id006 !ruby/object:Gem::Requirement
85
101
  none: false
86
102
  requirements:
87
103
  - - ">="
@@ -93,7 +109,7 @@ dependencies:
93
109
  - 0
94
110
  version: 0.1.0
95
111
  type: :development
96
- version_requirements: *id005
112
+ version_requirements: *id006
97
113
  description: Mongoid Genesis will give you the ability to override attribute values without losing the original one.
98
114
  email:
99
115
  - sebastien@demarque.com