originator 3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (52) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG +31 -0
  3. data/Gemfile +8 -0
  4. data/LICENSE +20 -0
  5. data/Rakefile +30 -0
  6. data/Readme.rdoc +162 -0
  7. data/VERSION +1 -0
  8. data/lib/migration_helper.rb +19 -0
  9. data/lib/stampable.rb +152 -0
  10. data/lib/stamper.rb +43 -0
  11. data/lib/userstamp.rb +52 -0
  12. data/originator.gemspec +84 -0
  13. data/rdoc/classes/Ddb/Controller.html +111 -0
  14. data/rdoc/classes/Ddb/Controller/Userstamp.html +125 -0
  15. data/rdoc/classes/Ddb/Controller/Userstamp/InstanceMethods.html +105 -0
  16. data/rdoc/classes/Ddb/Userstamp.html +121 -0
  17. data/rdoc/classes/Ddb/Userstamp/MigrationHelper.html +111 -0
  18. data/rdoc/classes/Ddb/Userstamp/MigrationHelper/InstanceMethods.html +142 -0
  19. data/rdoc/classes/Ddb/Userstamp/Stampable.html +128 -0
  20. data/rdoc/classes/Ddb/Userstamp/Stampable/ClassMethods.html +225 -0
  21. data/rdoc/classes/Ddb/Userstamp/Stamper.html +112 -0
  22. data/rdoc/classes/Ddb/Userstamp/Stamper/ClassMethods.html +142 -0
  23. data/rdoc/classes/Ddb/Userstamp/Stamper/InstanceMethods.html +207 -0
  24. data/rdoc/classes/Userstamp.html +118 -0
  25. data/rdoc/created.rid +1 -0
  26. data/rdoc/files/CHANGELOG.html +137 -0
  27. data/rdoc/files/LICENSE.html +129 -0
  28. data/rdoc/files/Readme_rdoc.html +301 -0
  29. data/rdoc/files/lib/migration_helper_rb.html +101 -0
  30. data/rdoc/files/lib/stampable_rb.html +101 -0
  31. data/rdoc/files/lib/stamper_rb.html +101 -0
  32. data/rdoc/files/lib/userstamp_rb.html +110 -0
  33. data/rdoc/fr_class_index.html +38 -0
  34. data/rdoc/fr_file_index.html +33 -0
  35. data/rdoc/fr_method_index.html +33 -0
  36. data/rdoc/index.html +24 -0
  37. data/rdoc/rdoc-style.css +208 -0
  38. data/test/compatibility_stamping_test.rb +69 -0
  39. data/test/controllers/posts_controller.rb +26 -0
  40. data/test/controllers/users_controller.rb +12 -0
  41. data/test/controllers/userstamp_controller.rb +9 -0
  42. data/test/helper.rb +61 -0
  43. data/test/models/comment.rb +5 -0
  44. data/test/models/foo.rb +3 -0
  45. data/test/models/person.rb +3 -0
  46. data/test/models/post.rb +13 -0
  47. data/test/models/user.rb +3 -0
  48. data/test/schema.rb +54 -0
  49. data/test/stamping_test.rb +138 -0
  50. data/test/userstamp_controller_test.rb +103 -0
  51. data/test/userstamp_test.rb +7 -0
  52. metadata +138 -0
@@ -0,0 +1,138 @@
1
+ require 'test/helper'
2
+
3
+ class StampingTests < Test::Unit::TestCase # :nodoc:
4
+ def setup
5
+ reset_to_defaults
6
+ User.stamper = @zeus
7
+ Person.stamper = @delynn
8
+ end
9
+
10
+ def test_person_creation_with_stamped_object
11
+ assert_equal @zeus.id, User.stamper
12
+
13
+ person = Person.create(:name => "David")
14
+ assert_equal @zeus.id, person.creator_id
15
+ assert_equal @zeus.id, person.updater_id
16
+ assert_equal @zeus, person.creator
17
+ assert_equal @zeus, person.updater
18
+ end
19
+
20
+ def test_person_creation_with_stamped_integer
21
+ User.stamper = @nicole.id
22
+ assert_equal @nicole.id, User.stamper
23
+
24
+ person = Person.create(:name => "Daniel")
25
+ assert_equal @hera.id, person.creator_id
26
+ assert_equal @hera.id, person.updater_id
27
+ assert_equal @hera, person.creator
28
+ assert_equal @hera, person.updater
29
+ end
30
+
31
+ def test_post_creation_with_stamped_object
32
+ assert_equal @delynn.id, Person.stamper
33
+
34
+ post = Post.create(:title => "Test Post - 1")
35
+ assert_equal @delynn.id, post.creator_id
36
+ assert_equal @delynn.id, post.updater_id
37
+ assert_equal @delynn, post.creator
38
+ assert_equal @delynn, post.updater
39
+ end
40
+
41
+ def test_post_creation_with_stamped_integer
42
+ Person.stamper = @nicole.id
43
+ assert_equal @nicole.id, Person.stamper
44
+
45
+ post = Post.create(:title => "Test Post - 2")
46
+ assert_equal @nicole.id, post.creator_id
47
+ assert_equal @nicole.id, post.updater_id
48
+ assert_equal @nicole, post.creator
49
+ assert_equal @nicole, post.updater
50
+ end
51
+
52
+ def test_person_updating_with_stamped_object
53
+ User.stamper = @hera
54
+ assert_equal @hera.id, User.stamper
55
+
56
+ @delynn.name << " Berry"
57
+ @delynn.save
58
+ @delynn.reload
59
+ assert_equal @zeus, @delynn.creator
60
+ assert_equal @hera, @delynn.updater
61
+ assert_equal @zeus.id, @delynn.creator_id
62
+ assert_equal @hera.id, @delynn.updater_id
63
+ end
64
+
65
+ def test_person_updating_with_stamped_integer
66
+ User.stamper = @hera.id
67
+ assert_equal @hera.id, User.stamper
68
+
69
+ @delynn.name << " Berry"
70
+ @delynn.save
71
+ @delynn.reload
72
+ assert_equal @zeus.id, @delynn.creator_id
73
+ assert_equal @hera.id, @delynn.updater_id
74
+ assert_equal @zeus, @delynn.creator
75
+ assert_equal @hera, @delynn.updater
76
+ end
77
+
78
+ def test_post_updating_with_stamped_object
79
+ Person.stamper = @nicole
80
+ assert_equal @nicole.id, Person.stamper
81
+
82
+ @first_post.title << " - Updated"
83
+ @first_post.save
84
+ @first_post.reload
85
+ assert_equal @delynn.id, @first_post.creator_id
86
+ assert_equal @nicole.id, @first_post.updater_id
87
+ assert_equal @delynn, @first_post.creator
88
+ assert_equal @nicole, @first_post.updater
89
+ end
90
+
91
+ def test_post_updating_with_stamped_integer
92
+ Person.stamper = @nicole.id
93
+ assert_equal @nicole.id, Person.stamper
94
+
95
+ @first_post.title << " - Updated"
96
+ @first_post.save
97
+ @first_post.reload
98
+ assert_equal @delynn.id, @first_post.creator_id
99
+ assert_equal @nicole.id, @first_post.updater_id
100
+ assert_equal @delynn, @first_post.creator
101
+ assert_equal @nicole, @first_post.updater
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
+
138
+ end
@@ -0,0 +1,103 @@
1
+ require 'test/helper'
2
+
3
+ class PostsControllerTest < ActionController::TestCase
4
+ def setup
5
+ reset_to_defaults
6
+ @controller = PostsController.new
7
+ @request = ActionController::TestRequest.new
8
+ @response = ActionController::TestResponse.new
9
+ end
10
+
11
+ def test_update_post
12
+ @request.session = {:person_id => @delynn.id}
13
+ post :update, :id => @first_post.id, :post => {:title => 'Different'}
14
+ assert_response :success
15
+ assert_equal 'Different', assigns["post"].title
16
+ assert_equal @delynn, assigns["post"].updater
17
+ end
18
+
19
+ def test_update_with_multiple_requests
20
+ @request.session = {:person_id => @delynn.id}
21
+ get :edit, :id => @first_post.id
22
+ assert_response :success
23
+
24
+ simulate_second_request
25
+
26
+ post :update, :id => @first_post.id, :post => {:title => 'Different'}
27
+ assert_response :success
28
+ assert_equal 'Different', assigns["post"].title
29
+ assert_equal @delynn, assigns["post"].updater
30
+ end
31
+
32
+ def simulate_second_request
33
+ @second_controller = PostsController.new
34
+ @second_request = ActionController::TestRequest.new
35
+ @second_response = ActionController::TestResponse.new
36
+ @second_response.session = {:person_id => @nicole.id}
37
+
38
+ @second_request.env['REQUEST_METHOD'] = "POST"
39
+ @second_request.action = 'update'
40
+
41
+ parameters = {:id => @first_post.id, :post => {:title => 'Different Second'}}
42
+ @second_request.assign_parameters(@second_controller.class.controller_path, 'update', parameters)
43
+ @second_request.session = ActionController::TestSession.new(@second_response.session)
44
+
45
+ options = @second_controller.send(:rewrite_options, parameters)
46
+ options.update(:only_path => true, :action => 'update')
47
+
48
+ url = ActionController::UrlRewriter.new(@second_request, parameters)
49
+ @second_request.set_REQUEST_URI(url.rewrite(options))
50
+ @second_controller.process(@second_request, @second_response)
51
+
52
+ assert_equal @nicole, @second_response.template.instance_variable_get("@post").updater
53
+ end
54
+ end
55
+
56
+ class UsersControllerTest < ActionController::TestCase
57
+ def setup
58
+ reset_to_defaults
59
+ @controller = UsersController.new
60
+ @request = ActionController::TestRequest.new
61
+ @response = ActionController::TestResponse.new
62
+ end
63
+
64
+ def test_update_user
65
+ @request.session = {:user_id => @hera.id}
66
+ post :update, :id => @hera.id, :user => {:name => 'Different'}
67
+ assert_response :success
68
+ assert_equal 'Different', assigns["user"].name
69
+ assert_equal @hera, assigns["user"].updater
70
+ end
71
+
72
+ def test_update_with_multiple_requests
73
+ @request.session = {:user_id => @hera.id}
74
+ get :edit, :id => @hera.id
75
+ assert_response :success
76
+
77
+ simulate_second_request
78
+ end
79
+
80
+ def simulate_second_request
81
+ @second_controller = UsersController.new
82
+ @second_request = ActionController::TestRequest.new
83
+ @second_response = ActionController::TestResponse.new
84
+ @second_response.session = {:user_id => @zeus.id}
85
+
86
+ @second_request.env['REQUEST_METHOD'] = "POST"
87
+ @second_request.action = 'update'
88
+
89
+ parameters = {:id => @hera.id, :user => {:name => 'Different Second'}}
90
+ @second_request.assign_parameters(@second_controller.class.controller_path, 'update', parameters)
91
+
92
+ @second_request.session = ActionController::TestSession.new(@second_response.session)
93
+
94
+ options = @second_controller.send(:rewrite_options, parameters)
95
+ options.update(:only_path => true, :action => 'update')
96
+
97
+ url = ActionController::UrlRewriter.new(@second_request, parameters)
98
+ @second_request.set_REQUEST_URI(url.rewrite(options))
99
+ @second_controller.process(@second_request, @second_response)
100
+
101
+ assert_equal @zeus, @second_response.template.instance_variable_get("@user").updater
102
+ end
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
metadata ADDED
@@ -0,0 +1,138 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: originator
3
+ version: !ruby/object:Gem::Version
4
+ version: '3.0'
5
+ platform: ruby
6
+ authors:
7
+ - DeLynn Berry
8
+ - Thomas von Deyen
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2017-08-17 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: actionpack
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ">="
19
+ - !ruby/object:Gem::Version
20
+ version: '4.0'
21
+ - - "<"
22
+ - !ruby/object:Gem::Version
23
+ version: '5.1'
24
+ type: :runtime
25
+ prerelease: false
26
+ version_requirements: !ruby/object:Gem::Requirement
27
+ requirements:
28
+ - - ">="
29
+ - !ruby/object:Gem::Version
30
+ version: '4.0'
31
+ - - "<"
32
+ - !ruby/object:Gem::Version
33
+ version: '5.1'
34
+ - !ruby/object:Gem::Dependency
35
+ name: activerecord
36
+ requirement: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '4.0'
41
+ - - "<"
42
+ - !ruby/object:Gem::Version
43
+ version: '5.1'
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: !ruby/object:Gem::Requirement
47
+ requirements:
48
+ - - ">="
49
+ - !ruby/object:Gem::Version
50
+ version: '4.0'
51
+ - - "<"
52
+ - !ruby/object:Gem::Version
53
+ version: '5.1'
54
+ description: This gem extends ActiveRecord::Base to add automatic updating of created_by
55
+ and updated_by attributes of your models in much the same way that the ActiveRecord::Timestamp
56
+ module updates created_(at/on) and updated_(at/on) attributes.
57
+ email:
58
+ - thomas@vondeyen.com
59
+ executables: []
60
+ extensions: []
61
+ extra_rdoc_files:
62
+ - LICENSE
63
+ files:
64
+ - CHANGELOG
65
+ - Gemfile
66
+ - LICENSE
67
+ - Rakefile
68
+ - Readme.rdoc
69
+ - VERSION
70
+ - lib/migration_helper.rb
71
+ - lib/stampable.rb
72
+ - lib/stamper.rb
73
+ - lib/userstamp.rb
74
+ - originator.gemspec
75
+ - rdoc/classes/Ddb/Controller.html
76
+ - rdoc/classes/Ddb/Controller/Userstamp.html
77
+ - rdoc/classes/Ddb/Controller/Userstamp/InstanceMethods.html
78
+ - rdoc/classes/Ddb/Userstamp.html
79
+ - rdoc/classes/Ddb/Userstamp/MigrationHelper.html
80
+ - rdoc/classes/Ddb/Userstamp/MigrationHelper/InstanceMethods.html
81
+ - rdoc/classes/Ddb/Userstamp/Stampable.html
82
+ - rdoc/classes/Ddb/Userstamp/Stampable/ClassMethods.html
83
+ - rdoc/classes/Ddb/Userstamp/Stamper.html
84
+ - rdoc/classes/Ddb/Userstamp/Stamper/ClassMethods.html
85
+ - rdoc/classes/Ddb/Userstamp/Stamper/InstanceMethods.html
86
+ - rdoc/classes/Userstamp.html
87
+ - rdoc/created.rid
88
+ - rdoc/files/CHANGELOG.html
89
+ - rdoc/files/LICENSE.html
90
+ - rdoc/files/Readme_rdoc.html
91
+ - rdoc/files/lib/migration_helper_rb.html
92
+ - rdoc/files/lib/stampable_rb.html
93
+ - rdoc/files/lib/stamper_rb.html
94
+ - rdoc/files/lib/userstamp_rb.html
95
+ - rdoc/fr_class_index.html
96
+ - rdoc/fr_file_index.html
97
+ - rdoc/fr_method_index.html
98
+ - rdoc/index.html
99
+ - rdoc/rdoc-style.css
100
+ - test/compatibility_stamping_test.rb
101
+ - test/controllers/posts_controller.rb
102
+ - test/controllers/users_controller.rb
103
+ - test/controllers/userstamp_controller.rb
104
+ - test/helper.rb
105
+ - test/models/comment.rb
106
+ - test/models/foo.rb
107
+ - test/models/person.rb
108
+ - test/models/post.rb
109
+ - test/models/user.rb
110
+ - test/schema.rb
111
+ - test/stamping_test.rb
112
+ - test/userstamp_controller_test.rb
113
+ - test/userstamp_test.rb
114
+ homepage: https://github.com/AlchemyCMS/originator
115
+ licenses:
116
+ - MIT
117
+ metadata: {}
118
+ post_install_message:
119
+ rdoc_options: []
120
+ require_paths:
121
+ - lib
122
+ required_ruby_version: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - ">="
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
127
+ required_rubygems_version: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ requirements: []
133
+ rubyforge_project:
134
+ rubygems_version: 2.6.11
135
+ signing_key:
136
+ specification_version: 3
137
+ summary: Adds originator attributes to your ActiveRecord models.
138
+ test_files: []