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.
@@ -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.7
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-06 00:00:00.000000000 Z
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
@@ -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