paper_trail 7.1.0 → 7.1.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 (151) hide show
  1. checksums.yaml +4 -4
  2. data/lib/paper_trail/record_trail.rb +1 -1
  3. data/lib/paper_trail/version_number.rb +1 -1
  4. metadata +3 -274
  5. data/.github/CONTRIBUTING.md +0 -151
  6. data/.github/ISSUE_TEMPLATE.md +0 -13
  7. data/.gitignore +0 -23
  8. data/.rspec +0 -2
  9. data/.rubocop.yml +0 -135
  10. data/.rubocop_todo.yml +0 -41
  11. data/.travis.yml +0 -41
  12. data/Appraisals +0 -26
  13. data/CHANGELOG.md +0 -739
  14. data/Gemfile +0 -2
  15. data/MIT-LICENSE +0 -20
  16. data/README.md +0 -1613
  17. data/Rakefile +0 -38
  18. data/doc/bug_report_template.rb +0 -73
  19. data/doc/triage.md +0 -27
  20. data/doc/warning_about_not_setting_whodunnit.md +0 -33
  21. data/gemfiles/ar_4.0.gemfile +0 -7
  22. data/gemfiles/ar_4.2.gemfile +0 -7
  23. data/gemfiles/ar_5.0.gemfile +0 -8
  24. data/gemfiles/ar_5.1.gemfile +0 -8
  25. data/gemfiles/ar_master.gemfile +0 -9
  26. data/lib/generators/paper_trail/default_initializer.rb +0 -0
  27. data/paper_trail.gemspec +0 -49
  28. data/spec/controllers/articles_controller_spec.rb +0 -28
  29. data/spec/controllers/widgets_controller_spec.rb +0 -85
  30. data/spec/dummy_app/Rakefile +0 -7
  31. data/spec/dummy_app/app/controllers/application_controller.rb +0 -30
  32. data/spec/dummy_app/app/controllers/articles_controller.rb +0 -16
  33. data/spec/dummy_app/app/controllers/test_controller.rb +0 -5
  34. data/spec/dummy_app/app/controllers/widgets_controller.rb +0 -28
  35. data/spec/dummy_app/app/models/animal.rb +0 -4
  36. data/spec/dummy_app/app/models/article.rb +0 -25
  37. data/spec/dummy_app/app/models/authorship.rb +0 -5
  38. data/spec/dummy_app/app/models/bar_habtm.rb +0 -4
  39. data/spec/dummy_app/app/models/book.rb +0 -9
  40. data/spec/dummy_app/app/models/boolit.rb +0 -4
  41. data/spec/dummy_app/app/models/callback_modifier.rb +0 -45
  42. data/spec/dummy_app/app/models/car.rb +0 -3
  43. data/spec/dummy_app/app/models/cat.rb +0 -2
  44. data/spec/dummy_app/app/models/chapter.rb +0 -9
  45. data/spec/dummy_app/app/models/citation.rb +0 -5
  46. data/spec/dummy_app/app/models/custom_primary_key_record.rb +0 -15
  47. data/spec/dummy_app/app/models/customer.rb +0 -4
  48. data/spec/dummy_app/app/models/document.rb +0 -8
  49. data/spec/dummy_app/app/models/dog.rb +0 -2
  50. data/spec/dummy_app/app/models/editor.rb +0 -4
  51. data/spec/dummy_app/app/models/editorship.rb +0 -5
  52. data/spec/dummy_app/app/models/elephant.rb +0 -3
  53. data/spec/dummy_app/app/models/fluxor.rb +0 -3
  54. data/spec/dummy_app/app/models/foo_habtm.rb +0 -5
  55. data/spec/dummy_app/app/models/foo_widget.rb +0 -2
  56. data/spec/dummy_app/app/models/fruit.rb +0 -5
  57. data/spec/dummy_app/app/models/gadget.rb +0 -3
  58. data/spec/dummy_app/app/models/kitchen/banana.rb +0 -5
  59. data/spec/dummy_app/app/models/legacy_widget.rb +0 -6
  60. data/spec/dummy_app/app/models/line_item.rb +0 -4
  61. data/spec/dummy_app/app/models/not_on_update.rb +0 -4
  62. data/spec/dummy_app/app/models/on/create.rb +0 -6
  63. data/spec/dummy_app/app/models/on/destroy.rb +0 -6
  64. data/spec/dummy_app/app/models/on/empty_array.rb +0 -6
  65. data/spec/dummy_app/app/models/on/update.rb +0 -6
  66. data/spec/dummy_app/app/models/order.rb +0 -5
  67. data/spec/dummy_app/app/models/paragraph.rb +0 -5
  68. data/spec/dummy_app/app/models/person.rb +0 -39
  69. data/spec/dummy_app/app/models/post.rb +0 -3
  70. data/spec/dummy_app/app/models/post_with_status.rb +0 -7
  71. data/spec/dummy_app/app/models/quotation.rb +0 -5
  72. data/spec/dummy_app/app/models/section.rb +0 -6
  73. data/spec/dummy_app/app/models/skipper.rb +0 -3
  74. data/spec/dummy_app/app/models/song.rb +0 -37
  75. data/spec/dummy_app/app/models/thing.rb +0 -3
  76. data/spec/dummy_app/app/models/translation.rb +0 -11
  77. data/spec/dummy_app/app/models/truck.rb +0 -4
  78. data/spec/dummy_app/app/models/vehicle.rb +0 -4
  79. data/spec/dummy_app/app/models/whatchamajigger.rb +0 -4
  80. data/spec/dummy_app/app/models/widget.rb +0 -8
  81. data/spec/dummy_app/app/models/wotsit.rb +0 -8
  82. data/spec/dummy_app/app/versions/custom_primary_key_record_version.rb +0 -3
  83. data/spec/dummy_app/app/versions/joined_version.rb +0 -6
  84. data/spec/dummy_app/app/versions/json_version.rb +0 -3
  85. data/spec/dummy_app/app/versions/kitchen/banana_version.rb +0 -5
  86. data/spec/dummy_app/app/versions/post_version.rb +0 -3
  87. data/spec/dummy_app/config.ru +0 -4
  88. data/spec/dummy_app/config/application.rb +0 -39
  89. data/spec/dummy_app/config/boot.rb +0 -24
  90. data/spec/dummy_app/config/database.mysql.yml +0 -19
  91. data/spec/dummy_app/config/database.postgres.yml +0 -15
  92. data/spec/dummy_app/config/database.sqlite.yml +0 -15
  93. data/spec/dummy_app/config/environment.rb +0 -5
  94. data/spec/dummy_app/config/environments/development.rb +0 -36
  95. data/spec/dummy_app/config/environments/production.rb +0 -74
  96. data/spec/dummy_app/config/environments/test.rb +0 -46
  97. data/spec/dummy_app/config/initializers/backtrace_silencers.rb +0 -9
  98. data/spec/dummy_app/config/initializers/inflections.rb +0 -10
  99. data/spec/dummy_app/config/initializers/mime_types.rb +0 -5
  100. data/spec/dummy_app/config/initializers/paper_trail.rb +0 -1
  101. data/spec/dummy_app/config/initializers/secret_token.rb +0 -9
  102. data/spec/dummy_app/config/initializers/session_store.rb +0 -8
  103. data/spec/dummy_app/config/locales/en.yml +0 -5
  104. data/spec/dummy_app/config/routes.rb +0 -4
  105. data/spec/dummy_app/db/migrate/20110208155312_set_up_test_tables.rb +0 -344
  106. data/spec/dummy_app/db/schema.rb +0 -298
  107. data/spec/generators/install_generator_spec.rb +0 -88
  108. data/spec/models/animal_spec.rb +0 -61
  109. data/spec/models/article_spec.rb +0 -186
  110. data/spec/models/boolit_spec.rb +0 -41
  111. data/spec/models/callback_modifier_spec.rb +0 -92
  112. data/spec/models/car_spec.rb +0 -13
  113. data/spec/models/custom_primary_key_record_spec.rb +0 -18
  114. data/spec/models/document_spec.rb +0 -57
  115. data/spec/models/gadget_spec.rb +0 -63
  116. data/spec/models/joined_version_spec.rb +0 -41
  117. data/spec/models/json_version_spec.rb +0 -101
  118. data/spec/models/kitchen/banana_spec.rb +0 -14
  119. data/spec/models/legacy_widget_spec.rb +0 -40
  120. data/spec/models/not_on_update_spec.rb +0 -22
  121. data/spec/models/on/create_spec.rb +0 -27
  122. data/spec/models/on/destroy_spec.rb +0 -27
  123. data/spec/models/on/empty_array_spec.rb +0 -30
  124. data/spec/models/on/update_spec.rb +0 -27
  125. data/spec/models/post_with_status_spec.rb +0 -46
  126. data/spec/models/skipper_spec.rb +0 -42
  127. data/spec/models/thing_spec.rb +0 -11
  128. data/spec/models/translation_spec.rb +0 -70
  129. data/spec/models/vehicle_spec.rb +0 -5
  130. data/spec/models/version_spec.rb +0 -282
  131. data/spec/models/widget_spec.rb +0 -338
  132. data/spec/modules/paper_trail_spec.rb +0 -27
  133. data/spec/modules/version_concern_spec.rb +0 -28
  134. data/spec/modules/version_number_spec.rb +0 -18
  135. data/spec/paper_trail/associations_spec.rb +0 -965
  136. data/spec/paper_trail/cleaner_spec.rb +0 -152
  137. data/spec/paper_trail/config_spec.rb +0 -45
  138. data/spec/paper_trail/model_spec.rb +0 -992
  139. data/spec/paper_trail/serializer_spec.rb +0 -85
  140. data/spec/paper_trail/serializers/custom_json_serializer_spec.rb +0 -18
  141. data/spec/paper_trail/serializers/custom_yaml_serializer_spec.rb +0 -45
  142. data/spec/paper_trail/serializers/json_spec.rb +0 -57
  143. data/spec/paper_trail/serializers/yaml_spec.rb +0 -42
  144. data/spec/paper_trail/thread_safety_spec.rb +0 -44
  145. data/spec/paper_trail/version_limit_spec.rb +0 -55
  146. data/spec/paper_trail/version_spec.rb +0 -96
  147. data/spec/paper_trail_spec.rb +0 -122
  148. data/spec/requests/articles_spec.rb +0 -34
  149. data/spec/spec_helper.rb +0 -78
  150. data/spec/support/alt_db_init.rb +0 -54
  151. data/spec/support/custom_json_serializer.rb +0 -13
data/Rakefile DELETED
@@ -1,38 +0,0 @@
1
- require "bundler"
2
- Bundler::GemHelper.install_tasks
3
-
4
- desc "Set a relevant database.yml for testing"
5
- task :prepare do
6
- ENV["DB"] ||= "sqlite"
7
- FileUtils.cp(
8
- "spec/dummy_app/config/database.#{ENV['DB']}.yml",
9
- "spec/dummy_app/config/database.yml"
10
- )
11
- end
12
-
13
- require "rake/testtask"
14
- desc "Run tests on PaperTrail with Test::Unit."
15
- Rake::TestTask.new(:test) do |t|
16
- t.libs << "lib"
17
- t.libs << "test"
18
- t.pattern = "test/**/*_test.rb"
19
- t.verbose = false
20
-
21
- # Enabling ruby interpreter warnings (-w) is, sadly, impractical. There are
22
- # too many noisy warnings that we have no control over, e.g. caused by libs we
23
- # depend on.
24
- t.warning = false
25
- end
26
-
27
- require "rspec/core/rake_task"
28
- desc "Run tests on PaperTrail with RSpec"
29
- task(:spec).clear
30
- RSpec::Core::RakeTask.new(:spec) do |t|
31
- t.verbose = false # hide list of specs bit.ly/1nVq3Jn
32
- end
33
-
34
- require "rubocop/rake_task"
35
- RuboCop::RakeTask.new
36
-
37
- desc "Default: run all available test suites"
38
- task default: %i[rubocop prepare test spec]
@@ -1,73 +0,0 @@
1
- # Use this template to report PaperTrail bugs.
2
- # Please include only the minimum code necessary to reproduce your issue.
3
- require "bundler/inline"
4
-
5
- # STEP ONE: What versions are you using?
6
- gemfile(true) do
7
- ruby "2.3.1"
8
- source "https://rubygems.org"
9
- gem "activerecord", "5.0.0"
10
- gem "minitest", "5.9.0"
11
- gem "paper_trail", "5.2.0", require: false
12
- gem "sqlite3"
13
- end
14
-
15
- require "active_record"
16
- require "minitest/autorun"
17
- require "logger"
18
-
19
- # Please use sqlite for your bug reports, if possible.
20
- ActiveRecord::Base.establish_connection(adapter: "sqlite3", database: ":memory:")
21
- ActiveRecord::Base.logger = nil
22
- ActiveRecord::Schema.define do
23
- # STEP TWO: Define your tables here.
24
- create_table :users, force: true do |t|
25
- t.text :first_name, null: false
26
- t.timestamps null: false
27
- end
28
-
29
- create_table :versions do |t|
30
- t.string :item_type, null: false
31
- t.integer :item_id, null: false
32
- t.string :event, null: false
33
- t.string :whodunnit
34
- t.text :object, limit: 1_073_741_823
35
- t.text :object_changes, limit: 1_073_741_823
36
- t.integer :transaction_id
37
- t.datetime :created_at
38
- end
39
- add_index :versions, %i[item_type item_id]
40
- add_index :versions, [:transaction_id]
41
-
42
- create_table :version_associations do |t|
43
- t.integer :version_id
44
- t.string :foreign_key_name, null: false
45
- t.integer :foreign_key_id
46
- end
47
- add_index :version_associations, [:version_id]
48
- add_index :version_associations, %i[foreign_key_name foreign_key_id],
49
- name: "index_version_associations_on_foreign_key"
50
- end
51
- ActiveRecord::Base.logger = Logger.new(STDOUT)
52
- require "paper_trail/config"
53
-
54
- # STEP THREE: Configure PaperTrail as you would in your initializer
55
- PaperTrail::Config.instance.track_associations = true
56
-
57
- require "paper_trail"
58
-
59
- # STEP FOUR: Define your AR models here.
60
- class User < ActiveRecord::Base
61
- has_paper_trail
62
- end
63
-
64
- # STEP FIVE: Please write a test that demonstrates your issue.
65
- class BugTest < ActiveSupport::TestCase
66
- def test_1
67
- assert_difference(-> { PaperTrail::Version.count }, +1) {
68
- User.create(first_name: "Jane")
69
- }
70
- end
71
- end
72
-
73
- # STEP SIX: Run this script using `ruby my_bug_report.rb`
data/doc/triage.md DELETED
@@ -1,27 +0,0 @@
1
- # Triage
2
-
3
- ## Response to Usage Question
4
-
5
- ```
6
- Per our [contributing guide][1], please ask usage questions on [StackOverflow][2].
7
-
8
- Due to limited volunteer time, we can only accept bug reports and feature requests here on GitHub.
9
-
10
- Once you create a question on StackOverflow, please feel free to comment here with the URL.
11
-
12
- For instructions on how to file a bug report, please see our [issue template][3].
13
-
14
- [1]: https://github.com/airblade/paper_trail/blob/master/.github/CONTRIBUTING.md
15
- [2]: https://stackoverflow.com/tags/paper-trail-gem
16
- [3]: https://github.com/airblade/paper_trail/blob/master/.github/ISSUE_TEMPLATE.md
17
- ```
18
-
19
- ## Responses to Common Problems
20
-
21
- ```
22
- Thanks for the bug report. Per our [contributing guide][1] please use
23
- our [bug report template][2].
24
-
25
- [1]: https://github.com/airblade/paper_trail/blob/master/.github/CONTRIBUTING.md
26
- [2]: https://github.com/airblade/paper_trail/blob/master/doc/bug_report_template.rb
27
- ```
@@ -1,33 +0,0 @@
1
- # The warning about not setting whodunnit
2
-
3
- After upgrading to PaperTrail 5, you see this warning:
4
-
5
- > user_for_paper_trail is present, but whodunnit has not been set. PaperTrail no
6
- > longer adds the set_paper_trail_whodunnit before_action for you. Please add this
7
- > before_action to your ApplicationController to continue recording whodunnit.
8
-
9
- ## You want to track whodunnit
10
-
11
- Add `before_action :set_paper_trail_whodunnit` to your ApplicationController.
12
- See the PaperTrail readme for an example (https://git.io/vrsbt).
13
-
14
- ## You don't want to track whodunnit
15
-
16
- If you no longer want to track whodunnit, you may disable this
17
- warning by overriding user_for_paper_trail to return nil.
18
-
19
- ```
20
- # in application_controller.rb
21
- def user_for_paper_trail
22
- nil # disable whodunnit tracking
23
- end
24
- ```
25
-
26
- ## You just want the warning to go away
27
-
28
- Upgrade to PT 6.
29
-
30
- ## Why does PT no longer add this callback for me?
31
-
32
- So that you can control the order of callbacks. Maybe you have another callback
33
- that must happen first, before `set_paper_trail_whodunnit`.
@@ -1,7 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "activerecord", "~> 4.0"
6
-
7
- gemspec path: "../"
@@ -1,7 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "activerecord", "~> 4.2"
6
-
7
- gemspec path: "../"
@@ -1,8 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "activerecord", "~> 5.0.3"
6
- gem "rails-controller-testing"
7
-
8
- gemspec path: "../"
@@ -1,8 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "rails", "5.1.1"
6
- gem "rails-controller-testing"
7
-
8
- gemspec path: "../"
@@ -1,9 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "rails", github: "rails/rails"
6
- gem "rspec-rails", "~> 3.5.1"
7
- gem "rails-controller-testing"
8
-
9
- gemspec path: "../"
File without changes
data/paper_trail.gemspec DELETED
@@ -1,49 +0,0 @@
1
- $LOAD_PATH.unshift File.expand_path("../lib", __FILE__)
2
- require "paper_trail/version_number"
3
-
4
- Gem::Specification.new do |s|
5
- s.name = "paper_trail"
6
- s.version = PaperTrail::VERSION::STRING
7
- s.platform = Gem::Platform::RUBY
8
- s.summary = "Track changes to your models."
9
- s.description = <<-EOS
10
- Track changes to your models, for auditing or versioning. See how a model looked
11
- at any stage in its lifecycle, revert it to any version, or restore it after it
12
- has been destroyed.
13
- EOS
14
- s.homepage = "https://github.com/airblade/paper_trail"
15
- s.authors = ["Andy Stewart", "Ben Atkins", "Jared Beck"]
16
- s.email = "batkinz@gmail.com"
17
- s.license = "MIT"
18
-
19
- s.files = `git ls-files`.split("\n")
20
- s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
21
- s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
22
- s.require_paths = ["lib"]
23
-
24
- s.required_rubygems_version = ">= 1.3.6"
25
- s.required_ruby_version = ">= 2.1.0"
26
-
27
- # Rails does not follow semver, makes breaking changes in minor versions.
28
- s.add_dependency "activerecord", [">= 4.0", "< 5.2"]
29
- s.add_dependency "request_store", "~> 1.1"
30
-
31
- s.add_development_dependency "appraisal", "~> 2.1"
32
- s.add_development_dependency "rake", "~> 12.0"
33
- s.add_development_dependency "ffaker", "~> 2.5"
34
-
35
- # Why `railties`? Possibly used by `spec/dummy_app` boot up?
36
- s.add_development_dependency "railties", [">= 4.0", "< 5.2"]
37
-
38
- s.add_development_dependency "rack-test", "~> 0.6.3"
39
- s.add_development_dependency "rspec-rails", "~> 3.5"
40
- s.add_development_dependency "generator_spec", "~> 0.9.3"
41
- s.add_development_dependency "database_cleaner", "~> 1.2"
42
- s.add_development_dependency "pry-byebug", "~> 3.4"
43
- s.add_development_dependency "rubocop", "0.48.1"
44
- s.add_development_dependency "rubocop-rspec", "~> 1.15.0"
45
- s.add_development_dependency "timecop", "~> 0.8.0"
46
- s.add_development_dependency "sqlite3", "~> 1.2"
47
- s.add_development_dependency "pg", "~> 0.19.0"
48
- s.add_development_dependency "mysql2", "~> 0.4.2"
49
- end
@@ -1,28 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe ArticlesController, type: :controller do
4
- describe "PaperTrail.enabled_for_controller?" do
5
- context "PaperTrail.enabled? == true" do
6
- before { PaperTrail.enabled = true }
7
-
8
- it "returns true" do
9
- assert PaperTrail.enabled?
10
- post :create, params_wrapper(article: { title: "Doh", content: FFaker::Lorem.sentence })
11
- expect(assigns(:article)).not_to be_nil
12
- assert PaperTrail.enabled_for_controller?
13
- assert_equal 1, assigns(:article).versions.length
14
- end
15
-
16
- after { PaperTrail.enabled = false }
17
- end
18
-
19
- context "PaperTrail.enabled? == false" do
20
- it "returns false" do
21
- assert !PaperTrail.enabled?
22
- post :create, params_wrapper(article: { title: "Doh", content: FFaker::Lorem.sentence })
23
- assert !PaperTrail.enabled_for_controller?
24
- assert_equal 0, assigns(:article).versions.length
25
- end
26
- end
27
- end
28
- end
@@ -1,85 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe WidgetsController, type: :controller, versioning: true do
4
- before { request.env["REMOTE_ADDR"] = "127.0.0.1" }
5
- after { RequestStore.store[:paper_trail] = nil }
6
-
7
- describe "#create" do
8
- context "PT enabled" do
9
- it "stores information like IP address in version" do
10
- post(:create, params_wrapper(widget: { name: "Flugel" }))
11
- widget = assigns(:widget)
12
- expect(widget.versions.length).to(eq(1))
13
- expect(widget.versions.last.whodunnit.to_i).to(eq(153))
14
- expect(widget.versions.last.ip).to(eq("127.0.0.1"))
15
- expect(widget.versions.last.user_agent).to(eq("Rails Testing"))
16
- end
17
-
18
- it "controller metadata methods should get evaluated" do
19
- request.env["HTTP_USER_AGENT"] = "User-Agent"
20
- post :create, params_wrapper(widget: { name: "Flugel" })
21
- expect(PaperTrail.enabled_for_controller?).to(eq(true))
22
- expect(PaperTrail.whodunnit).to(eq(153))
23
- expect(PaperTrail.controller_info.present?).to(eq(true))
24
- expect(PaperTrail.controller_info.keys.include?(:ip)).to(eq(true))
25
- expect(PaperTrail.controller_info.keys.include?(:user_agent)).to(eq(true))
26
- end
27
- end
28
-
29
- context "PT disabled" do
30
- it "does not save a version, and metadata is not set" do
31
- request.env["HTTP_USER_AGENT"] = "Disable User-Agent"
32
- post :create, params_wrapper(widget: { name: "Flugel" })
33
- expect(assigns(:widget).versions.length).to(eq(0))
34
- expect(PaperTrail).not_to be_enabled_for_controller
35
- expect(PaperTrail.whodunnit).to be_nil
36
- expect(PaperTrail.controller_info).to eq({})
37
- end
38
- end
39
- end
40
-
41
- describe "#destroy" do
42
- it "can be disabled" do
43
- request.env["HTTP_USER_AGENT"] = "Disable User-Agent"
44
- post(:create, params_wrapper(widget: { name: "Flugel" }))
45
- w = assigns(:widget)
46
- expect(w.versions.length).to(eq(0))
47
- delete(:destroy, params_wrapper(id: w.id))
48
- expect(PaperTrail::Version.with_item_keys("Widget", w.id).size).to(eq(0))
49
- end
50
-
51
- it "stores information like IP address in version" do
52
- w = Widget.create(name: "Roundel")
53
- expect(w.versions.length).to(eq(1))
54
- delete(:destroy, params_wrapper(id: w.id))
55
- widget = assigns(:widget)
56
- expect(widget.versions.length).to(eq(2))
57
- expect(widget.versions.last.ip).to(eq("127.0.0.1"))
58
- expect(widget.versions.last.user_agent).to(eq("Rails Testing"))
59
- expect(widget.versions.last.whodunnit.to_i).to(eq(153))
60
- end
61
- end
62
-
63
- describe "#update" do
64
- it "stores information like IP address in version" do
65
- w = Widget.create(name: "Duvel")
66
- expect(w.versions.length).to(eq(1))
67
- put(:update, params_wrapper(id: w.id, widget: { name: "Bugle" }))
68
- widget = assigns(:widget)
69
- expect(widget.versions.length).to(eq(2))
70
- expect(widget.versions.last.whodunnit.to_i).to(eq(153))
71
- expect(widget.versions.last.ip).to(eq("127.0.0.1"))
72
- expect(widget.versions.last.user_agent).to(eq("Rails Testing"))
73
- end
74
-
75
- it "can be disabled" do
76
- request.env["HTTP_USER_AGENT"] = "Disable User-Agent"
77
- post(:create, params_wrapper(widget: { name: "Flugel" }))
78
- w = assigns(:widget)
79
- expect(w.versions.length).to(eq(0))
80
- put(:update, params_wrapper(id: w.id, widget: { name: "Bugle" }))
81
- widget = assigns(:widget)
82
- expect(widget.versions.length).to(eq(0))
83
- end
84
- end
85
- end
@@ -1,7 +0,0 @@
1
- # Add your own tasks in files placed in lib/tasks ending in .rake,
2
- # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
3
-
4
- require File.expand_path("../config/application", __FILE__)
5
- require "rake"
6
-
7
- Dummy::Application.load_tasks
@@ -1,30 +0,0 @@
1
- class ApplicationController < ActionController::Base
2
- protect_from_forgery
3
-
4
- # Some applications and libraries modify `current_user`. Their changes need
5
- # to be reflected in `whodunnit`, so the `set_paper_trail_whodunnit` below
6
- # must happen after this.
7
- before_action :modify_current_user
8
-
9
- # PT used to add this callback automatically. Now people are required to add
10
- # it themsevles, like this, allowing them to control the order of callbacks.
11
- # The `modify_current_user` callback above shows why this control is useful.
12
- before_action :set_paper_trail_whodunnit
13
-
14
- def rescue_action(e)
15
- raise e
16
- end
17
-
18
- # Returns id of hypothetical current user
19
- attr_reader :current_user
20
-
21
- def info_for_paper_trail
22
- { ip: request.remote_ip, user_agent: request.user_agent }
23
- end
24
-
25
- private
26
-
27
- def modify_current_user
28
- @current_user = OpenStruct.new(id: 153)
29
- end
30
- end
@@ -1,16 +0,0 @@
1
- class ArticlesController < ApplicationController
2
- def create
3
- @article = Article.create article_params
4
- head :ok
5
- end
6
-
7
- def current_user
8
- "foobar"
9
- end
10
-
11
- private
12
-
13
- def article_params
14
- params.require(:article).permit!
15
- end
16
- end