userstamp 2.0.0 → 2.0.1

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.
Files changed (41) hide show
  1. data/Gemfile +9 -0
  2. data/Gemfile.lock +35 -0
  3. data/Rakefile +2 -2
  4. data/{README → Readme.rdoc} +27 -35
  5. data/VERSION +1 -1
  6. data/lib/stampable.rb +18 -15
  7. data/lib/userstamp.rb +4 -0
  8. data/rdoc/classes/Ddb/Userstamp.html +4 -4
  9. data/rdoc/classes/Ddb/Userstamp/Stampable/ClassMethods.html +41 -38
  10. data/rdoc/classes/Ddb/Userstamp/Stamper/InstanceMethods.html +1 -1
  11. data/rdoc/classes/Userstamp.html +118 -0
  12. data/rdoc/created.rid +1 -1
  13. data/rdoc/files/CHANGELOG.html +1 -1
  14. data/rdoc/files/LICENSE.html +1 -1
  15. data/rdoc/files/{README.html → Readme_rdoc.html} +62 -61
  16. data/rdoc/files/lib/migration_helper_rb.html +1 -1
  17. data/rdoc/files/lib/stampable_rb.html +1 -1
  18. data/rdoc/files/lib/stamper_rb.html +1 -1
  19. data/rdoc/files/lib/userstamp_rb.html +10 -1
  20. data/rdoc/fr_class_index.html +1 -0
  21. data/rdoc/fr_file_index.html +1 -1
  22. data/rdoc/index.html +1 -1
  23. data/test/compatibility_stamping_test.rb +29 -23
  24. data/test/helper.rb +61 -0
  25. data/test/models/comment.rb +1 -0
  26. data/test/models/foo.rb +3 -0
  27. data/test/models/post.rb +10 -1
  28. data/test/schema.rb +6 -8
  29. data/test/stamping_test.rb +45 -17
  30. data/test/userstamp_controller_test.rb +24 -39
  31. data/test/userstamp_test.rb +7 -0
  32. data/userstamp.gemspec +21 -24
  33. metadata +28 -24
  34. data/test/database.yml +0 -4
  35. data/test/fixtures/comments.yml +0 -16
  36. data/test/fixtures/people.yml +0 -11
  37. data/test/fixtures/posts.yml +0 -9
  38. data/test/fixtures/users.yml +0 -7
  39. data/test/helpers/functional_test_helper.rb +0 -37
  40. data/test/helpers/unit_test_helper.rb +0 -29
  41. data/test/models/ping.rb +0 -7
@@ -1,3 +1,4 @@
1
+ # this class is only meant for compatability mode testing
1
2
  class Comment < ActiveRecord::Base
2
3
  stampable :stamper_class_name => :person
3
4
  belongs_to :post
@@ -0,0 +1,3 @@
1
+ class Foo < ActiveRecord::Base
2
+ stampable :deleter_attribute => :deleter_id
3
+ end
@@ -1,4 +1,13 @@
1
1
  class Post < ActiveRecord::Base
2
- stampable :stamper_class_name => :person
2
+ stampable :stamper_class_name => :person, :deleter => true
3
3
  has_many :comments
4
+
5
+ # override destroy to get soft delete like acts_as_paranoid style delete
6
+ # Note: delete_all (used in helper) bypasses this and deletes all rows.
7
+ def destroy
8
+ return false if callback(:before_destroy) == false
9
+ self.deleted_at = DateTime.now
10
+ callback(:after_destroy)
11
+ end
12
+
4
13
  end
@@ -41,16 +41,14 @@ ActiveRecord::Schema.define(:version => 0) do
41
41
  t.column :deleted_at, :datetime
42
42
  end
43
43
 
44
- # Pings are created and updated by People,
45
- # but they store their foreign keys as strings.
46
- create_table :pings, :force => true do |t|
47
- t.column :post_id, :integer
48
- t.column :ping, :string
49
- t.column :creator_name, :string
44
+ # only used to test :stampable args
45
+ create_table :foos, :force => true do |t|
46
+ t.column :created_by, :integer
50
47
  t.column :created_at, :datetime
51
- t.column :updater_name, :string
48
+ t.column :updated_by, :integer
52
49
  t.column :updated_at, :datetime
53
- t.column :deleter_name, :string
50
+ t.column :deleted_by, :integer
54
51
  t.column :deleted_at, :datetime
55
52
  end
53
+
56
54
  end
@@ -1,15 +1,8 @@
1
- $:.unshift(File.dirname(__FILE__))
2
-
3
- require 'helpers/unit_test_helper'
4
- require 'models/user'
5
- require 'models/person'
6
- require 'models/post'
7
- require 'models/comment'
1
+ require 'test/helper'
8
2
 
9
3
  class StampingTests < Test::Unit::TestCase # :nodoc:
10
- fixtures :users, :people, :posts, :comments
11
-
12
4
  def setup
5
+ reset_to_defaults
13
6
  User.stamper = @zeus
14
7
  Person.stamper = @delynn
15
8
  end
@@ -25,8 +18,8 @@ class StampingTests < Test::Unit::TestCase # :nodoc:
25
18
  end
26
19
 
27
20
  def test_person_creation_with_stamped_integer
28
- User.stamper = 2
29
- assert_equal 2, User.stamper
21
+ User.stamper = @nicole.id
22
+ assert_equal @nicole.id, User.stamper
30
23
 
31
24
  person = Person.create(:name => "Daniel")
32
25
  assert_equal @hera.id, person.creator_id
@@ -46,8 +39,8 @@ class StampingTests < Test::Unit::TestCase # :nodoc:
46
39
  end
47
40
 
48
41
  def test_post_creation_with_stamped_integer
49
- Person.stamper = 2
50
- assert_equal 2, Person.stamper
42
+ Person.stamper = @nicole.id
43
+ assert_equal @nicole.id, Person.stamper
51
44
 
52
45
  post = Post.create(:title => "Test Post - 2")
53
46
  assert_equal @nicole.id, post.creator_id
@@ -70,8 +63,8 @@ class StampingTests < Test::Unit::TestCase # :nodoc:
70
63
  end
71
64
 
72
65
  def test_person_updating_with_stamped_integer
73
- User.stamper = 2
74
- assert_equal 2, User.stamper
66
+ User.stamper = @hera.id
67
+ assert_equal @hera.id, User.stamper
75
68
 
76
69
  @delynn.name << " Berry"
77
70
  @delynn.save
@@ -96,8 +89,8 @@ class StampingTests < Test::Unit::TestCase # :nodoc:
96
89
  end
97
90
 
98
91
  def test_post_updating_with_stamped_integer
99
- Person.stamper = 2
100
- assert_equal 2, Person.stamper
92
+ Person.stamper = @nicole.id
93
+ assert_equal @nicole.id, Person.stamper
101
94
 
102
95
  @first_post.title << " - Updated"
103
96
  @first_post.save
@@ -107,4 +100,39 @@ class StampingTests < Test::Unit::TestCase # :nodoc:
107
100
  assert_equal @delynn, @first_post.creator
108
101
  assert_equal @nicole, @first_post.updater
109
102
  end
103
+
104
+ def test_delete_post_sets_deleter_id
105
+ assert_equal nil, @first_post.deleted_at
106
+
107
+ Person.stamper = @nicole.id
108
+ assert_equal @nicole.id, Person.stamper
109
+
110
+ @first_post.destroy
111
+ @first_post.save
112
+ @first_post.reload
113
+
114
+ assert_not_equal nil, @first_post.deleted_at
115
+ assert_equal @nicole.id, @first_post.deleter_id
116
+ end
117
+
118
+ def test_deleter_not_present_did_not_create_deleter_relation
119
+ @comment = Comment.create
120
+ assert_equal true, @comment.respond_to?('creator')
121
+ assert_equal true, @comment.respond_to?('updater')
122
+ assert_equal false, @comment.respond_to?('deleter')
123
+ end
124
+
125
+ def test_deleter_true_created_deleter_relation
126
+ assert_equal true, @first_post.respond_to?('creator')
127
+ assert_equal true, @first_post.respond_to?('updater')
128
+ assert_equal true, @first_post.respond_to?('deleter')
129
+ end
130
+
131
+ def test_deleter_attribute_set_created_deleter_relation
132
+ @foo = Foo.create
133
+ assert_equal true, @foo.respond_to?('creator')
134
+ assert_equal true, @foo.respond_to?('updater')
135
+ assert_equal true, @foo.respond_to?('deleter')
136
+ end
137
+
110
138
  end
@@ -1,43 +1,29 @@
1
- $:.unshift(File.dirname(__FILE__))
2
-
3
- require 'helpers/functional_test_helper'
4
- require 'controllers/userstamp_controller'
5
- require 'controllers/users_controller'
6
- require 'controllers/posts_controller'
7
- require 'models/user'
8
- require 'models/person'
9
- require 'models/post'
10
- require 'models/comment'
11
-
12
- ActionController::Routing::Routes.draw do |map|
13
- map.connect ':controller/:action/:id'
14
- end
15
-
16
- class PostsControllerTest < Test::Unit::TestCase
17
- fixtures :users, :people, :posts, :comments
1
+ require 'test/helper'
18
2
 
3
+ class PostsControllerTest < ActionController::TestCase
19
4
  def setup
5
+ reset_to_defaults
20
6
  @controller = PostsController.new
21
7
  @request = ActionController::TestRequest.new
22
8
  @response = ActionController::TestResponse.new
23
9
  end
24
10
 
25
11
  def test_update_post
26
- @request.session = {:person_id => 1}
27
- post :update, :id => 1, :post => {:title => 'Different'}
12
+ @request.session = {:person_id => @delynn.id}
13
+ post :update, :id => @first_post.id, :post => {:title => 'Different'}
28
14
  assert_response :success
29
- assert_equal 'Different', assigns["post"].title
30
- assert_equal @delynn, assigns["post"].updater
15
+ assert_equal 'Different', assigns["post"].title
16
+ assert_equal @delynn, assigns["post"].updater
31
17
  end
32
18
 
33
19
  def test_update_with_multiple_requests
34
- @request.session = {:person_id => 1}
35
- get :edit, :id => 2
20
+ @request.session = {:person_id => @delynn.id}
21
+ get :edit, :id => @first_post.id
36
22
  assert_response :success
37
23
 
38
24
  simulate_second_request
39
25
 
40
- post :update, :id => 2, :post => {:title => 'Different'}
26
+ post :update, :id => @first_post.id, :post => {:title => 'Different'}
41
27
  assert_response :success
42
28
  assert_equal 'Different', assigns["post"].title
43
29
  assert_equal @delynn, assigns["post"].updater
@@ -47,46 +33,45 @@ class PostsControllerTest < Test::Unit::TestCase
47
33
  @second_controller = PostsController.new
48
34
  @second_request = ActionController::TestRequest.new
49
35
  @second_response = ActionController::TestResponse.new
50
- @second_response.session = {:person_id => 2}
36
+ @second_response.session = {:person_id => @nicole.id}
51
37
 
52
38
  @second_request.env['REQUEST_METHOD'] = "POST"
53
39
  @second_request.action = 'update'
54
40
 
55
- parameters = {:id => 1, :post => {:title => 'Different Second'}}
41
+ parameters = {:id => @first_post.id, :post => {:title => 'Different Second'}}
56
42
  @second_request.assign_parameters(@second_controller.class.controller_path, 'update', parameters)
57
43
  @second_request.session = ActionController::TestSession.new(@second_response.session)
58
44
 
59
- options = @second_controller.send!(:rewrite_options, parameters)
45
+ options = @second_controller.send(:rewrite_options, parameters)
60
46
  options.update(:only_path => true, :action => 'update')
61
47
 
62
48
  url = ActionController::UrlRewriter.new(@second_request, parameters)
63
49
  @second_request.set_REQUEST_URI(url.rewrite(options))
64
50
  @second_controller.process(@second_request, @second_response)
65
51
 
66
- assert_equal @nicole, @second_response.template.instance_variable_get("@post").updater
52
+ assert_equal @nicole, @second_response.template.instance_variable_get("@post").updater
67
53
  end
68
54
  end
69
55
 
70
- class UsersControllerTest < Test::Unit::TestCase
71
- fixtures :users, :people, :posts, :comments
72
-
56
+ class UsersControllerTest < ActionController::TestCase
73
57
  def setup
58
+ reset_to_defaults
74
59
  @controller = UsersController.new
75
60
  @request = ActionController::TestRequest.new
76
61
  @response = ActionController::TestResponse.new
77
62
  end
78
63
 
79
64
  def test_update_user
80
- @request.session = {:user_id => 2}
81
- post :update, :id => 2, :user => {:name => 'Different'}
65
+ @request.session = {:user_id => @hera.id}
66
+ post :update, :id => @hera.id, :user => {:name => 'Different'}
82
67
  assert_response :success
83
68
  assert_equal 'Different', assigns["user"].name
84
69
  assert_equal @hera, assigns["user"].updater
85
70
  end
86
71
 
87
72
  def test_update_with_multiple_requests
88
- @request.session = {:user_id => 2}
89
- get :edit, :id => 2
73
+ @request.session = {:user_id => @hera.id}
74
+ get :edit, :id => @hera.id
90
75
  assert_response :success
91
76
 
92
77
  simulate_second_request
@@ -96,23 +81,23 @@ class UsersControllerTest < Test::Unit::TestCase
96
81
  @second_controller = UsersController.new
97
82
  @second_request = ActionController::TestRequest.new
98
83
  @second_response = ActionController::TestResponse.new
99
- @second_response.session = {:user_id => 1}
84
+ @second_response.session = {:user_id => @zeus.id}
100
85
 
101
86
  @second_request.env['REQUEST_METHOD'] = "POST"
102
87
  @second_request.action = 'update'
103
88
 
104
- parameters = {:id => 2, :user => {:name => 'Different Second'}}
89
+ parameters = {:id => @hera.id, :user => {:name => 'Different Second'}}
105
90
  @second_request.assign_parameters(@second_controller.class.controller_path, 'update', parameters)
106
91
 
107
92
  @second_request.session = ActionController::TestSession.new(@second_response.session)
108
93
 
109
- options = @second_controller.send!(:rewrite_options, parameters)
94
+ options = @second_controller.send(:rewrite_options, parameters)
110
95
  options.update(:only_path => true, :action => 'update')
111
96
 
112
97
  url = ActionController::UrlRewriter.new(@second_request, parameters)
113
98
  @second_request.set_REQUEST_URI(url.rewrite(options))
114
99
  @second_controller.process(@second_request, @second_response)
115
100
 
116
- assert_equal @zeus, @second_response.template.instance_variable_get("@user").updater
101
+ assert_equal @zeus, @second_response.template.instance_variable_get("@user").updater
117
102
  end
118
103
  end
@@ -0,0 +1,7 @@
1
+ require 'test/helper'
2
+
3
+ class UserstampTests < ActiveSupport::TestCase
4
+ test "it has a VERSION" do
5
+ assert_match /^\d+\.\d+\.\d+$/, Userstamp::VERSION
6
+ end
7
+ end
@@ -5,22 +5,23 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{userstamp}
8
- s.version = "2.0.0"
8
+ s.version = "2.0.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["DeLynn Berry"]
12
- s.date = %q{2009-11-18}
12
+ s.date = %q{2010-08-09}
13
13
  s.email = %q{delynn@gmail.com}
14
14
  s.extra_rdoc_files = [
15
- "LICENSE",
16
- "README"
15
+ "LICENSE"
17
16
  ]
18
17
  s.files = [
19
18
  ".gitignore",
20
19
  "CHANGELOG",
20
+ "Gemfile",
21
+ "Gemfile.lock",
21
22
  "LICENSE",
22
- "README",
23
23
  "Rakefile",
24
+ "Readme.rdoc",
24
25
  "VERSION",
25
26
  "init.rb",
26
27
  "lib/migration_helper.rb",
@@ -38,10 +39,11 @@ Gem::Specification.new do |s|
38
39
  "rdoc/classes/Ddb/Userstamp/Stamper.html",
39
40
  "rdoc/classes/Ddb/Userstamp/Stamper/ClassMethods.html",
40
41
  "rdoc/classes/Ddb/Userstamp/Stamper/InstanceMethods.html",
42
+ "rdoc/classes/Userstamp.html",
41
43
  "rdoc/created.rid",
42
44
  "rdoc/files/CHANGELOG.html",
43
45
  "rdoc/files/LICENSE.html",
44
- "rdoc/files/README.html",
46
+ "rdoc/files/Readme_rdoc.html",
45
47
  "rdoc/files/lib/migration_helper_rb.html",
46
48
  "rdoc/files/lib/stampable_rb.html",
47
49
  "rdoc/files/lib/stamper_rb.html",
@@ -55,42 +57,37 @@ Gem::Specification.new do |s|
55
57
  "test/controllers/posts_controller.rb",
56
58
  "test/controllers/users_controller.rb",
57
59
  "test/controllers/userstamp_controller.rb",
58
- "test/database.yml",
59
- "test/fixtures/comments.yml",
60
- "test/fixtures/people.yml",
61
- "test/fixtures/posts.yml",
62
- "test/fixtures/users.yml",
63
- "test/helpers/functional_test_helper.rb",
64
- "test/helpers/unit_test_helper.rb",
60
+ "test/helper.rb",
65
61
  "test/models/comment.rb",
62
+ "test/models/foo.rb",
66
63
  "test/models/person.rb",
67
- "test/models/ping.rb",
68
64
  "test/models/post.rb",
69
65
  "test/models/user.rb",
70
66
  "test/schema.rb",
71
67
  "test/stamping_test.rb",
72
68
  "test/userstamp_controller_test.rb",
69
+ "test/userstamp_test.rb",
73
70
  "userstamp.gemspec"
74
71
  ]
75
72
  s.homepage = %q{http://github.com/delynn/userstamp}
76
73
  s.rdoc_options = ["--charset=UTF-8"]
77
74
  s.require_paths = ["lib"]
78
- s.rubygems_version = %q{1.3.5}
75
+ s.rubygems_version = %q{1.3.6}
79
76
  s.summary = %q{This Rails plugin extends ActiveRecord::Base to add automatic updating of created_by and updated_by attributes of your models in much the same way that the ActiveRecord::Timestamp module updates created_(at/on) and updated_(at/on) attributes.}
80
77
  s.test_files = [
81
- "test/helpers/unit_test_helper.rb",
82
- "test/helpers/functional_test_helper.rb",
83
- "test/schema.rb",
84
- "test/userstamp_controller_test.rb",
85
- "test/compatibility_stamping_test.rb",
78
+ "test/schema.rb",
86
79
  "test/controllers/userstamp_controller.rb",
87
- "test/controllers/posts_controller.rb",
88
80
  "test/controllers/users_controller.rb",
89
- "test/models/ping.rb",
90
- "test/models/person.rb",
91
- "test/models/user.rb",
81
+ "test/controllers/posts_controller.rb",
82
+ "test/compatibility_stamping_test.rb",
83
+ "test/helper.rb",
92
84
  "test/models/post.rb",
85
+ "test/models/foo.rb",
93
86
  "test/models/comment.rb",
87
+ "test/models/person.rb",
88
+ "test/models/user.rb",
89
+ "test/userstamp_controller_test.rb",
90
+ "test/userstamp_test.rb",
94
91
  "test/stamping_test.rb"
95
92
  ]
96
93
 
metadata CHANGED
@@ -1,7 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: userstamp
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ prerelease: false
5
+ segments:
6
+ - 2
7
+ - 0
8
+ - 1
9
+ version: 2.0.1
5
10
  platform: ruby
6
11
  authors:
7
12
  - DeLynn Berry
@@ -9,7 +14,7 @@ autorequire:
9
14
  bindir: bin
10
15
  cert_chain: []
11
16
 
12
- date: 2009-11-18 00:00:00 +01:00
17
+ date: 2010-08-09 00:00:00 +02:00
13
18
  default_executable:
14
19
  dependencies: []
15
20
 
@@ -21,13 +26,14 @@ extensions: []
21
26
 
22
27
  extra_rdoc_files:
23
28
  - LICENSE
24
- - README
25
29
  files:
26
30
  - .gitignore
27
31
  - CHANGELOG
32
+ - Gemfile
33
+ - Gemfile.lock
28
34
  - LICENSE
29
- - README
30
35
  - Rakefile
36
+ - Readme.rdoc
31
37
  - VERSION
32
38
  - init.rb
33
39
  - lib/migration_helper.rb
@@ -45,10 +51,11 @@ files:
45
51
  - rdoc/classes/Ddb/Userstamp/Stamper.html
46
52
  - rdoc/classes/Ddb/Userstamp/Stamper/ClassMethods.html
47
53
  - rdoc/classes/Ddb/Userstamp/Stamper/InstanceMethods.html
54
+ - rdoc/classes/Userstamp.html
48
55
  - rdoc/created.rid
49
56
  - rdoc/files/CHANGELOG.html
50
57
  - rdoc/files/LICENSE.html
51
- - rdoc/files/README.html
58
+ - rdoc/files/Readme_rdoc.html
52
59
  - rdoc/files/lib/migration_helper_rb.html
53
60
  - rdoc/files/lib/stampable_rb.html
54
61
  - rdoc/files/lib/stamper_rb.html
@@ -62,21 +69,16 @@ files:
62
69
  - test/controllers/posts_controller.rb
63
70
  - test/controllers/users_controller.rb
64
71
  - test/controllers/userstamp_controller.rb
65
- - test/database.yml
66
- - test/fixtures/comments.yml
67
- - test/fixtures/people.yml
68
- - test/fixtures/posts.yml
69
- - test/fixtures/users.yml
70
- - test/helpers/functional_test_helper.rb
71
- - test/helpers/unit_test_helper.rb
72
+ - test/helper.rb
72
73
  - test/models/comment.rb
74
+ - test/models/foo.rb
73
75
  - test/models/person.rb
74
- - test/models/ping.rb
75
76
  - test/models/post.rb
76
77
  - test/models/user.rb
77
78
  - test/schema.rb
78
79
  - test/stamping_test.rb
79
80
  - test/userstamp_controller_test.rb
81
+ - test/userstamp_test.rb
80
82
  - userstamp.gemspec
81
83
  has_rdoc: true
82
84
  homepage: http://github.com/delynn/userstamp
@@ -91,33 +93,35 @@ required_ruby_version: !ruby/object:Gem::Requirement
91
93
  requirements:
92
94
  - - ">="
93
95
  - !ruby/object:Gem::Version
96
+ segments:
97
+ - 0
94
98
  version: "0"
95
- version:
96
99
  required_rubygems_version: !ruby/object:Gem::Requirement
97
100
  requirements:
98
101
  - - ">="
99
102
  - !ruby/object:Gem::Version
103
+ segments:
104
+ - 0
100
105
  version: "0"
101
- version:
102
106
  requirements: []
103
107
 
104
108
  rubyforge_project:
105
- rubygems_version: 1.3.5
109
+ rubygems_version: 1.3.6
106
110
  signing_key:
107
111
  specification_version: 3
108
112
  summary: This Rails plugin extends ActiveRecord::Base to add automatic updating of created_by and updated_by attributes of your models in much the same way that the ActiveRecord::Timestamp module updates created_(at/on) and updated_(at/on) attributes.
109
113
  test_files:
110
- - test/helpers/unit_test_helper.rb
111
- - test/helpers/functional_test_helper.rb
112
114
  - test/schema.rb
113
- - test/userstamp_controller_test.rb
114
- - test/compatibility_stamping_test.rb
115
115
  - test/controllers/userstamp_controller.rb
116
- - test/controllers/posts_controller.rb
117
116
  - test/controllers/users_controller.rb
118
- - test/models/ping.rb
119
- - test/models/person.rb
120
- - test/models/user.rb
117
+ - test/controllers/posts_controller.rb
118
+ - test/compatibility_stamping_test.rb
119
+ - test/helper.rb
121
120
  - test/models/post.rb
121
+ - test/models/foo.rb
122
122
  - test/models/comment.rb
123
+ - test/models/person.rb
124
+ - test/models/user.rb
125
+ - test/userstamp_controller_test.rb
126
+ - test/userstamp_test.rb
123
127
  - test/stamping_test.rb