userstamp 2.0.0 → 2.0.1

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