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.
- checksums.yaml +4 -4
- data/lib/paper_trail/record_trail.rb +1 -1
- data/lib/paper_trail/version_number.rb +1 -1
- metadata +3 -274
- data/.github/CONTRIBUTING.md +0 -151
- data/.github/ISSUE_TEMPLATE.md +0 -13
- data/.gitignore +0 -23
- data/.rspec +0 -2
- data/.rubocop.yml +0 -135
- data/.rubocop_todo.yml +0 -41
- data/.travis.yml +0 -41
- data/Appraisals +0 -26
- data/CHANGELOG.md +0 -739
- data/Gemfile +0 -2
- data/MIT-LICENSE +0 -20
- data/README.md +0 -1613
- data/Rakefile +0 -38
- data/doc/bug_report_template.rb +0 -73
- data/doc/triage.md +0 -27
- data/doc/warning_about_not_setting_whodunnit.md +0 -33
- data/gemfiles/ar_4.0.gemfile +0 -7
- data/gemfiles/ar_4.2.gemfile +0 -7
- data/gemfiles/ar_5.0.gemfile +0 -8
- data/gemfiles/ar_5.1.gemfile +0 -8
- data/gemfiles/ar_master.gemfile +0 -9
- data/lib/generators/paper_trail/default_initializer.rb +0 -0
- data/paper_trail.gemspec +0 -49
- data/spec/controllers/articles_controller_spec.rb +0 -28
- data/spec/controllers/widgets_controller_spec.rb +0 -85
- data/spec/dummy_app/Rakefile +0 -7
- data/spec/dummy_app/app/controllers/application_controller.rb +0 -30
- data/spec/dummy_app/app/controllers/articles_controller.rb +0 -16
- data/spec/dummy_app/app/controllers/test_controller.rb +0 -5
- data/spec/dummy_app/app/controllers/widgets_controller.rb +0 -28
- data/spec/dummy_app/app/models/animal.rb +0 -4
- data/spec/dummy_app/app/models/article.rb +0 -25
- data/spec/dummy_app/app/models/authorship.rb +0 -5
- data/spec/dummy_app/app/models/bar_habtm.rb +0 -4
- data/spec/dummy_app/app/models/book.rb +0 -9
- data/spec/dummy_app/app/models/boolit.rb +0 -4
- data/spec/dummy_app/app/models/callback_modifier.rb +0 -45
- data/spec/dummy_app/app/models/car.rb +0 -3
- data/spec/dummy_app/app/models/cat.rb +0 -2
- data/spec/dummy_app/app/models/chapter.rb +0 -9
- data/spec/dummy_app/app/models/citation.rb +0 -5
- data/spec/dummy_app/app/models/custom_primary_key_record.rb +0 -15
- data/spec/dummy_app/app/models/customer.rb +0 -4
- data/spec/dummy_app/app/models/document.rb +0 -8
- data/spec/dummy_app/app/models/dog.rb +0 -2
- data/spec/dummy_app/app/models/editor.rb +0 -4
- data/spec/dummy_app/app/models/editorship.rb +0 -5
- data/spec/dummy_app/app/models/elephant.rb +0 -3
- data/spec/dummy_app/app/models/fluxor.rb +0 -3
- data/spec/dummy_app/app/models/foo_habtm.rb +0 -5
- data/spec/dummy_app/app/models/foo_widget.rb +0 -2
- data/spec/dummy_app/app/models/fruit.rb +0 -5
- data/spec/dummy_app/app/models/gadget.rb +0 -3
- data/spec/dummy_app/app/models/kitchen/banana.rb +0 -5
- data/spec/dummy_app/app/models/legacy_widget.rb +0 -6
- data/spec/dummy_app/app/models/line_item.rb +0 -4
- data/spec/dummy_app/app/models/not_on_update.rb +0 -4
- data/spec/dummy_app/app/models/on/create.rb +0 -6
- data/spec/dummy_app/app/models/on/destroy.rb +0 -6
- data/spec/dummy_app/app/models/on/empty_array.rb +0 -6
- data/spec/dummy_app/app/models/on/update.rb +0 -6
- data/spec/dummy_app/app/models/order.rb +0 -5
- data/spec/dummy_app/app/models/paragraph.rb +0 -5
- data/spec/dummy_app/app/models/person.rb +0 -39
- data/spec/dummy_app/app/models/post.rb +0 -3
- data/spec/dummy_app/app/models/post_with_status.rb +0 -7
- data/spec/dummy_app/app/models/quotation.rb +0 -5
- data/spec/dummy_app/app/models/section.rb +0 -6
- data/spec/dummy_app/app/models/skipper.rb +0 -3
- data/spec/dummy_app/app/models/song.rb +0 -37
- data/spec/dummy_app/app/models/thing.rb +0 -3
- data/spec/dummy_app/app/models/translation.rb +0 -11
- data/spec/dummy_app/app/models/truck.rb +0 -4
- data/spec/dummy_app/app/models/vehicle.rb +0 -4
- data/spec/dummy_app/app/models/whatchamajigger.rb +0 -4
- data/spec/dummy_app/app/models/widget.rb +0 -8
- data/spec/dummy_app/app/models/wotsit.rb +0 -8
- data/spec/dummy_app/app/versions/custom_primary_key_record_version.rb +0 -3
- data/spec/dummy_app/app/versions/joined_version.rb +0 -6
- data/spec/dummy_app/app/versions/json_version.rb +0 -3
- data/spec/dummy_app/app/versions/kitchen/banana_version.rb +0 -5
- data/spec/dummy_app/app/versions/post_version.rb +0 -3
- data/spec/dummy_app/config.ru +0 -4
- data/spec/dummy_app/config/application.rb +0 -39
- data/spec/dummy_app/config/boot.rb +0 -24
- data/spec/dummy_app/config/database.mysql.yml +0 -19
- data/spec/dummy_app/config/database.postgres.yml +0 -15
- data/spec/dummy_app/config/database.sqlite.yml +0 -15
- data/spec/dummy_app/config/environment.rb +0 -5
- data/spec/dummy_app/config/environments/development.rb +0 -36
- data/spec/dummy_app/config/environments/production.rb +0 -74
- data/spec/dummy_app/config/environments/test.rb +0 -46
- data/spec/dummy_app/config/initializers/backtrace_silencers.rb +0 -9
- data/spec/dummy_app/config/initializers/inflections.rb +0 -10
- data/spec/dummy_app/config/initializers/mime_types.rb +0 -5
- data/spec/dummy_app/config/initializers/paper_trail.rb +0 -1
- data/spec/dummy_app/config/initializers/secret_token.rb +0 -9
- data/spec/dummy_app/config/initializers/session_store.rb +0 -8
- data/spec/dummy_app/config/locales/en.yml +0 -5
- data/spec/dummy_app/config/routes.rb +0 -4
- data/spec/dummy_app/db/migrate/20110208155312_set_up_test_tables.rb +0 -344
- data/spec/dummy_app/db/schema.rb +0 -298
- data/spec/generators/install_generator_spec.rb +0 -88
- data/spec/models/animal_spec.rb +0 -61
- data/spec/models/article_spec.rb +0 -186
- data/spec/models/boolit_spec.rb +0 -41
- data/spec/models/callback_modifier_spec.rb +0 -92
- data/spec/models/car_spec.rb +0 -13
- data/spec/models/custom_primary_key_record_spec.rb +0 -18
- data/spec/models/document_spec.rb +0 -57
- data/spec/models/gadget_spec.rb +0 -63
- data/spec/models/joined_version_spec.rb +0 -41
- data/spec/models/json_version_spec.rb +0 -101
- data/spec/models/kitchen/banana_spec.rb +0 -14
- data/spec/models/legacy_widget_spec.rb +0 -40
- data/spec/models/not_on_update_spec.rb +0 -22
- data/spec/models/on/create_spec.rb +0 -27
- data/spec/models/on/destroy_spec.rb +0 -27
- data/spec/models/on/empty_array_spec.rb +0 -30
- data/spec/models/on/update_spec.rb +0 -27
- data/spec/models/post_with_status_spec.rb +0 -46
- data/spec/models/skipper_spec.rb +0 -42
- data/spec/models/thing_spec.rb +0 -11
- data/spec/models/translation_spec.rb +0 -70
- data/spec/models/vehicle_spec.rb +0 -5
- data/spec/models/version_spec.rb +0 -282
- data/spec/models/widget_spec.rb +0 -338
- data/spec/modules/paper_trail_spec.rb +0 -27
- data/spec/modules/version_concern_spec.rb +0 -28
- data/spec/modules/version_number_spec.rb +0 -18
- data/spec/paper_trail/associations_spec.rb +0 -965
- data/spec/paper_trail/cleaner_spec.rb +0 -152
- data/spec/paper_trail/config_spec.rb +0 -45
- data/spec/paper_trail/model_spec.rb +0 -992
- data/spec/paper_trail/serializer_spec.rb +0 -85
- data/spec/paper_trail/serializers/custom_json_serializer_spec.rb +0 -18
- data/spec/paper_trail/serializers/custom_yaml_serializer_spec.rb +0 -45
- data/spec/paper_trail/serializers/json_spec.rb +0 -57
- data/spec/paper_trail/serializers/yaml_spec.rb +0 -42
- data/spec/paper_trail/thread_safety_spec.rb +0 -44
- data/spec/paper_trail/version_limit_spec.rb +0 -55
- data/spec/paper_trail/version_spec.rb +0 -96
- data/spec/paper_trail_spec.rb +0 -122
- data/spec/requests/articles_spec.rb +0 -34
- data/spec/spec_helper.rb +0 -78
- data/spec/support/alt_db_init.rb +0 -54
- 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]
|
data/doc/bug_report_template.rb
DELETED
|
@@ -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`.
|
data/gemfiles/ar_4.0.gemfile
DELETED
data/gemfiles/ar_4.2.gemfile
DELETED
data/gemfiles/ar_5.0.gemfile
DELETED
data/gemfiles/ar_5.1.gemfile
DELETED
data/gemfiles/ar_master.gemfile
DELETED
|
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
|
data/spec/dummy_app/Rakefile
DELETED
|
@@ -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
|