rails_soft_deletable 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
@@ -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