mongoid-userstamps 1.0.0 → 2.0.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.
- checksums.yaml +4 -4
- data/.gitignore +2 -0
- data/lib/mongoid/userstamps/config/model.rb +12 -20
- data/lib/mongoid/userstamps/config/user.rb +2 -6
- data/lib/mongoid/userstamps/config.rb +13 -15
- data/lib/mongoid/userstamps/created.rb +3 -3
- data/lib/mongoid/userstamps/deleted.rb +3 -3
- data/lib/mongoid/userstamps/model.rb +9 -5
- data/lib/mongoid/userstamps/updated.rb +3 -3
- data/lib/mongoid/userstamps/user.rb +2 -6
- data/lib/mongoid/userstamps/version.rb +1 -1
- data/test/config_test.rb +36 -2
- data/test/model_test.rb +60 -1
- data/test/models/archive.rb +7 -0
- data/test/models/comment.rb +10 -0
- data/test/models/person.rb +7 -0
- data/test/models/user.rb +2 -0
- data/test/paranoia_test.rb +17 -0
- data/test/test_helper.rb +2 -1
- data/test/user_test.rb +25 -0
- metadata +10 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e8e66e1d1838ee4cc6b4efd260e6856b297faa0f
|
4
|
+
data.tar.gz: 36f03eb31abe9d279b20c17a26c179df9aa1d155
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cf678c5afb5cc5235c603756e96e739b940b270861e879ad0f1b2ea081328dd559368c2c8fb3f8e5570f5544c44b278ab162520264287f24fbd8849c75f3fb45
|
7
|
+
data.tar.gz: ba327ac8ed816e018f8311256ef066a59163121084a9399750335ceb0d9ebe9ce080f8f29ae268708b713fe8ec5af3cd098c00965318b3a9d80036c77689cc9f
|
data/.gitignore
CHANGED
@@ -4,37 +4,29 @@ module Mongoid
|
|
4
4
|
module Userstamps
|
5
5
|
module Config
|
6
6
|
class Model
|
7
|
-
attr_accessor :created_name
|
8
|
-
attr_accessor :updated_name
|
9
|
-
attr_accessor :deleted_name
|
10
7
|
attr_accessor :user_model
|
11
8
|
|
12
|
-
def initialize(
|
13
|
-
@
|
14
|
-
@updated_name = opts[:updated_name]
|
15
|
-
@user_model = opts[:user_model]
|
9
|
+
def initialize(model)
|
10
|
+
@model = model
|
16
11
|
end
|
17
12
|
|
18
|
-
def
|
19
|
-
|
20
|
-
end
|
21
|
-
|
22
|
-
def updated_name
|
23
|
-
@updated_name || Mongoid::Userstamps::Config.updated_name
|
24
|
-
end
|
25
|
-
|
26
|
-
def deleted_name
|
27
|
-
@deleted_name || Mongoid::Userstamps::Config.deleted_name
|
13
|
+
def config
|
14
|
+
Mongoid::Userstamps::Config
|
28
15
|
end
|
29
16
|
|
30
17
|
def user_model
|
31
|
-
@user_model ||
|
18
|
+
@user_model || config.user_classes.first.to_s
|
32
19
|
end
|
20
|
+
|
33
21
|
def user_model=(value)
|
34
22
|
@user_model = value.to_s if value
|
23
|
+
set_user_model!
|
35
24
|
end
|
36
|
-
|
37
|
-
|
25
|
+
|
26
|
+
def set_user_model!
|
27
|
+
@model.relations[config.created_name.to_s].try(:[]=, :class_name, user_model)
|
28
|
+
@model.relations[config.updated_name.to_s].try(:[]=, :class_name, user_model)
|
29
|
+
@model.relations[config.deleted_name.to_s].try(:[]=, :class_name, user_model)
|
38
30
|
end
|
39
31
|
end
|
40
32
|
end
|
@@ -6,12 +6,8 @@ module Mongoid
|
|
6
6
|
class User
|
7
7
|
attr_accessor :reader
|
8
8
|
|
9
|
-
def initialize(
|
10
|
-
@reader =
|
11
|
-
end
|
12
|
-
|
13
|
-
def reader
|
14
|
-
@reader || Mongoid::Userstamps::Config.user_reader
|
9
|
+
def initialize(model)
|
10
|
+
@reader = "current_#{model.name.underscore}".to_sym
|
15
11
|
end
|
16
12
|
end
|
17
13
|
end
|
@@ -10,11 +10,10 @@ module Mongoid
|
|
10
10
|
attr_accessor :created_name
|
11
11
|
attr_accessor :updated_name
|
12
12
|
attr_accessor :deleted_name
|
13
|
-
attr_accessor :user_reader
|
14
13
|
|
15
|
-
|
16
|
-
|
17
|
-
|
14
|
+
DEFAULT_CREATED_NAME = :created_by
|
15
|
+
DEFAULT_UPDATED_NAME = :updated_by
|
16
|
+
DEFAULT_DELETED_NAME = :deleted_by
|
18
17
|
|
19
18
|
def user_classes
|
20
19
|
@user_classes ||= []
|
@@ -23,10 +22,7 @@ module Mongoid
|
|
23
22
|
def add_user_class(klass)
|
24
23
|
user_classes << klass
|
25
24
|
model_classes.each do |model|
|
26
|
-
|
27
|
-
if !config.user_model_defined?
|
28
|
-
model.relations[config.created_name.to_s].try(:[]=, :class_name, config.user_model)
|
29
|
-
end
|
25
|
+
model.userstamps_model.set_user_model!
|
30
26
|
end
|
31
27
|
end
|
32
28
|
|
@@ -39,19 +35,15 @@ module Mongoid
|
|
39
35
|
end
|
40
36
|
|
41
37
|
def created_name
|
42
|
-
@created_name ||=
|
38
|
+
@created_name ||= DEFAULT_CREATED_NAME
|
43
39
|
end
|
44
40
|
|
45
41
|
def updated_name
|
46
|
-
@updated_name ||=
|
42
|
+
@updated_name ||= DEFAULT_UPDATED_NAME
|
47
43
|
end
|
48
44
|
|
49
45
|
def deleted_name
|
50
|
-
@deleted_name ||=
|
51
|
-
end
|
52
|
-
|
53
|
-
def user_reader
|
54
|
-
@user_reader ||= :current_user
|
46
|
+
@deleted_name ||= DEFAULT_DELETED_NAME
|
55
47
|
end
|
56
48
|
|
57
49
|
def current_user(user_class)
|
@@ -72,6 +64,12 @@ module Mongoid
|
|
72
64
|
store[key] = value
|
73
65
|
end
|
74
66
|
end
|
67
|
+
|
68
|
+
def reset
|
69
|
+
@created_name = DEFAULT_CREATED_NAME
|
70
|
+
@updated_name = DEFAULT_UPDATED_NAME
|
71
|
+
@deleted_name = DEFAULT_DELETED_NAME
|
72
|
+
end
|
75
73
|
end
|
76
74
|
end
|
77
75
|
end
|
@@ -10,7 +10,7 @@ module Mongoid
|
|
10
10
|
include Mongoid::Userstamps::Model
|
11
11
|
end
|
12
12
|
|
13
|
-
belongs_to
|
13
|
+
belongs_to userstamps_config.created_name, {
|
14
14
|
class_name: userstamps_model.user_model,
|
15
15
|
inverse_of: nil
|
16
16
|
}
|
@@ -20,8 +20,8 @@ module Mongoid
|
|
20
20
|
|
21
21
|
def set_created_by
|
22
22
|
user = self.class.current_user
|
23
|
-
return if !user || self.public_send(
|
24
|
-
self.public_send("#{
|
23
|
+
return if !user || self.public_send(userstamps_config.created_name)
|
24
|
+
self.public_send("#{userstamps_config.created_name}=", user)
|
25
25
|
end
|
26
26
|
end
|
27
27
|
end
|
@@ -10,7 +10,7 @@ module Mongoid
|
|
10
10
|
include Mongoid::Userstamps::Model
|
11
11
|
end
|
12
12
|
|
13
|
-
belongs_to
|
13
|
+
belongs_to userstamps_config.deleted_name, {
|
14
14
|
class_name: userstamps_model.user_model,
|
15
15
|
inverse_of: nil
|
16
16
|
}
|
@@ -20,8 +20,8 @@ module Mongoid
|
|
20
20
|
|
21
21
|
def set_deleted_by
|
22
22
|
user = self.class.current_user
|
23
|
-
return if !user || self.public_send("#{
|
24
|
-
self.public_send("#{
|
23
|
+
return if !user || self.public_send("#{userstamps_config.deleted_name}_id_changed?")
|
24
|
+
self.public_send("#{userstamps_config.deleted_name}=", user)
|
25
25
|
end
|
26
26
|
end
|
27
27
|
end
|
@@ -7,17 +7,21 @@ module Mongoid
|
|
7
7
|
Mongoid::Userstamps::Config.add_model_class(self)
|
8
8
|
end
|
9
9
|
|
10
|
-
def
|
11
|
-
self.class.
|
10
|
+
def userstamps_config
|
11
|
+
self.class.userstamps_config
|
12
12
|
end
|
13
13
|
|
14
14
|
class_methods do
|
15
|
-
def userstamps_model
|
16
|
-
@userstamps_model ||= Mongoid::Userstamps::Config::Model.new(
|
15
|
+
def userstamps_model
|
16
|
+
@userstamps_model ||= Mongoid::Userstamps::Config::Model.new(self)
|
17
17
|
end
|
18
18
|
|
19
19
|
def current_user
|
20
|
-
|
20
|
+
userstamps_config.current_user(userstamps_model.user_model)
|
21
|
+
end
|
22
|
+
|
23
|
+
def userstamps_config
|
24
|
+
Mongoid::Userstamps::Config
|
21
25
|
end
|
22
26
|
end
|
23
27
|
end
|
@@ -10,7 +10,7 @@ module Mongoid
|
|
10
10
|
include Mongoid::Userstamps::Model
|
11
11
|
end
|
12
12
|
|
13
|
-
belongs_to
|
13
|
+
belongs_to userstamps_config.updated_name, {
|
14
14
|
class_name: userstamps_model.user_model,
|
15
15
|
inverse_of: nil
|
16
16
|
}
|
@@ -20,8 +20,8 @@ module Mongoid
|
|
20
20
|
|
21
21
|
def set_updated_by
|
22
22
|
user = self.class.current_user
|
23
|
-
return if !user || self.public_send("#{
|
24
|
-
self.public_send("#{
|
23
|
+
return if !user || self.public_send("#{userstamps_config.updated_name}_id_changed?")
|
24
|
+
self.public_send("#{userstamps_config.updated_name}=", user)
|
25
25
|
end
|
26
26
|
end
|
27
27
|
end
|
@@ -12,10 +12,6 @@ module Mongoid
|
|
12
12
|
self.id == self.class.current.try(:id)
|
13
13
|
end
|
14
14
|
|
15
|
-
def userstamps_user
|
16
|
-
self.class.userstamps_user
|
17
|
-
end
|
18
|
-
|
19
15
|
class_methods do
|
20
16
|
def current
|
21
17
|
Mongoid::Userstamps::Config.current_user(self)
|
@@ -33,8 +29,8 @@ module Mongoid
|
|
33
29
|
self.current = old
|
34
30
|
end
|
35
31
|
|
36
|
-
def userstamps_user
|
37
|
-
@userstamps_user ||= Mongoid::Userstamps::Config::User.new(
|
32
|
+
def userstamps_user
|
33
|
+
@userstamps_user ||= Mongoid::Userstamps::Config::User.new(self)
|
38
34
|
end
|
39
35
|
end
|
40
36
|
end
|
data/test/config_test.rb
CHANGED
@@ -1,17 +1,51 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
3
|
class ConfigTest < BaseTest
|
4
|
+
class ModelClass
|
5
|
+
cattr_accessor :user_model
|
6
|
+
|
7
|
+
def self.userstamps_model; self; end
|
8
|
+
def self.user_model
|
9
|
+
Mongoid::Userstamps::Config.user_classes.last
|
10
|
+
end
|
11
|
+
def self.set_user_model!
|
12
|
+
@@user_model = user_model
|
13
|
+
end
|
14
|
+
end
|
15
|
+
class UserClass
|
16
|
+
end
|
17
|
+
|
18
|
+
teardown do
|
19
|
+
Mongoid::Userstamps::Config.model_classes.delete(ModelClass)
|
20
|
+
Mongoid::Userstamps::Config.user_classes.delete(UserClass)
|
21
|
+
end
|
22
|
+
|
4
23
|
test 'should config using block' do
|
5
24
|
Mongoid::Userstamps.config do |c|
|
6
25
|
c.created_name = :creator
|
7
26
|
c.updated_name = :updater
|
8
27
|
c.deleted_name = :deleter
|
9
|
-
c.user_reader = :get_user
|
10
28
|
end
|
11
29
|
assert_equal :creator, Mongoid::Userstamps::Config.created_name
|
12
30
|
assert_equal :updater, Mongoid::Userstamps::Config.updated_name
|
13
31
|
assert_equal :deleter, Mongoid::Userstamps::Config.deleted_name
|
14
|
-
|
32
|
+
end
|
33
|
+
|
34
|
+
test 'current_user' do
|
35
|
+
Mongoid::Userstamps::Config.set_current_user(Mongoid, 'test')
|
36
|
+
assert_equal 'test', Mongoid::Userstamps::Config.current_user(Mongoid)
|
37
|
+
end
|
38
|
+
|
39
|
+
test 'add_model_class' do
|
40
|
+
assert_difference(->{Mongoid::Userstamps::Config.model_classes.count}) do
|
41
|
+
Mongoid::Userstamps::Config.add_model_class(ModelClass)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
test 'add_user_class' do
|
46
|
+
Mongoid::Userstamps::Config.add_model_class(ModelClass)
|
47
|
+
Mongoid::Userstamps::Config.add_user_class(UserClass)
|
48
|
+
assert_equal UserClass, ModelClass.user_model
|
15
49
|
end
|
16
50
|
end
|
17
51
|
|
data/test/model_test.rb
CHANGED
@@ -1,12 +1,71 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
3
|
class ModelTest < BaseTest
|
4
|
-
|
4
|
+
setup do
|
5
5
|
@user = User.create(name: 'John')
|
6
|
+
@user2 = User.create(name: 'Johnny')
|
6
7
|
Mongoid::Userstamps::Config.set_current_user(User, @user)
|
8
|
+
@person = Person.create(name: 'Doe')
|
9
|
+
@person2 = Person.create(name: 'Doe..')
|
10
|
+
Mongoid::Userstamps::Config.set_current_user(Person, @person)
|
11
|
+
end
|
12
|
+
|
13
|
+
test 'should set created_by and updated_by on creation' do
|
7
14
|
@post = Post.create(title: 'Hello')
|
8
15
|
assert_equal @user, @post.created_by
|
9
16
|
assert_equal @user, @post.updated_by
|
10
17
|
end
|
18
|
+
|
19
|
+
test 'model with user_model' do
|
20
|
+
assert_equal 'Person', Comment.relations['updated_by'][:class_name]
|
21
|
+
end
|
22
|
+
|
23
|
+
test 'set_created_by' do
|
24
|
+
@post = Post.new
|
25
|
+
@post.set_created_by
|
26
|
+
assert_equal @user, @post.created_by
|
27
|
+
|
28
|
+
@post = Post.new
|
29
|
+
@post.created_by = @user2
|
30
|
+
@post.set_created_by
|
31
|
+
assert_equal @user2, @post.created_by
|
32
|
+
|
33
|
+
Mongoid::Userstamps::Config.set_current_user(User, nil)
|
34
|
+
@post = Post.new
|
35
|
+
@post.set_created_by
|
36
|
+
assert_equal nil, @post.created_by
|
37
|
+
end
|
38
|
+
|
39
|
+
test 'set_updated_by' do
|
40
|
+
@post = Post.new
|
41
|
+
@post.set_updated_by
|
42
|
+
assert_equal @user, @post.updated_by
|
43
|
+
|
44
|
+
@post = Post.new
|
45
|
+
@post.updated_by = @user2
|
46
|
+
@post.set_updated_by
|
47
|
+
assert_equal @user2, @post.updated_by
|
48
|
+
|
49
|
+
Mongoid::Userstamps::Config.set_current_user(User, nil)
|
50
|
+
@post = Post.new
|
51
|
+
@post.set_updated_by
|
52
|
+
assert_equal nil, @post.updated_by
|
53
|
+
end
|
54
|
+
|
55
|
+
test 'set_deleted_by' do
|
56
|
+
@comment = Comment.new
|
57
|
+
@comment.set_deleted_by
|
58
|
+
assert_equal @person, @comment.deleted_by
|
59
|
+
|
60
|
+
@comment = Comment.new
|
61
|
+
@comment.deleted_by = @person2
|
62
|
+
@comment.set_deleted_by
|
63
|
+
assert_equal @person2, @comment.deleted_by
|
64
|
+
|
65
|
+
Mongoid::Userstamps::Config.set_current_user(Person, nil)
|
66
|
+
@comment = Comment.new
|
67
|
+
@comment.set_deleted_by
|
68
|
+
assert_equal nil, @comment.deleted_by
|
69
|
+
end
|
11
70
|
end
|
12
71
|
|
data/test/models/user.rb
CHANGED
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module Mongoid::Paranoia
|
4
|
+
end
|
5
|
+
|
6
|
+
class ParanoiaTest < BaseTest
|
7
|
+
class ModelClass
|
8
|
+
include Mongoid::Document
|
9
|
+
include Mongoid::Paranoia
|
10
|
+
include Mongoid::Userstamps
|
11
|
+
end
|
12
|
+
|
13
|
+
test 'deleted' do
|
14
|
+
assert ModelClass < Mongoid::Userstamps::Deleted
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
data/test/test_helper.rb
CHANGED
@@ -18,8 +18,9 @@ Dir["#{File.dirname(__FILE__)}/models/*.rb"].each { |f| require f }
|
|
18
18
|
ActiveSupport::TestCase.test_order = :random
|
19
19
|
|
20
20
|
class BaseTest < ActiveSupport::TestCase
|
21
|
-
|
21
|
+
teardown do
|
22
22
|
Mongoid::Sessions.default.use('mongoid_userstamps_test').drop
|
23
|
+
Mongoid::Userstamps::Config.reset
|
23
24
|
end
|
24
25
|
end
|
25
26
|
|
data/test/user_test.rb
CHANGED
@@ -5,6 +5,31 @@ class UserTest < BaseTest
|
|
5
5
|
@user = User.create(name: 'John')
|
6
6
|
Mongoid::Userstamps::Config.set_current_user(User, @user)
|
7
7
|
assert_equal @user, Mongoid::Userstamps::Config.current_user(User)
|
8
|
+
assert @user.current?
|
9
|
+
assert_equal @user, User.current
|
10
|
+
|
11
|
+
@user2 = User.create(name: 'Johnny')
|
12
|
+
User.current = @user2
|
13
|
+
assert @user2.current?
|
14
|
+
assert_equal @user2, Mongoid::Userstamps::Config.current_user(User)
|
15
|
+
end
|
16
|
+
|
17
|
+
test 'reader' do
|
18
|
+
assert_equal :current_person, Person.userstamps_user.reader
|
19
|
+
assert_equal :current_admin, User.userstamps_user.reader
|
20
|
+
end
|
21
|
+
|
22
|
+
test 'sudo' do
|
23
|
+
@user = User.create(name: 'John')
|
24
|
+
@user2 = User.create(name: 'Johnny')
|
25
|
+
User.current = @user
|
26
|
+
post = nil
|
27
|
+
User.sudo @user2 do
|
28
|
+
post = Post.create(title: 'Hello')
|
29
|
+
end
|
30
|
+
|
31
|
+
assert_equal @user, User.current
|
32
|
+
assert_equal @user2, post.created_by
|
8
33
|
end
|
9
34
|
end
|
10
35
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mongoid-userstamps
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Geoffroy Planquart
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2015-
|
14
|
+
date: 2015-05-27 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: mongoid
|
@@ -82,9 +82,13 @@ files:
|
|
82
82
|
- spec/unit/userstamp_spec.rb
|
83
83
|
- test/config_test.rb
|
84
84
|
- test/model_test.rb
|
85
|
+
- test/models/archive.rb
|
86
|
+
- test/models/comment.rb
|
87
|
+
- test/models/person.rb
|
85
88
|
- test/models/post.rb
|
86
89
|
- test/models/user.rb
|
87
90
|
- test/mongoid.yml
|
91
|
+
- test/paranoia_test.rb
|
88
92
|
- test/test_helper.rb
|
89
93
|
- test/user_test.rb
|
90
94
|
homepage: https://github.com/tbpro/mongoid_userstamp
|
@@ -125,9 +129,13 @@ test_files:
|
|
125
129
|
- spec/unit/userstamp_spec.rb
|
126
130
|
- test/config_test.rb
|
127
131
|
- test/model_test.rb
|
132
|
+
- test/models/archive.rb
|
133
|
+
- test/models/comment.rb
|
134
|
+
- test/models/person.rb
|
128
135
|
- test/models/post.rb
|
129
136
|
- test/models/user.rb
|
130
137
|
- test/mongoid.yml
|
138
|
+
- test/paranoia_test.rb
|
131
139
|
- test/test_helper.rb
|
132
140
|
- test/user_test.rb
|
133
141
|
has_rdoc:
|