paper_trail 7.1.0 → 7.1.1

Sign up to get free protection for your applications and to get access to all the features.
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