mongoid-userstamps 1.0.0 → 2.0.0

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