rails_soft_deletable 0.0.7 → 0.0.8
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.
- checksums.yaml +8 -8
- data/lib/rails_soft_deletable/rails/associations.rb +21 -0
- data/lib/rails_soft_deletable/rails/railtie.rb +5 -0
- data/lib/rails_soft_deletable/version.rb +1 -1
- data/spec/dummy/app/models/decimal_model.rb +1 -1
- data/spec/dummy/app/models/forest.rb +7 -0
- data/spec/dummy/app/models/park.rb +3 -0
- data/spec/dummy/app/models/tree.rb +7 -0
- data/spec/dummy/db/schema.rb +16 -0
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/log/test.log +2070 -0
- data/spec/rails_soft_deletable_spec.rb +185 -4
- metadata +13 -4
- data/spec/schema.rb +0 -11
@@ -4,6 +4,187 @@ describe RailsSoftDeletable do
|
|
4
4
|
let (:model) { IntegerModel.create! }
|
5
5
|
let (:decimal_model) { DecimalModel.create! }
|
6
6
|
let (:integer_model) { IntegerModel.create! }
|
7
|
+
let (:forest) { Forest.create! }
|
8
|
+
let (:park) { Park.create! }
|
9
|
+
|
10
|
+
context ".with_deleted" do
|
11
|
+
it "returns both non deleted and soft deleted object" do
|
12
|
+
model.destroy
|
13
|
+
|
14
|
+
expect(IntegerModel.with_deleted).to include(model, integer_model)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
context ".only_deleted" do
|
19
|
+
it "returns only deleted object" do
|
20
|
+
model.destroy
|
21
|
+
|
22
|
+
expect(IntegerModel.only_deleted).to include(model)
|
23
|
+
expect(IntegerModel.only_deleted).not_to include(integer_model)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
context "with associations" do
|
28
|
+
context "model with soft_deletable" do
|
29
|
+
context ".belongs_to" do
|
30
|
+
context "with deleted option" do
|
31
|
+
before do
|
32
|
+
Tree.belongs_to(:forest, with_deleted: true)
|
33
|
+
forest.destroy
|
34
|
+
@tree = Tree.create!(forest_id: forest.id)
|
35
|
+
end
|
36
|
+
|
37
|
+
it "returns associated objects" do
|
38
|
+
expect(@tree.forest).to eq(forest)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
context "without deleted option" do
|
43
|
+
before do
|
44
|
+
Tree.belongs_to(:forest)
|
45
|
+
forest.destroy
|
46
|
+
@tree = Tree.create!(forest_id: forest.id)
|
47
|
+
end
|
48
|
+
|
49
|
+
it "does not return deleted associated objects" do
|
50
|
+
expect(@tree.forest).to be_nil
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
context ".has_many" do
|
56
|
+
context "with deleted option" do
|
57
|
+
before do
|
58
|
+
Forest.has_many(:trees, with_deleted: true)
|
59
|
+
@tree_destroyed = Tree.create!(forest_id: forest.id)
|
60
|
+
@tree_destroyed.destroy
|
61
|
+
@tree = Tree.create!(forest_id: forest.id)
|
62
|
+
end
|
63
|
+
|
64
|
+
it "returns all associated objects" do
|
65
|
+
expect(forest.trees).to include(@tree_destroyed, @tree)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
context "without deleted option" do
|
70
|
+
before do
|
71
|
+
Forest.has_many(:trees)
|
72
|
+
Tree.create!(forest_id: forest.id).destroy
|
73
|
+
end
|
74
|
+
|
75
|
+
it "returns empty" do
|
76
|
+
expect(forest.trees).to be_empty
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
context ".has_one" do
|
82
|
+
context "with deleted option" do
|
83
|
+
before do
|
84
|
+
Forest.has_one(:tree, conditions: ["biggest = ?", true], with_deleted: true)
|
85
|
+
@tree = Tree.create!(forest_id: forest.id, biggest: true)
|
86
|
+
@tree.destroy
|
87
|
+
end
|
88
|
+
|
89
|
+
it "returns deleted object" do
|
90
|
+
expect(forest.tree).to eq(@tree)
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
context "without deleted option" do
|
95
|
+
before do
|
96
|
+
Forest.has_one(:tree, conditions: ["biggest = ?", true])
|
97
|
+
Tree.create!(forest_id: forest.id, biggest: true).destroy
|
98
|
+
end
|
99
|
+
|
100
|
+
it "returns nil" do
|
101
|
+
expect(forest.tree).to be_nil
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
context "model without soft_deletable" do
|
108
|
+
context ".belongs_to" do
|
109
|
+
context "with deleted option" do
|
110
|
+
before do
|
111
|
+
Park.belongs_to(:forest, with_deleted: true)
|
112
|
+
forest.destroy
|
113
|
+
park.forest = forest
|
114
|
+
park.save
|
115
|
+
end
|
116
|
+
|
117
|
+
it "returns associated objects" do
|
118
|
+
expect(park.reload.forest).to eq(forest)
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
context "without deleted option" do
|
123
|
+
before do
|
124
|
+
Park.belongs_to(:forest)
|
125
|
+
forest.destroy
|
126
|
+
park.forest = forest
|
127
|
+
park.save
|
128
|
+
end
|
129
|
+
|
130
|
+
it "does not return deleted associated objects" do
|
131
|
+
expect(park.reload.forest).to be_nil
|
132
|
+
end
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
context ".has_many" do
|
137
|
+
context "with deleted option" do
|
138
|
+
before do
|
139
|
+
Park.has_many(:trees, with_deleted: true)
|
140
|
+
@tree_destroyed = Tree.create!(park_id: park.id)
|
141
|
+
@tree_destroyed.destroy
|
142
|
+
@tree = Tree.create!(park_id: park.id)
|
143
|
+
end
|
144
|
+
|
145
|
+
it "returns all associated objects" do
|
146
|
+
expect(park.trees).to include(@tree_destroyed, @tree)
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
context "without deleted option" do
|
151
|
+
before do
|
152
|
+
Park.has_many(:trees)
|
153
|
+
Tree.create!(park_id: park.id).destroy
|
154
|
+
end
|
155
|
+
|
156
|
+
it "returns empty" do
|
157
|
+
expect(park.trees).to be_empty
|
158
|
+
end
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
context ".has_one" do
|
163
|
+
context "with deleted option" do
|
164
|
+
before do
|
165
|
+
Park.has_one(:tree, conditions: ["biggest = ?", true], with_deleted: true)
|
166
|
+
@tree = Tree.create!(park_id: park.id, biggest: true)
|
167
|
+
@tree.destroy
|
168
|
+
end
|
169
|
+
|
170
|
+
it "returns deleted object" do
|
171
|
+
expect(park.tree).to eq(@tree)
|
172
|
+
end
|
173
|
+
end
|
174
|
+
|
175
|
+
context "without deleted option" do
|
176
|
+
before do
|
177
|
+
Park.has_one(:tree, conditions: ["biggest = ?", true])
|
178
|
+
Tree.create!(park_id: park.id, biggest: true).destroy
|
179
|
+
end
|
180
|
+
|
181
|
+
it "returns nil" do
|
182
|
+
expect(park.tree).to be_nil
|
183
|
+
end
|
184
|
+
end
|
185
|
+
end
|
186
|
+
end
|
187
|
+
end
|
7
188
|
|
8
189
|
context "#destroy" do
|
9
190
|
it "marks deleted_at column" do
|
@@ -20,14 +201,14 @@ describe RailsSoftDeletable do
|
|
20
201
|
end
|
21
202
|
|
22
203
|
it "soft deletes the record" do
|
23
|
-
Timecop.freeze(Time.now) do
|
204
|
+
Timecop.freeze(Time.now.round) do
|
24
205
|
decimal_model.destroy
|
25
206
|
integer_model.destroy
|
26
207
|
|
27
208
|
expect(decimal_model.deleted_at).to eq(("%0.6f" % Time.now.to_f).to_f)
|
28
209
|
expect(integer_model.deleted_at).to eq(Time.now.to_i)
|
29
210
|
|
30
|
-
expect(decimal_model.soft_delete_time).to eq(Time.now)
|
211
|
+
expect(decimal_model.soft_delete_time).to eq(Time.now.in_time_zone)
|
31
212
|
expect(integer_model.soft_delete_time.to_i).to eq(Time.now.to_i)
|
32
213
|
end
|
33
214
|
end
|
@@ -119,14 +300,14 @@ describe RailsSoftDeletable do
|
|
119
300
|
end
|
120
301
|
|
121
302
|
it "soft deletes the record" do
|
122
|
-
Timecop.freeze(Time.now) do
|
303
|
+
Timecop.freeze(Time.now.round) do
|
123
304
|
decimal_model.delete
|
124
305
|
integer_model.delete
|
125
306
|
|
126
307
|
expect(decimal_model.deleted_at).to eq(("%0.6f" % Time.now.to_f).to_f)
|
127
308
|
expect(integer_model.deleted_at.to_i).to eq(Time.now.to_i)
|
128
309
|
|
129
|
-
expect(decimal_model.soft_delete_time).to eq(Time.now)
|
310
|
+
expect(decimal_model.soft_delete_time).to eq(Time.now.in_time_zone)
|
130
311
|
expect(integer_model.soft_delete_time.to_i).to eq(Time.now.to_i)
|
131
312
|
end
|
132
313
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails_soft_deletable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Quan Nguyen
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-12-
|
12
|
+
date: 2013-12-11 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
type: :runtime
|
@@ -126,6 +126,7 @@ files:
|
|
126
126
|
- lib/rails_soft_deletable/callbacks.rb
|
127
127
|
- lib/rails_soft_deletable/query.rb
|
128
128
|
- lib/rails_soft_deletable/rails/active_record.rb
|
129
|
+
- lib/rails_soft_deletable/rails/associations.rb
|
129
130
|
- lib/rails_soft_deletable/rails/railtie.rb
|
130
131
|
- lib/rails_soft_deletable/version.rb
|
131
132
|
- lib/rails_soft_deletable.rb
|
@@ -134,7 +135,10 @@ files:
|
|
134
135
|
- spec/dummy/app/controllers/application_controller.rb
|
135
136
|
- spec/dummy/app/helpers/application_helper.rb
|
136
137
|
- spec/dummy/app/models/decimal_model.rb
|
138
|
+
- spec/dummy/app/models/forest.rb
|
137
139
|
- spec/dummy/app/models/integer_model.rb
|
140
|
+
- spec/dummy/app/models/park.rb
|
141
|
+
- spec/dummy/app/models/tree.rb
|
138
142
|
- spec/dummy/app/views/layouts/application.html.erb
|
139
143
|
- spec/dummy/config/application.rb
|
140
144
|
- spec/dummy/config/boot.rb
|
@@ -151,7 +155,9 @@ files:
|
|
151
155
|
- spec/dummy/config/routes.rb
|
152
156
|
- spec/dummy/config.ru
|
153
157
|
- spec/dummy/db/schema.rb
|
158
|
+
- spec/dummy/db/test.sqlite3
|
154
159
|
- spec/dummy/lib/soft_deletable_model_callbacks.rb
|
160
|
+
- spec/dummy/log/test.log
|
155
161
|
- spec/dummy/public/404.html
|
156
162
|
- spec/dummy/public/422.html
|
157
163
|
- spec/dummy/public/500.html
|
@@ -160,7 +166,6 @@ files:
|
|
160
166
|
- spec/dummy/README.rdoc
|
161
167
|
- spec/dummy/script/rails
|
162
168
|
- spec/rails_soft_deletable_spec.rb
|
163
|
-
- spec/schema.rb
|
164
169
|
- spec/spec_helper.rb
|
165
170
|
- spec/support/environment.rb
|
166
171
|
- spec/support/timecop.rb
|
@@ -197,7 +202,10 @@ test_files:
|
|
197
202
|
- spec/dummy/app/controllers/application_controller.rb
|
198
203
|
- spec/dummy/app/helpers/application_helper.rb
|
199
204
|
- spec/dummy/app/models/decimal_model.rb
|
205
|
+
- spec/dummy/app/models/forest.rb
|
200
206
|
- spec/dummy/app/models/integer_model.rb
|
207
|
+
- spec/dummy/app/models/park.rb
|
208
|
+
- spec/dummy/app/models/tree.rb
|
201
209
|
- spec/dummy/app/views/layouts/application.html.erb
|
202
210
|
- spec/dummy/config/application.rb
|
203
211
|
- spec/dummy/config/boot.rb
|
@@ -214,7 +222,9 @@ test_files:
|
|
214
222
|
- spec/dummy/config/routes.rb
|
215
223
|
- spec/dummy/config.ru
|
216
224
|
- spec/dummy/db/schema.rb
|
225
|
+
- spec/dummy/db/test.sqlite3
|
217
226
|
- spec/dummy/lib/soft_deletable_model_callbacks.rb
|
227
|
+
- spec/dummy/log/test.log
|
218
228
|
- spec/dummy/public/404.html
|
219
229
|
- spec/dummy/public/422.html
|
220
230
|
- spec/dummy/public/500.html
|
@@ -223,7 +233,6 @@ test_files:
|
|
223
233
|
- spec/dummy/README.rdoc
|
224
234
|
- spec/dummy/script/rails
|
225
235
|
- spec/rails_soft_deletable_spec.rb
|
226
|
-
- spec/schema.rb
|
227
236
|
- spec/spec_helper.rb
|
228
237
|
- spec/support/environment.rb
|
229
238
|
- spec/support/timecop.rb
|
data/spec/schema.rb
DELETED
@@ -1,11 +0,0 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
|
3
|
-
ActiveRecord::Schema.define(version: Time.now.strftime("%Y%m%d%H%M%S")) do
|
4
|
-
create_table "decimal_models", force: true do |t|
|
5
|
-
t.decimal "deleted_at", default: 0
|
6
|
-
end
|
7
|
-
|
8
|
-
create_table "integer_models", force: true do |t|
|
9
|
-
t.integer "deleted_at", default: 0
|
10
|
-
end
|
11
|
-
end
|