dm-userstamp 0.0.1 → 0.0.2
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.
- data/Manifest.txt +3 -3
- data/README.txt +6 -0
- data/Rakefile +2 -2
- data/lib/{dm-userstamps → dm-userstamp}/version.rb +1 -1
- data/lib/{dm-userstamps.rb → dm-userstamp.rb} +22 -0
- data/spec/integration/userstamp_spec.rb +111 -0
- metadata +5 -5
- data/spec/integration/userstamps_spec.rb +0 -112
data/Manifest.txt
CHANGED
@@ -4,8 +4,8 @@ Manifest.txt
|
|
4
4
|
README.txt
|
5
5
|
Rakefile
|
6
6
|
TODO
|
7
|
-
lib/dm-
|
8
|
-
lib/dm-
|
9
|
-
spec/integration/
|
7
|
+
lib/dm-userstamp.rb
|
8
|
+
lib/dm-userstamp/version.rb
|
9
|
+
spec/integration/userstamp_spec.rb
|
10
10
|
spec/spec.opts
|
11
11
|
spec/spec_helper.rb
|
data/README.txt
CHANGED
@@ -9,6 +9,7 @@ Eg:
|
|
9
9
|
|
10
10
|
class User
|
11
11
|
include DataMapper::Resource
|
12
|
+
include DataMapper::Userstamp::Stamper
|
12
13
|
|
13
14
|
cattr_accessor :current_user
|
14
15
|
...
|
@@ -22,6 +23,11 @@ class Monkey
|
|
22
23
|
...
|
23
24
|
end
|
24
25
|
|
26
|
+
== Docs
|
27
|
+
|
28
|
+
See rubyforge project:
|
29
|
+
* http://dm-userstamp.rubyforge.org/
|
30
|
+
|
25
31
|
== Install
|
26
32
|
|
27
33
|
sudo gem install dm-userstamp
|
data/Rakefile
CHANGED
@@ -2,8 +2,8 @@
|
|
2
2
|
|
3
3
|
require 'rubygems'
|
4
4
|
require 'hoe'
|
5
|
-
require './lib/dm-
|
6
|
-
require './lib/dm-
|
5
|
+
require './lib/dm-userstamp.rb'
|
6
|
+
require './lib/dm-userstamp/version.rb'
|
7
7
|
|
8
8
|
Hoe.new('dm-userstamp', DataMapper::Userstamps::VERSION) do |p|
|
9
9
|
p.name = 'dm-userstamp'
|
@@ -4,7 +4,29 @@ gem 'dm-core', '=0.9.4'
|
|
4
4
|
require 'dm-core'
|
5
5
|
|
6
6
|
module DataMapper
|
7
|
+
|
7
8
|
module Userstamp
|
9
|
+
|
10
|
+
module Stamper
|
11
|
+
def self.included(base)
|
12
|
+
base.extend(ClassMethods)
|
13
|
+
end
|
14
|
+
|
15
|
+
module ClassMethods
|
16
|
+
|
17
|
+
def current_user=(user)
|
18
|
+
Thread.current["#{self.to_s.downcase}_#{self.object_id}_stamper"] = user
|
19
|
+
end
|
20
|
+
|
21
|
+
def current_user
|
22
|
+
Thread.current["#{self.to_s.downcase}_#{self.object_id}_stamper"]
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
|
8
30
|
USERSTAMP_PROPERTIES = {
|
9
31
|
:created_by_id => lambda { |r| r.created_by_id = User.current_user.id if User.current_user && r.new_record? && r.created_by_id.nil? },
|
10
32
|
:updated_by_id => lambda { |r| r.updated_by_id = User.current_user.id if User.current_user}
|
@@ -0,0 +1,111 @@
|
|
1
|
+
require 'pathname'
|
2
|
+
require Pathname(__FILE__).dirname.expand_path.parent + 'spec_helper'
|
3
|
+
require 'pp'
|
4
|
+
|
5
|
+
return unless HAS_SQLITE3 || HAS_MYSQL || HAS_POSTGRES
|
6
|
+
|
7
|
+
describe 'DataMapper::Userstamp' do
|
8
|
+
before :all do
|
9
|
+
class User
|
10
|
+
include DataMapper::Resource
|
11
|
+
include DataMapper::Userstamp::Stamper
|
12
|
+
|
13
|
+
property :id, Integer, :serial => true
|
14
|
+
property :name, String
|
15
|
+
|
16
|
+
auto_migrate!(:default)
|
17
|
+
end
|
18
|
+
|
19
|
+
class Monkey
|
20
|
+
include DataMapper::Resource
|
21
|
+
|
22
|
+
property :id, Integer, :serial => true
|
23
|
+
property :name, String
|
24
|
+
property :created_by_id, Integer
|
25
|
+
property :updated_by_id, Integer
|
26
|
+
|
27
|
+
auto_migrate!(:default)
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
before :each do
|
33
|
+
@user = User.create(:name => 'Bob')
|
34
|
+
User.current_user = @user
|
35
|
+
end
|
36
|
+
|
37
|
+
after do
|
38
|
+
repository(:default).adapter.execute('DELETE from users');
|
39
|
+
repository(:default).adapter.execute('DELETE from monkeys');
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should not set created_by_id if there is no current user" do
|
43
|
+
repository(:default) do
|
44
|
+
User.current_user = nil
|
45
|
+
monkey = Monkey.new(:name => 'Eric')
|
46
|
+
monkey.save
|
47
|
+
monkey.created_by_id.should be_nil
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should not set updated_by_id if there is no current user" do
|
52
|
+
repository(:default) do
|
53
|
+
User.current_user = nil
|
54
|
+
monkey = Monkey.new(:name => 'Eric')
|
55
|
+
monkey.save
|
56
|
+
monkey.updated_by_id.should be_nil
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
it "should not set created_by_id if already set" do
|
61
|
+
repository(:default) do
|
62
|
+
monkey = Monkey.new(:name => 'Eric')
|
63
|
+
monkey.created_by_id = 5
|
64
|
+
monkey.save
|
65
|
+
monkey.created_by_id.should == 5
|
66
|
+
monkey.created_by_id.should be_a_kind_of(Integer)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
it "should set created_by_id on creation" do
|
71
|
+
repository(:default) do
|
72
|
+
monkey = Monkey.new(:name => 'Clyde')
|
73
|
+
monkey.created_by_id.should be_nil
|
74
|
+
monkey.save
|
75
|
+
monkey.created_by_id.should be_a_kind_of(Integer)
|
76
|
+
monkey.created_by_id.should == User.current_user.id
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
it "should not alter created_by_id on model updates" do
|
81
|
+
repository(:default) do
|
82
|
+
monkey = Monkey.new(:name => 'Chump')
|
83
|
+
monkey.created_by_id.should be_nil
|
84
|
+
monkey.save
|
85
|
+
original_created_by_id = monkey.created_by_id
|
86
|
+
monkey.name = 'Wilma'
|
87
|
+
monkey.save
|
88
|
+
monkey.created_by_id.should eql(original_created_by_id)
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
it "should set updated_by_id on creation and on update" do
|
93
|
+
repository(:default) do
|
94
|
+
monkey = Monkey.new(:name => 'Johnny')
|
95
|
+
monkey.updated_by_id.should be_nil
|
96
|
+
monkey.save
|
97
|
+
|
98
|
+
monkey.updated_by_id.should be_a_kind_of(Integer)
|
99
|
+
monkey.updated_by_id.should == User.current_user.id
|
100
|
+
|
101
|
+
original_updated_by_id = monkey.updated_by_id
|
102
|
+
|
103
|
+
User.current_user = @user2 = User.create(:name => 'Fred')
|
104
|
+
|
105
|
+
monkey.name = 'Roger'
|
106
|
+
monkey.save
|
107
|
+
monkey.updated_by_id.should == @user2.id
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dm-userstamp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Richard Livsey
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-
|
12
|
+
date: 2008-09-07 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -39,9 +39,9 @@ files:
|
|
39
39
|
- README.txt
|
40
40
|
- Rakefile
|
41
41
|
- TODO
|
42
|
-
- lib/dm-
|
43
|
-
- lib/dm-
|
44
|
-
- spec/integration/
|
42
|
+
- lib/dm-userstamp.rb
|
43
|
+
- lib/dm-userstamp/version.rb
|
44
|
+
- spec/integration/userstamp_spec.rb
|
45
45
|
- spec/spec.opts
|
46
46
|
- spec/spec_helper.rb
|
47
47
|
has_rdoc: true
|
@@ -1,112 +0,0 @@
|
|
1
|
-
require 'pathname'
|
2
|
-
require Pathname(__FILE__).dirname.expand_path.parent + 'spec_helper'
|
3
|
-
require 'pp'
|
4
|
-
|
5
|
-
return unless HAS_SQLITE3 || HAS_MYSQL || HAS_POSTGRES
|
6
|
-
|
7
|
-
describe 'DataMapper::Userstamp' do
|
8
|
-
before :all do
|
9
|
-
class User
|
10
|
-
include DataMapper::Resource
|
11
|
-
|
12
|
-
cattr_accessor :current_user
|
13
|
-
|
14
|
-
property :id, Integer, :serial => true
|
15
|
-
property :name, String
|
16
|
-
|
17
|
-
auto_migrate!(:default)
|
18
|
-
end
|
19
|
-
|
20
|
-
class Monkey
|
21
|
-
include DataMapper::Resource
|
22
|
-
|
23
|
-
property :id, Integer, :serial => true
|
24
|
-
property :name, String
|
25
|
-
property :created_by_id, Integer
|
26
|
-
property :updated_by_id, Integer
|
27
|
-
|
28
|
-
auto_migrate!(:default)
|
29
|
-
end
|
30
|
-
|
31
|
-
end
|
32
|
-
|
33
|
-
before :each do
|
34
|
-
@user = User.create(:name => 'Bob')
|
35
|
-
User.current_user = @user
|
36
|
-
end
|
37
|
-
|
38
|
-
after do
|
39
|
-
repository(:default).adapter.execute('DELETE from users');
|
40
|
-
repository(:default).adapter.execute('DELETE from monkeys');
|
41
|
-
end
|
42
|
-
|
43
|
-
it "should not set created_by_id if there is no current user" do
|
44
|
-
repository(:default) do
|
45
|
-
User.current_user = nil
|
46
|
-
monkey = Monkey.new(:name => 'Eric')
|
47
|
-
monkey.save
|
48
|
-
monkey.created_by_id.should be_nil
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
it "should not set updated_by_id if there is no current user" do
|
53
|
-
repository(:default) do
|
54
|
-
User.current_user = nil
|
55
|
-
monkey = Monkey.new(:name => 'Eric')
|
56
|
-
monkey.save
|
57
|
-
monkey.updated_by_id.should be_nil
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
it "should not set created_by_id if already set" do
|
62
|
-
repository(:default) do
|
63
|
-
monkey = Monkey.new(:name => 'Eric')
|
64
|
-
monkey.created_by_id = 5
|
65
|
-
monkey.save
|
66
|
-
monkey.created_by_id.should == 5
|
67
|
-
monkey.created_by_id.should be_a_kind_of(Integer)
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
it "should set created_by_id on creation" do
|
72
|
-
repository(:default) do
|
73
|
-
monkey = Monkey.new(:name => 'Clyde')
|
74
|
-
monkey.created_by_id.should be_nil
|
75
|
-
monkey.save
|
76
|
-
monkey.created_by_id.should be_a_kind_of(Integer)
|
77
|
-
monkey.created_by_id.should == User.current_user.id
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
it "should not alter created_by_id on model updates" do
|
82
|
-
repository(:default) do
|
83
|
-
monkey = Monkey.new(:name => 'Chump')
|
84
|
-
monkey.created_by_id.should be_nil
|
85
|
-
monkey.save
|
86
|
-
original_created_by_id = monkey.created_by_id
|
87
|
-
monkey.name = 'Wilma'
|
88
|
-
monkey.save
|
89
|
-
monkey.created_by_id.should eql(original_created_by_id)
|
90
|
-
end
|
91
|
-
end
|
92
|
-
|
93
|
-
it "should set updated_by_id on creation and on update" do
|
94
|
-
repository(:default) do
|
95
|
-
monkey = Monkey.new(:name => 'Johnny')
|
96
|
-
monkey.updated_by_id.should be_nil
|
97
|
-
monkey.save
|
98
|
-
|
99
|
-
monkey.updated_by_id.should be_a_kind_of(Integer)
|
100
|
-
monkey.updated_by_id.should == User.current_user.id
|
101
|
-
|
102
|
-
original_updated_by_id = monkey.updated_by_id
|
103
|
-
|
104
|
-
User.current_user = @user2 = User.create(:name => 'Fred')
|
105
|
-
|
106
|
-
monkey.name = 'Roger'
|
107
|
-
monkey.save
|
108
|
-
monkey.updated_by_id.should == @user2.id
|
109
|
-
end
|
110
|
-
end
|
111
|
-
|
112
|
-
end
|