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
@@ -1,122 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe PaperTrail do
4
- describe ".gem_version" do
5
- it "returns a Gem::Version" do
6
- v = described_class.gem_version
7
- expect(v).to be_a(::Gem::Version)
8
- expect(v.to_s).to eq(::PaperTrail::VERSION::STRING)
9
- end
10
- end
11
-
12
- context "when enabled" do
13
- it "affects all threads" do
14
- Thread.new { described_class.enabled = false }.join
15
- assert_equal false, described_class.enabled?
16
- end
17
-
18
- after do
19
- described_class.enabled = true
20
- end
21
- end
22
-
23
- context "default" do
24
- it "has versioning off by default" do
25
- expect(described_class).not_to be_enabled
26
- end
27
-
28
- it "has versioning on in a `with_versioning` block" do
29
- expect(described_class).not_to be_enabled
30
- with_versioning do
31
- expect(described_class).to be_enabled
32
- end
33
- expect(described_class).not_to be_enabled
34
- end
35
-
36
- context "error within `with_versioning` block" do
37
- it "reverts the value of `PaperTrail.enabled?` to its previous state" do
38
- expect(described_class).not_to be_enabled
39
- expect { with_versioning { raise } }.to raise_error(RuntimeError)
40
- expect(described_class).not_to be_enabled
41
- end
42
- end
43
- end
44
-
45
- context "`versioning: true`", versioning: true do
46
- it "has versioning on by default" do
47
- expect(described_class).to be_enabled
48
- end
49
-
50
- it "keeps versioning on after a with_versioning block" do
51
- expect(described_class).to be_enabled
52
- with_versioning do
53
- expect(described_class).to be_enabled
54
- end
55
- expect(described_class).to be_enabled
56
- end
57
- end
58
-
59
- context "`with_versioning` block at class level" do
60
- it { expect(described_class).not_to be_enabled }
61
-
62
- with_versioning do
63
- it "has versioning on by default" do
64
- expect(described_class).to be_enabled
65
- end
66
- end
67
- it "does not leak the `enabled?` state into successive tests" do
68
- expect(described_class).not_to be_enabled
69
- end
70
- end
71
-
72
- describe ".version" do
73
- it { expect(described_class).to respond_to(:version) }
74
- it { expect(described_class.version).to eq(described_class::VERSION::STRING) }
75
- end
76
-
77
- describe ".whodunnit" do
78
- context "when set globally" do
79
- before(:all) { described_class.whodunnit = "foobar" }
80
-
81
- it "is set to `nil` by default" do
82
- expect(described_class.whodunnit).to be_nil
83
- end
84
- end
85
-
86
- context "with block passed" do
87
- it "sets whodunnit only for the block passed" do
88
- described_class.whodunnit("foo") do
89
- expect(described_class.whodunnit).to eq("foo")
90
- end
91
-
92
- expect(described_class.whodunnit).to be_nil
93
- end
94
-
95
- it "sets whodunnit only for the current thread" do
96
- described_class.whodunnit("foo") do
97
- expect(described_class.whodunnit).to eq("foo")
98
- Thread.new { expect(described_class.whodunnit).to be_nil }.join
99
- end
100
-
101
- expect(described_class.whodunnit).to be_nil
102
- end
103
- end
104
-
105
- context "when set to a proc" do
106
- it "evaluates the proc each time a version is made" do
107
- call_count = 0
108
- described_class.whodunnit = proc { call_count += 1 }
109
- expect(described_class.whodunnit).to eq(1)
110
- expect(described_class.whodunnit).to eq(2)
111
- end
112
- end
113
- end
114
-
115
- describe ".controller_info" do
116
- before(:all) { described_class.controller_info = { foo: "bar" } }
117
-
118
- it "is set to an empty hash before each test" do
119
- expect(described_class.controller_info).to eq({})
120
- end
121
- end
122
- end
@@ -1,34 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe "Articles management", type: :request, order: :defined do
4
- let(:valid_params) { { article: { title: "Doh", content: FFaker::Lorem.sentence } } }
5
-
6
- context "versioning disabled" do
7
- specify { expect(PaperTrail).not_to be_enabled }
8
-
9
- it "does not create a version" do
10
- expect(PaperTrail).to be_enabled_for_controller
11
- expect {
12
- post articles_path, params_wrapper(valid_params)
13
- }.not_to change(PaperTrail::Version, :count)
14
- end
15
-
16
- it "does not leak the state of the `PaperTrail.enabled_for_controller?` into the next test" do
17
- expect(PaperTrail).to be_enabled_for_controller
18
- end
19
- end
20
-
21
- with_versioning do
22
- let(:article) { Article.last }
23
-
24
- context "`current_user` method returns a `String`" do
25
- it "sets that value as the `whodunnit`" do
26
- expect {
27
- post articles_path, params_wrapper(valid_params)
28
- }.to change(PaperTrail::Version, :count).by(1)
29
- expect(article.title).to eq("Doh")
30
- expect(article.versions.last.whodunnit).to eq("foobar")
31
- end
32
- end
33
- end
34
- end
data/spec/spec_helper.rb DELETED
@@ -1,78 +0,0 @@
1
- require "pry"
2
-
3
- # This file is copied to spec/ when you run 'rails generate rspec:install'
4
- ENV["RAILS_ENV"] ||= "test"
5
- ENV["DB"] ||= "sqlite"
6
-
7
- unless File.exist?(File.expand_path("dummy_app/config/database.yml", __dir__))
8
- warn "WARNING: No database.yml detected for the dummy app, please run `rake prepare` first"
9
- end
10
-
11
- RSpec.configure do |config|
12
- config.expect_with :rspec do |expectations|
13
- expectations.include_chain_clauses_in_custom_matcher_descriptions = true
14
- end
15
-
16
- config.mock_with :rspec do |mocks|
17
- mocks.verify_partial_doubles = true
18
- end
19
-
20
- # Support for disabling `verify_partial_doubles` on specific examples.
21
- config.around(:each, verify_stubs: false) do |ex|
22
- config.mock_with :rspec do |mocks|
23
- mocks.verify_partial_doubles = false
24
- ex.run
25
- mocks.verify_partial_doubles = true
26
- end
27
- end
28
-
29
- config.filter_run :focus
30
- config.run_all_when_everything_filtered = true
31
- config.disable_monkey_patching!
32
- config.warnings = false
33
- if config.files_to_run.one?
34
- config.default_formatter = "doc"
35
- end
36
- config.order = :random
37
- Kernel.srand config.seed
38
- end
39
-
40
- def active_record_gem_version
41
- Gem::Version.new(ActiveRecord::VERSION::STRING)
42
- end
43
-
44
- # Wrap args in a hash to support the ActionController::TestCase and
45
- # ActionDispatch::Integration HTTP request method switch to keyword args
46
- # (see https://github.com/rails/rails/blob/master/actionpack/CHANGELOG.md)
47
- def params_wrapper(args)
48
- if defined?(::Rails) && active_record_gem_version >= Gem::Version.new("5.0.0.beta1")
49
- { params: args }
50
- else
51
- args
52
- end
53
- end
54
-
55
- require File.expand_path("../dummy_app/config/environment", __FILE__)
56
- require "rspec/rails"
57
- require "paper_trail/frameworks/rspec"
58
- require "ffaker"
59
- require "timecop"
60
-
61
- # Run any available migration
62
- ActiveRecord::Migrator.migrate File.expand_path("dummy_app/db/migrate/", __dir__)
63
-
64
- require "database_cleaner"
65
- DatabaseCleaner.strategy = :truncation
66
-
67
- RSpec.configure do |config|
68
- config.fixture_path = "#{::Rails.root}/spec/fixtures"
69
- config.use_transactional_fixtures = active_record_gem_version >= ::Gem::Version.new("5")
70
-
71
- # In rails < 5, some tests seem to require DatabaseCleaner-truncation.
72
- # Truncation is about three times slower than transaction rollback, so it'll
73
- # be nice when we can drop support for rails < 5.
74
- if active_record_gem_version < ::Gem::Version.new("5")
75
- config.before(:each) { DatabaseCleaner.start }
76
- config.after(:each) { DatabaseCleaner.clean }
77
- end
78
- end
@@ -1,54 +0,0 @@
1
- # This file copies the test database into locations for the `Foo` and `Bar` namespace,
2
- # then defines those namespaces, then establishes the sqlite3 connection for the namespaces
3
- # to simulate an application with multiple database connections.
4
-
5
- # Load database yaml to use
6
- configs = YAML.load_file("#{Rails.root}/config/database.yml")
7
-
8
- # If we are testing with sqlite make it quick
9
- db_directory = "#{Rails.root}/db"
10
-
11
- # Set up alternate databases
12
- if ENV["DB"] == "sqlite"
13
- FileUtils.cp "#{db_directory}/test.sqlite3", "#{db_directory}/test-foo.sqlite3"
14
- FileUtils.cp "#{db_directory}/test.sqlite3", "#{db_directory}/test-bar.sqlite3"
15
- end
16
-
17
- module Foo
18
- class Base < ActiveRecord::Base
19
- self.abstract_class = true
20
- end
21
-
22
- class Version < Base
23
- include PaperTrail::VersionConcern
24
- end
25
-
26
- class Document < Base
27
- has_paper_trail class_name: "Foo::Version"
28
- end
29
- end
30
-
31
- Foo::Base.configurations = configs
32
- Foo::Base.establish_connection(:foo)
33
- ActiveRecord::Base.establish_connection(:foo)
34
- ActiveRecord::Migrator.migrate File.expand_path("#{db_directory}/migrate/", __FILE__)
35
-
36
- module Bar
37
- class Base < ActiveRecord::Base
38
- self.abstract_class = true
39
- end
40
-
41
- class Version < Base
42
- include PaperTrail::VersionConcern
43
- end
44
-
45
- class Document < Base
46
- has_paper_trail class_name: "Bar::Version"
47
- end
48
- end
49
-
50
- Bar::Base.configurations = configs
51
- Bar::Base.establish_connection(:bar)
52
- ActiveRecord::Base.establish_connection(:bar)
53
-
54
- ActiveRecord::Migrator.migrate File.expand_path("#{db_directory}/migrate/", __FILE__)
@@ -1,13 +0,0 @@
1
- # This custom serializer excludes nil values
2
- module CustomJsonSerializer
3
- extend PaperTrail::Serializers::JSON
4
-
5
- def self.load(string)
6
- parsed_value = super(string)
7
- parsed_value.is_a?(Hash) ? parsed_value.reject { |k, v| k.blank? || v.blank? } : parsed_value
8
- end
9
-
10
- def self.dump(object)
11
- object.is_a?(Hash) ? super(object.reject { |_k, v| v.nil? }) : super
12
- end
13
- end