mongoid-undo 0.2.1 → 0.3.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.
- data/README.md +1 -1
- data/lib/mongoid/undo.rb +3 -3
- data/lib/mongoid/undo/version.rb +1 -1
- data/spec/undo_spec.rb +14 -16
- metadata +1 -1
data/README.md
CHANGED
@@ -8,7 +8,7 @@ Super simple undo for your Mongoid app, based on both great modules
|
|
8
8
|
|
9
9
|
* `Mongoid::Paranoia` is used to mark documents as deleted, instead of deleting them really, otherwise restoring would be impossible ;).
|
10
10
|
* `Mongoid::Versioning` is used to keep the older versions of your document, so we can restore them.
|
11
|
-
* `Mongoid::Undo` adds an `
|
11
|
+
* `Mongoid::Undo` adds an `action` field to your documents, so we can easily determine whether it was created, updated, or destroyed.
|
12
12
|
|
13
13
|
But instead of explaining all the details, you should get the idea by looking at the Usage section.
|
14
14
|
|
data/lib/mongoid/undo.rb
CHANGED
@@ -22,19 +22,19 @@ module Mongoid
|
|
22
22
|
include Mongoid::Versioning
|
23
23
|
|
24
24
|
included do
|
25
|
-
field :
|
25
|
+
field :action, type: Symbol, versioned: false
|
26
26
|
index deleted_at: 1
|
27
27
|
|
28
28
|
[:create, :update, :destroy].each do |action|
|
29
29
|
set_callback action, :after do
|
30
|
-
collection.find(atomic_selector).update('$set' => {
|
30
|
+
collection.find(atomic_selector).update('$set' => { action: action })
|
31
31
|
reload
|
32
32
|
end
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
36
36
|
def undo
|
37
|
-
case
|
37
|
+
case action
|
38
38
|
when :create, :destroy
|
39
39
|
deleted_at.present? ? restore : delete
|
40
40
|
when :update
|
data/lib/mongoid/undo/version.rb
CHANGED
data/spec/undo_spec.rb
CHANGED
@@ -12,8 +12,6 @@ module Mongoid
|
|
12
12
|
|
13
13
|
|
14
14
|
subject { Document.new(name: 'foo') }
|
15
|
-
let(:name) { subject.name }
|
16
|
-
let(:action) { subject.send(:_action) }
|
17
15
|
|
18
16
|
|
19
17
|
describe 'creating' do
|
@@ -21,7 +19,7 @@ module Mongoid
|
|
21
19
|
|
22
20
|
|
23
21
|
it 'sets action to :create' do
|
24
|
-
action.must_equal :create
|
22
|
+
subject.action.must_equal :create
|
25
23
|
end
|
26
24
|
|
27
25
|
|
@@ -35,7 +33,7 @@ module Mongoid
|
|
35
33
|
|
36
34
|
|
37
35
|
it 'keeps :create action' do
|
38
|
-
action.must_equal :create
|
36
|
+
subject.action.must_equal :create
|
39
37
|
end
|
40
38
|
|
41
39
|
|
@@ -49,7 +47,7 @@ module Mongoid
|
|
49
47
|
|
50
48
|
|
51
49
|
it 'keeps :create action' do
|
52
|
-
action.must_equal :create
|
50
|
+
subject.action.must_equal :create
|
53
51
|
end
|
54
52
|
end
|
55
53
|
end
|
@@ -60,7 +58,7 @@ module Mongoid
|
|
60
58
|
|
61
59
|
|
62
60
|
it 'sets action to :update' do
|
63
|
-
action.must_equal :update
|
61
|
+
subject.action.must_equal :update
|
64
62
|
end
|
65
63
|
|
66
64
|
|
@@ -69,7 +67,7 @@ module Mongoid
|
|
69
67
|
|
70
68
|
|
71
69
|
it 'retrieves' do
|
72
|
-
name.must_equal 'foo'
|
70
|
+
subject.name.must_equal 'foo'
|
73
71
|
end
|
74
72
|
|
75
73
|
|
@@ -79,7 +77,7 @@ module Mongoid
|
|
79
77
|
|
80
78
|
|
81
79
|
it 'keeps :update action' do
|
82
|
-
action.must_equal :update
|
80
|
+
subject.action.must_equal :update
|
83
81
|
end
|
84
82
|
|
85
83
|
|
@@ -88,7 +86,7 @@ module Mongoid
|
|
88
86
|
|
89
87
|
|
90
88
|
it 'retrieves' do
|
91
|
-
name.must_equal 'bar'
|
89
|
+
subject.name.must_equal 'bar'
|
92
90
|
end
|
93
91
|
|
94
92
|
|
@@ -98,7 +96,7 @@ module Mongoid
|
|
98
96
|
|
99
97
|
|
100
98
|
it 'keeps :update action' do
|
101
|
-
action.must_equal :update
|
99
|
+
subject.action.must_equal :update
|
102
100
|
end
|
103
101
|
end
|
104
102
|
end
|
@@ -110,7 +108,7 @@ module Mongoid
|
|
110
108
|
|
111
109
|
|
112
110
|
it 'sets action to :destroy' do
|
113
|
-
action.must_equal :destroy
|
111
|
+
subject.action.must_equal :destroy
|
114
112
|
end
|
115
113
|
|
116
114
|
|
@@ -129,7 +127,7 @@ module Mongoid
|
|
129
127
|
|
130
128
|
|
131
129
|
it 'keeps :destroy action' do
|
132
|
-
action.must_equal :destroy
|
130
|
+
subject.action.must_equal :destroy
|
133
131
|
end
|
134
132
|
|
135
133
|
|
@@ -143,7 +141,7 @@ module Mongoid
|
|
143
141
|
|
144
142
|
|
145
143
|
it 'keeps :destroy action' do
|
146
|
-
action.must_equal :destroy
|
144
|
+
subject.action.must_equal :destroy
|
147
145
|
end
|
148
146
|
end
|
149
147
|
end
|
@@ -158,14 +156,14 @@ module Mongoid
|
|
158
156
|
end
|
159
157
|
|
160
158
|
|
161
|
-
describe :
|
159
|
+
describe :action do
|
162
160
|
it 'is a symbol' do
|
163
|
-
subject.fields['
|
161
|
+
subject.fields['action'].options[:type].must_equal Symbol
|
164
162
|
end
|
165
163
|
|
166
164
|
|
167
165
|
it 'is versionless' do
|
168
|
-
subject.fields['
|
166
|
+
subject.fields['action'].options[:versioned].must_equal false
|
169
167
|
end
|
170
168
|
end
|
171
169
|
|