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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f50851182f67227d7ce48d89b444cc6d0404cef2
4
- data.tar.gz: 951bff1d14fce51b98ff36e2203d0e7cc42f23ed
3
+ metadata.gz: e8e66e1d1838ee4cc6b4efd260e6856b297faa0f
4
+ data.tar.gz: 36f03eb31abe9d279b20c17a26c179df9aa1d155
5
5
  SHA512:
6
- metadata.gz: 623715ef2edd2124ebb2b2886c7c8e82256a211157c851dec91b11ad6054faaadc069e33f47c4a12156d206bad213a7b470c0f7b191fcb88e7a87ff1a98f168e
7
- data.tar.gz: 5c3ed62b39cd302a306956971407a8948883825fae1d963741083f75c6b16a4cfa40c88fbde5f196ba5f78c9387837611af537712762858747820b861c96f85b
6
+ metadata.gz: cf678c5afb5cc5235c603756e96e739b940b270861e879ad0f1b2ea081328dd559368c2c8fb3f8e5570f5544c44b278ab162520264287f24fbd8849c75f3fb45
7
+ data.tar.gz: ba327ac8ed816e018f8311256ef066a59163121084a9399750335ceb0d9ebe9ce080f8f29ae268708b713fe8ec5af3cd098c00965318b3a9d80036c77689cc9f
data/.gitignore CHANGED
@@ -11,3 +11,5 @@
11
11
  /.rbenv-version
12
12
  /*.gem
13
13
  /Gemfile.lock
14
+
15
+ /coverage
@@ -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(opts = {})
13
- @created_name = opts[:created_name]
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 created_name
19
- @created_name || Mongoid::Userstamps::Config.created_name
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 || Mongoid::Userstamps::Config.user_classes.first.to_s
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
- def user_model_defined?
37
- !!@user_model
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(opts = {})
10
- @reader = opts[: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
- def eval
16
- instance_eval(&Proc.new)
17
- end
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
- config = model.userstamps_model
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 ||= :created_by
38
+ @created_name ||= DEFAULT_CREATED_NAME
43
39
  end
44
40
 
45
41
  def updated_name
46
- @updated_name ||= :updated_by
42
+ @updated_name ||= DEFAULT_UPDATED_NAME
47
43
  end
48
44
 
49
45
  def deleted_name
50
- @deleted_name ||= :deleted_by
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 userstamps_model.created_name, {
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(userstamps_model.created_name)
24
- self.public_send("#{userstamps_model.created_name}=", user)
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 userstamps_model.deleted_name, {
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("#{userstamps_model.deleted_name}_id_changed?")
24
- self.public_send("#{userstamps_model.deleted_name}=", user)
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 userstamps_model
11
- self.class.userstamps_model
10
+ def userstamps_config
11
+ self.class.userstamps_config
12
12
  end
13
13
 
14
14
  class_methods do
15
- def userstamps_model(opts = {})
16
- @userstamps_model ||= Mongoid::Userstamps::Config::Model.new(opts)
15
+ def userstamps_model
16
+ @userstamps_model ||= Mongoid::Userstamps::Config::Model.new(self)
17
17
  end
18
18
 
19
19
  def current_user
20
- Mongoid::Userstamps::Config.current_user(userstamps_model.user_model)
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 userstamps_model.updated_name, {
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("#{userstamps_model.updated_name}_id_changed?")
24
- self.public_send("#{userstamps_model.updated_name}=", user)
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(opts = {})
37
- @userstamps_user ||= Mongoid::Userstamps::Config::User.new(opts)
32
+ def userstamps_user
33
+ @userstamps_user ||= Mongoid::Userstamps::Config::User.new(self)
38
34
  end
39
35
  end
40
36
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Mongoid
4
4
  module Userstamps
5
- VERSION = '1.0.0'
5
+ VERSION = '2.0.0'
6
6
  end
7
7
  end
8
8
 
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
- assert_equal :get_user, Mongoid::Userstamps::Config.user_reader
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
- test 'should set created_by and updated_by on creation' do
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
 
@@ -0,0 +1,7 @@
1
+ class Archive
2
+ include Mongoid::Document
3
+ include Mongoid::Userstamps::Deleted
4
+
5
+ field :content
6
+ end
7
+
@@ -0,0 +1,10 @@
1
+ class Comment
2
+ include Mongoid::Document
3
+ include Mongoid::Userstamps::Updated
4
+ include Mongoid::Userstamps::Deleted
5
+
6
+ field :content
7
+
8
+ userstamps_model.user_model = 'Person'
9
+ end
10
+
@@ -0,0 +1,7 @@
1
+ class Person
2
+ include Mongoid::Document
3
+ include Mongoid::Userstamps::User
4
+
5
+ field :name
6
+ end
7
+
data/test/models/user.rb CHANGED
@@ -3,5 +3,7 @@ class User
3
3
  include Mongoid::Userstamps::User
4
4
 
5
5
  field :name
6
+
7
+ userstamps_user.reader = :current_admin
6
8
  end
7
9
 
@@ -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
- def teardown
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: 1.0.0
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-03-27 00:00:00.000000000 Z
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: