paranoid2 1.1.3 → 1.1.4
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 +4 -4
- data/lib/paranoid2/scoping.rb +1 -1
- data/lib/paranoid2/version.rb +1 -1
- data/paranoid2.gemspec +1 -1
- data/spec/paranoid2_spec.rb +23 -3
- data/spec/spec_helper.rb +1 -1
- data/spec/spec_models.rb +3 -0
- metadata +14 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 41f8a90b29f702033ddfbcd98b0a63efa4f92a9e
|
4
|
+
data.tar.gz: 8e4db488f8d9fa3b829be3f3408c8eebc8999ca9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 85c9bef842a3c280a85ad375ef80e8586ef87397092dc8b15a32a3bac7fbf66af4445583d28b743b3ae88423e033eee9ce21c7b7ad64482c7ea55c24ae2ef0cc
|
7
|
+
data.tar.gz: b0533d5734434f3d0d21bc07c7789326b201dbfc55748198209899040e491122d7858745c553f9efbe8fe4a23dea488e2abae725ab36e88eea1cd9b0a31e450f
|
data/lib/paranoid2/scoping.rb
CHANGED
data/lib/paranoid2/version.rb
CHANGED
data/paranoid2.gemspec
CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |gem|
|
|
18
18
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
19
19
|
gem.require_paths = ["lib"]
|
20
20
|
|
21
|
-
gem.add_dependency 'activerecord', '>= 4.0.0
|
21
|
+
gem.add_dependency 'activerecord', '>= 4.0.0'
|
22
22
|
|
23
23
|
gem.add_development_dependency "rake"
|
24
24
|
gem.add_development_dependency "sqlite3"
|
data/spec/paranoid2_spec.rb
CHANGED
@@ -117,12 +117,24 @@ describe Paranoid2 do
|
|
117
117
|
b.destroy
|
118
118
|
parent1.paranoid_models.count.must_equal 0
|
119
119
|
parent1.paranoid_models.only_deleted.count.must_equal 1
|
120
|
-
|
120
|
+
|
121
121
|
c = model.create(parent_model: parent1)
|
122
122
|
parent1.paranoid_models.with_deleted.count.must_equal 2
|
123
123
|
parent1.paranoid_models.with_deleted.must_equal [a, c]
|
124
124
|
end
|
125
125
|
|
126
|
+
it 'allows "Model#includes"' do
|
127
|
+
parent1 = ParentModel.create
|
128
|
+
parent2 = ParentModel.create
|
129
|
+
a = model.create(parent_model: parent1)
|
130
|
+
b = model.create(parent_model: parent2)
|
131
|
+
|
132
|
+
l = ActiveRecord::Base.logger
|
133
|
+
ActiveRecord::Base.logger = Logger.new(STDOUT)
|
134
|
+
res = model.includes(:parent_model).merge(ParentModel.with_deleted).references(:parent_model).to_a
|
135
|
+
ActiveRecord::Base.logger = l
|
136
|
+
end
|
137
|
+
|
126
138
|
it 'works with has_many_through relationships' do
|
127
139
|
employer = Employer.create
|
128
140
|
employee = Employee.create
|
@@ -170,7 +182,7 @@ describe Paranoid2 do
|
|
170
182
|
a.reload
|
171
183
|
|
172
184
|
parent.wont_be :destroyed?
|
173
|
-
a.wont_be :destroyed?
|
185
|
+
a.wont_be :destroyed?
|
174
186
|
end
|
175
187
|
|
176
188
|
it 'restores belongs_to associations' do
|
@@ -197,7 +209,7 @@ describe Paranoid2 do
|
|
197
209
|
it 'delete without callback' do
|
198
210
|
object.save
|
199
211
|
object.delete
|
200
|
-
|
212
|
+
|
201
213
|
object.callback_called.must_be_nil
|
202
214
|
end
|
203
215
|
|
@@ -218,5 +230,13 @@ describe Paranoid2 do
|
|
218
230
|
scope = model.where(name: 'foo').only_deleted
|
219
231
|
scope.where_values_hash['name'].must_equal 'foo'
|
220
232
|
end
|
233
|
+
|
234
|
+
it 'validates uniqueness with scope' do
|
235
|
+
a = model.create!(name: 'yury', phone: '9106701550')
|
236
|
+
b = model.create(name: 'bla', phone: '9106701550')
|
237
|
+
b.wont_be :valid?
|
238
|
+
a.destroy
|
239
|
+
b.must_be :valid?
|
240
|
+
end
|
221
241
|
end
|
222
242
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -12,7 +12,7 @@ ActiveRecord::Base.establish_connection adapter: 'sqlite3', :database => DB_FILE
|
|
12
12
|
|
13
13
|
[ 'CREATE TABLE parent_models (id INTEGER NOT NULL PRIMARY KEY, deleted_at DATETIME)',
|
14
14
|
'CREATE TABLE paranoid_models (id INTEGER NOT NULL PRIMARY KEY, parent_model_id INTEGER, deleted_at DATETIME)',
|
15
|
-
'CREATE TABLE featureful_models (id INTEGER NOT NULL PRIMARY KEY, deleted_at DATETIME, name VARCHAR(32))',
|
15
|
+
'CREATE TABLE featureful_models (id INTEGER NOT NULL PRIMARY KEY, deleted_at DATETIME, name VARCHAR(32), phone VARCHAR(20))',
|
16
16
|
'CREATE TABLE plain_models (id INTEGER NOT NULL PRIMARY KEY, deleted_at DATETIME)',
|
17
17
|
'CREATE TABLE callback_models (id INTEGER NOT NULL PRIMARY KEY, deleted_at DATETIME)',
|
18
18
|
'CREATE TABLE related_models (id INTEGER NOT NULL PRIMARY KEY, parent_model_id INTEGER NOT NULL, deleted_at DATETIME)',
|
data/spec/spec_models.rb
CHANGED
@@ -15,6 +15,9 @@ class FeaturefulModel < ActiveRecord::Base
|
|
15
15
|
paranoid
|
16
16
|
|
17
17
|
validates :name, presence: true, uniqueness: true
|
18
|
+
validates :phone, uniqueness: {conditions: -> { paranoid_scope } }
|
19
|
+
|
20
|
+
scope :find_last, lambda {|name| where(name: name).last }
|
18
21
|
end
|
19
22
|
|
20
23
|
class CallbackModel < ActiveRecord::Base
|
metadata
CHANGED
@@ -1,55 +1,55 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: paranoid2
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- yury
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-02-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 4.0.0
|
19
|
+
version: 4.0.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 4.0.0
|
26
|
+
version: 4.0.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: sqlite3
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
description: paranoid models for rails 4
|
@@ -59,7 +59,7 @@ executables: []
|
|
59
59
|
extensions: []
|
60
60
|
extra_rdoc_files: []
|
61
61
|
files:
|
62
|
-
- .gitignore
|
62
|
+
- ".gitignore"
|
63
63
|
- Gemfile
|
64
64
|
- LICENSE.txt
|
65
65
|
- README.md
|
@@ -82,17 +82,17 @@ require_paths:
|
|
82
82
|
- lib
|
83
83
|
required_ruby_version: !ruby/object:Gem::Requirement
|
84
84
|
requirements:
|
85
|
-
- -
|
85
|
+
- - ">="
|
86
86
|
- !ruby/object:Gem::Version
|
87
87
|
version: '0'
|
88
88
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
89
89
|
requirements:
|
90
|
-
- -
|
90
|
+
- - ">="
|
91
91
|
- !ruby/object:Gem::Version
|
92
92
|
version: '0'
|
93
93
|
requirements: []
|
94
94
|
rubyforge_project:
|
95
|
-
rubygems_version: 2.0
|
95
|
+
rubygems_version: 2.2.0
|
96
96
|
signing_key:
|
97
97
|
specification_version: 4
|
98
98
|
summary: paranoid models for rails 4
|