activerecord-userstamp 3.0.2 → 3.0.3

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 (72) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +5 -5
  3. data/.rspec +2 -2
  4. data/CHANGELOG.md +103 -99
  5. data/Gemfile +3 -3
  6. data/LICENSE +21 -21
  7. data/README.md +189 -189
  8. data/Rakefile +17 -17
  9. data/activerecord-userstamp.gemspec +34 -34
  10. data/lib/active_record/userstamp.rb +30 -30
  11. data/lib/active_record/userstamp/configuration.rb +49 -49
  12. data/lib/active_record/userstamp/controller_additions.rb +50 -50
  13. data/lib/active_record/userstamp/migration_additions.rb +14 -14
  14. data/lib/active_record/userstamp/model_additions.rb +10 -10
  15. data/lib/active_record/userstamp/stampable.rb +123 -123
  16. data/lib/active_record/userstamp/stamper.rb +54 -54
  17. data/lib/active_record/userstamp/utilities.rb +55 -54
  18. data/lib/active_record/userstamp/version.rb +4 -4
  19. data/lib/activerecord/userstamp.rb +1 -1
  20. data/spec/controllers/posts_controller_spec.rb +44 -44
  21. data/spec/controllers/users_controller_spec.rb +50 -50
  22. data/spec/dummy/README.rdoc +28 -28
  23. data/spec/dummy/Rakefile +6 -6
  24. data/spec/dummy/app/assets/javascripts/application.js +13 -13
  25. data/spec/dummy/app/assets/stylesheets/application.css +15 -15
  26. data/spec/dummy/app/controllers/application_controller.rb +13 -13
  27. data/spec/dummy/app/controllers/posts_controller.rb +36 -36
  28. data/spec/dummy/app/controllers/users_controller.rb +22 -22
  29. data/spec/dummy/app/helpers/application_helper.rb +2 -2
  30. data/spec/dummy/app/models/comment.rb +5 -5
  31. data/spec/dummy/app/models/person.rb +3 -3
  32. data/spec/dummy/app/models/post.rb +14 -14
  33. data/spec/dummy/app/models/tag.rb +3 -0
  34. data/spec/dummy/app/models/user.rb +3 -3
  35. data/spec/dummy/app/views/layouts/application.html.erb +14 -14
  36. data/spec/dummy/bin/bundle +3 -3
  37. data/spec/dummy/bin/rails +4 -4
  38. data/spec/dummy/bin/rake +4 -4
  39. data/spec/dummy/bin/setup +29 -29
  40. data/spec/dummy/config.ru +4 -4
  41. data/spec/dummy/config/application.rb +30 -30
  42. data/spec/dummy/config/boot.rb +5 -5
  43. data/spec/dummy/config/database.yml +23 -23
  44. data/spec/dummy/config/environment.rb +5 -5
  45. data/spec/dummy/config/environments/development.rb +41 -41
  46. data/spec/dummy/config/environments/production.rb +79 -79
  47. data/spec/dummy/config/environments/test.rb +37 -37
  48. data/spec/dummy/config/initializers/assets.rb +11 -11
  49. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -7
  50. data/spec/dummy/config/initializers/cookies_serializer.rb +3 -3
  51. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -4
  52. data/spec/dummy/config/initializers/inflections.rb +16 -16
  53. data/spec/dummy/config/initializers/mime_types.rb +4 -4
  54. data/spec/dummy/config/initializers/session_store.rb +3 -3
  55. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -14
  56. data/spec/dummy/config/locales/en.yml +23 -23
  57. data/spec/dummy/config/routes.rb +56 -56
  58. data/spec/dummy/config/secrets.yml +22 -22
  59. data/spec/dummy/db/schema.rb +54 -45
  60. data/spec/dummy/public/404.html +67 -67
  61. data/spec/dummy/public/422.html +67 -67
  62. data/spec/dummy/public/500.html +66 -66
  63. data/spec/lib/configuration_spec.rb +20 -20
  64. data/spec/lib/migration_spec.rb +71 -71
  65. data/spec/lib/stamper_spec.rb +66 -66
  66. data/spec/lib/stamping_spec.rb +250 -238
  67. data/spec/lib/userstamp_spec.rb +7 -7
  68. data/spec/rails_helper.rb +7 -7
  69. data/spec/spec_helper.rb +97 -97
  70. data/spec/support/database_helpers.rb +22 -22
  71. data/spec/support/with_temporary_table.rb +51 -51
  72. metadata +3 -2
@@ -1,67 +1,67 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <title>The change you wanted was rejected (422)</title>
5
- <meta name="viewport" content="width=device-width,initial-scale=1">
6
- <style>
7
- body {
8
- background-color: #EFEFEF;
9
- color: #2E2F30;
10
- text-align: center;
11
- font-family: arial, sans-serif;
12
- margin: 0;
13
- }
14
-
15
- div.dialog {
16
- width: 95%;
17
- max-width: 33em;
18
- margin: 4em auto 0;
19
- }
20
-
21
- div.dialog > div {
22
- border: 1px solid #CCC;
23
- border-right-color: #999;
24
- border-left-color: #999;
25
- border-bottom-color: #BBB;
26
- border-top: #B00100 solid 4px;
27
- border-top-left-radius: 9px;
28
- border-top-right-radius: 9px;
29
- background-color: white;
30
- padding: 7px 12% 0;
31
- box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
- }
33
-
34
- h1 {
35
- font-size: 100%;
36
- color: #730E15;
37
- line-height: 1.5em;
38
- }
39
-
40
- div.dialog > p {
41
- margin: 0 0 1em;
42
- padding: 1em;
43
- background-color: #F7F7F7;
44
- border: 1px solid #CCC;
45
- border-right-color: #999;
46
- border-left-color: #999;
47
- border-bottom-color: #999;
48
- border-bottom-left-radius: 4px;
49
- border-bottom-right-radius: 4px;
50
- border-top-color: #DADADA;
51
- color: #666;
52
- box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
- }
54
- </style>
55
- </head>
56
-
57
- <body>
58
- <!-- This file lives in public/422.html -->
59
- <div class="dialog">
60
- <div>
61
- <h1>The change you wanted was rejected.</h1>
62
- <p>Maybe you tried to change something you didn't have access to.</p>
63
- </div>
64
- <p>If you are the application owner check the logs for more information.</p>
65
- </div>
66
- </body>
67
- </html>
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The change you wanted was rejected (422)</title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <style>
7
+ body {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ div.dialog > div {
22
+ border: 1px solid #CCC;
23
+ border-right-color: #999;
24
+ border-left-color: #999;
25
+ border-bottom-color: #BBB;
26
+ border-top: #B00100 solid 4px;
27
+ border-top-left-radius: 9px;
28
+ border-top-right-radius: 9px;
29
+ background-color: white;
30
+ padding: 7px 12% 0;
31
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
+ }
33
+
34
+ h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ div.dialog > p {
41
+ margin: 0 0 1em;
42
+ padding: 1em;
43
+ background-color: #F7F7F7;
44
+ border: 1px solid #CCC;
45
+ border-right-color: #999;
46
+ border-left-color: #999;
47
+ border-bottom-color: #999;
48
+ border-bottom-left-radius: 4px;
49
+ border-bottom-right-radius: 4px;
50
+ border-top-color: #DADADA;
51
+ color: #666;
52
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
+ }
54
+ </style>
55
+ </head>
56
+
57
+ <body>
58
+ <!-- This file lives in public/422.html -->
59
+ <div class="dialog">
60
+ <div>
61
+ <h1>The change you wanted was rejected.</h1>
62
+ <p>Maybe you tried to change something you didn't have access to.</p>
63
+ </div>
64
+ <p>If you are the application owner check the logs for more information.</p>
65
+ </div>
66
+ </body>
67
+ </html>
@@ -1,66 +1,66 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <title>We're sorry, but something went wrong (500)</title>
5
- <meta name="viewport" content="width=device-width,initial-scale=1">
6
- <style>
7
- body {
8
- background-color: #EFEFEF;
9
- color: #2E2F30;
10
- text-align: center;
11
- font-family: arial, sans-serif;
12
- margin: 0;
13
- }
14
-
15
- div.dialog {
16
- width: 95%;
17
- max-width: 33em;
18
- margin: 4em auto 0;
19
- }
20
-
21
- div.dialog > div {
22
- border: 1px solid #CCC;
23
- border-right-color: #999;
24
- border-left-color: #999;
25
- border-bottom-color: #BBB;
26
- border-top: #B00100 solid 4px;
27
- border-top-left-radius: 9px;
28
- border-top-right-radius: 9px;
29
- background-color: white;
30
- padding: 7px 12% 0;
31
- box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
- }
33
-
34
- h1 {
35
- font-size: 100%;
36
- color: #730E15;
37
- line-height: 1.5em;
38
- }
39
-
40
- div.dialog > p {
41
- margin: 0 0 1em;
42
- padding: 1em;
43
- background-color: #F7F7F7;
44
- border: 1px solid #CCC;
45
- border-right-color: #999;
46
- border-left-color: #999;
47
- border-bottom-color: #999;
48
- border-bottom-left-radius: 4px;
49
- border-bottom-right-radius: 4px;
50
- border-top-color: #DADADA;
51
- color: #666;
52
- box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
- }
54
- </style>
55
- </head>
56
-
57
- <body>
58
- <!-- This file lives in public/500.html -->
59
- <div class="dialog">
60
- <div>
61
- <h1>We're sorry, but something went wrong.</h1>
62
- </div>
63
- <p>If you are the application owner check the logs for more information.</p>
64
- </div>
65
- </body>
66
- </html>
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>We're sorry, but something went wrong (500)</title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <style>
7
+ body {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ div.dialog > div {
22
+ border: 1px solid #CCC;
23
+ border-right-color: #999;
24
+ border-left-color: #999;
25
+ border-bottom-color: #BBB;
26
+ border-top: #B00100 solid 4px;
27
+ border-top-left-radius: 9px;
28
+ border-top-right-radius: 9px;
29
+ background-color: white;
30
+ padding: 7px 12% 0;
31
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
+ }
33
+
34
+ h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ div.dialog > p {
41
+ margin: 0 0 1em;
42
+ padding: 1em;
43
+ background-color: #F7F7F7;
44
+ border: 1px solid #CCC;
45
+ border-right-color: #999;
46
+ border-left-color: #999;
47
+ border-bottom-color: #999;
48
+ border-bottom-left-radius: 4px;
49
+ border-bottom-right-radius: 4px;
50
+ border-top-color: #DADADA;
51
+ color: #666;
52
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
+ }
54
+ </style>
55
+ </head>
56
+
57
+ <body>
58
+ <!-- This file lives in public/500.html -->
59
+ <div class="dialog">
60
+ <div>
61
+ <h1>We're sorry, but something went wrong.</h1>
62
+ </div>
63
+ <p>If you are the application owner check the logs for more information.</p>
64
+ </div>
65
+ </body>
66
+ </html>
@@ -1,20 +1,20 @@
1
- require 'rails_helper'
2
-
3
- RSpec.describe 'Configuration' do
4
- describe '.configure' do
5
- it 'yields a block with the config argument' do
6
- block = nil
7
- ActiveRecord::Userstamp.configure do |config|
8
- block = config
9
- end
10
- expect(block).to be(ActiveRecord::Userstamp::Configuration)
11
- end
12
- end
13
-
14
- describe '.config' do
15
- it 'matches default_stamper and default_stamper_class' do
16
- config = ActiveRecord::Userstamp.config
17
- expect(config.default_stamper_class.name).to eq(config.default_stamper)
18
- end
19
- end
20
- end
1
+ require 'rails_helper'
2
+
3
+ RSpec.describe 'Configuration' do
4
+ describe '.configure' do
5
+ it 'yields a block with the config argument' do
6
+ block = nil
7
+ ActiveRecord::Userstamp.configure do |config|
8
+ block = config
9
+ end
10
+ expect(block).to be(ActiveRecord::Userstamp::Configuration)
11
+ end
12
+ end
13
+
14
+ describe '.config' do
15
+ it 'matches default_stamper and default_stamper_class' do
16
+ config = ActiveRecord::Userstamp.config
17
+ expect(config.default_stamper_class.name).to eq(config.default_stamper)
18
+ end
19
+ end
20
+ end
@@ -1,71 +1,71 @@
1
- require 'rails_helper'
2
-
3
- RSpec.describe 'Migration helpers', type: :model do
4
- context 'when default attribute names are used' do
5
- class self::DefaultRandom < ActiveRecord::Base
6
- stampable
7
- end
8
- subject { self.class::DefaultRandom.new }
9
-
10
- temporary_table(:default_randoms) do |t|
11
- t.userstamps(null: false)
12
- end
13
-
14
- with_temporary_table(:default_randoms) do
15
- it 'has a creator_id association' do
16
- expect(subject.has_attribute?(:creator_id)).to be true
17
- expect(subject.class.columns.find {|c| c.name == 'creator_id' }.null).to be false
18
- end
19
-
20
- it 'has an updater_id association' do
21
- expect(subject.has_attribute?(:updater_id)).to be true
22
- expect(subject.class.columns.find {|c| c.name == 'updater_id' }.null).to be false
23
- end
24
-
25
- it 'has a deleter_id association' do
26
- expect(subject.has_attribute?(:deleter_id)).to be true
27
- expect(subject.class.columns.find {|c| c.name == 'deleter_id' }.null).to be false
28
- end
29
- end
30
- end
31
-
32
- context 'when overridden attribute names are used' do
33
- before(:each) do
34
- ActiveRecord::Userstamp.configure do |config|
35
- config.creator_attribute = :created_by
36
- config.updater_attribute = :updated_by
37
- config.deleter_attribute = :deleted_by
38
- end
39
- class self.class::OverriddenRandom < ActiveRecord::Base
40
- stampable
41
- end
42
- end
43
- after(:each) do
44
- ActiveRecord::Userstamp.configure do |config|
45
- config.creator_attribute = :creator_id
46
- config.updater_attribute = :updater_id
47
- config.deleter_attribute = :deleter_id
48
- end
49
- end
50
-
51
- subject { self.class::OverriddenRandom.new }
52
-
53
- temporary_table(:overridden_randoms) do |t|
54
- t.userstamps
55
- end
56
-
57
- with_temporary_table(:overridden_randoms, :each) do
58
- it 'has a created_by attribute' do
59
- expect(subject.has_attribute?(:created_by)).to be true
60
- end
61
-
62
- it 'has an updated_by attribute' do
63
- expect(subject.has_attribute?(:updated_by)).to be true
64
- end
65
-
66
- it 'has a deleted_by attribute' do
67
- expect(subject.has_attribute?(:deleted_by)).to be true
68
- end
69
- end
70
- end
71
- end
1
+ require 'rails_helper'
2
+
3
+ RSpec.describe 'Migration helpers', type: :model do
4
+ context 'when default attribute names are used' do
5
+ class self::DefaultRandom < ActiveRecord::Base
6
+ stampable
7
+ end
8
+ subject { self.class::DefaultRandom.new }
9
+
10
+ temporary_table(:default_randoms) do |t|
11
+ t.userstamps(null: false)
12
+ end
13
+
14
+ with_temporary_table(:default_randoms) do
15
+ it 'has a creator_id association' do
16
+ expect(subject.has_attribute?(:creator_id)).to be true
17
+ expect(subject.class.columns.find {|c| c.name == 'creator_id' }.null).to be false
18
+ end
19
+
20
+ it 'has an updater_id association' do
21
+ expect(subject.has_attribute?(:updater_id)).to be true
22
+ expect(subject.class.columns.find {|c| c.name == 'updater_id' }.null).to be false
23
+ end
24
+
25
+ it 'has a deleter_id association' do
26
+ expect(subject.has_attribute?(:deleter_id)).to be true
27
+ expect(subject.class.columns.find {|c| c.name == 'deleter_id' }.null).to be false
28
+ end
29
+ end
30
+ end
31
+
32
+ context 'when overridden attribute names are used' do
33
+ before(:each) do
34
+ ActiveRecord::Userstamp.configure do |config|
35
+ config.creator_attribute = :created_by
36
+ config.updater_attribute = :updated_by
37
+ config.deleter_attribute = :deleted_by
38
+ end
39
+ class self.class::OverriddenRandom < ActiveRecord::Base
40
+ stampable
41
+ end
42
+ end
43
+ after(:each) do
44
+ ActiveRecord::Userstamp.configure do |config|
45
+ config.creator_attribute = :creator_id
46
+ config.updater_attribute = :updater_id
47
+ config.deleter_attribute = :deleter_id
48
+ end
49
+ end
50
+
51
+ subject { self.class::OverriddenRandom.new }
52
+
53
+ temporary_table(:overridden_randoms) do |t|
54
+ t.userstamps
55
+ end
56
+
57
+ with_temporary_table(:overridden_randoms, :each) do
58
+ it 'has a created_by attribute' do
59
+ expect(subject.has_attribute?(:created_by)).to be true
60
+ end
61
+
62
+ it 'has an updated_by attribute' do
63
+ expect(subject.has_attribute?(:updated_by)).to be true
64
+ end
65
+
66
+ it 'has a deleted_by attribute' do
67
+ expect(subject.has_attribute?(:deleted_by)).to be true
68
+ end
69
+ end
70
+ end
71
+ end