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,13 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe Car, type: :model do
4
- it { is_expected.to be_versioned }
5
-
6
- describe "changeset", versioning: true do
7
- it "has the expected keys (see issue 738)" do
8
- car = Car.create!(name: "Alice")
9
- car.update_attributes(name: "Bob")
10
- assert_includes car.versions.last.changeset.keys, "name"
11
- end
12
- end
13
- end
@@ -1,18 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe CustomPrimaryKeyRecord, type: :model do
4
- it { is_expected.to be_versioned }
5
-
6
- describe "#versions" do
7
- it "returns instances of CustomPrimaryKeyRecordVersion", versioning: true do
8
- custom_primary_key_record = described_class.create!
9
- custom_primary_key_record.update_attributes!(name: "bob")
10
- version = custom_primary_key_record.versions.last
11
- expect(version).to be_a(CustomPrimaryKeyRecordVersion)
12
- version_from_db = CustomPrimaryKeyRecordVersion.last
13
- expect(version_from_db.reify).to be_a(CustomPrimaryKeyRecord)
14
- custom_primary_key_record.destroy
15
- expect(CustomPrimaryKeyRecordVersion.last.reify).to be_a(CustomPrimaryKeyRecord)
16
- end
17
- end
18
- end
@@ -1,57 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe Document, type: :model, versioning: true do
4
- describe "have_a_version_with matcher" do
5
- it "works with custom versions association" do
6
- document = Document.create!(name: "Foo")
7
- document.update_attributes!(name: "Bar")
8
- expect(document).to have_a_version_with(name: "Foo")
9
- end
10
- end
11
-
12
- describe "have_a_version_with_changes matcher" do
13
- it "works with custom versions association" do
14
- document = Document.create!(name: "Foo")
15
- document.update_attributes!(name: "Bar")
16
- expect(document).to have_a_version_with_changes(name: "Bar")
17
- end
18
- end
19
-
20
- describe "#paper_trail.next_version" do
21
- it "returns the expected document" do
22
- doc = Document.create
23
- doc.update_attributes(name: "Doc 1")
24
- reified = doc.paper_trail_versions.last.reify
25
- expect(doc.name).to(eq(reified.paper_trail.next_version.name))
26
- end
27
- end
28
-
29
- describe "#paper_trail.previous_version" do
30
- it "returns the expected document" do
31
- doc = Document.create
32
- doc.update_attributes(name: "Doc 1")
33
- doc.update_attributes(name: "Doc 2")
34
- expect(doc.paper_trail_versions.length).to(eq(3))
35
- expect(doc.paper_trail.previous_version.name).to(eq("Doc 1"))
36
- end
37
- end
38
-
39
- describe "#paper_trail_versions" do
40
- it "returns the expected version records" do
41
- doc = Document.create
42
- doc.update_attributes(name: "Doc 1")
43
- expect(doc.paper_trail_versions.length).to(eq(2))
44
- expect(doc.paper_trail_versions.map(&:event)).to(
45
- match_array(%w[create update])
46
- )
47
- end
48
- end
49
-
50
- describe "#versions" do
51
- it "does not respond to versions method" do
52
- doc = Document.create
53
- doc.update_attributes(name: "Doc 1")
54
- expect(doc).not_to respond_to(:versions)
55
- end
56
- end
57
- end
@@ -1,63 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe Gadget, type: :model do
4
- it { is_expected.to be_versioned }
5
-
6
- let(:gadget) { Gadget.create!(name: "Wrench", brand: "Acme") }
7
-
8
- describe "updates", versioning: true do
9
- it "generates a version for updates to `name` attribute" do
10
- expect { gadget.update_attribute(:name, "Hammer") }.to(change { gadget.versions.size }.by(1))
11
- end
12
-
13
- it "ignores for updates to `brand` attribute" do
14
- expect { gadget.update_attribute(:brand, "Stanley") }.not_to(change { gadget.versions.size })
15
- end
16
-
17
- it "still generates a version when only the `updated_at` attribute is updated" do
18
- # Plus 1 second because MySQL lacks sub-second resolution
19
- expect {
20
- gadget.update_attribute(:updated_at, Time.now + 1)
21
- }.to(change { gadget.versions.size }.by(1))
22
- end
23
- end
24
-
25
- describe "#changed_notably?", versioning: true do
26
- context "new record" do
27
- it "returns true" do
28
- g = Gadget.new(created_at: Time.now)
29
- expect(g.paper_trail.changed_notably?).to eq(true)
30
- end
31
- end
32
-
33
- context "persisted record without update timestamps" do
34
- it "only acknowledges non-ignored attrs" do
35
- subject = Gadget.create!(created_at: Time.now)
36
- subject.name = "Wrench"
37
- expect(subject.paper_trail.changed_notably?).to be true
38
- end
39
-
40
- it "does not acknowledge ignored attr (brand)" do
41
- subject = Gadget.create!(created_at: Time.now)
42
- subject.brand = "Acme"
43
- expect(subject.paper_trail.changed_notably?).to be false
44
- end
45
- end
46
-
47
- context "persisted record with update timestamps" do
48
- it "only acknowledges non-ignored attrs" do
49
- subject = Gadget.create!(created_at: Time.now)
50
- subject.name = "Wrench"
51
- subject.updated_at = Time.now
52
- expect(subject.paper_trail.changed_notably?).to be true
53
- end
54
-
55
- it "does not acknowledge ignored attrs and timestamps only" do
56
- subject = Gadget.create!(created_at: Time.now)
57
- subject.brand = "Acme"
58
- subject.updated_at = Time.now
59
- expect(subject.paper_trail.changed_notably?).to be false
60
- end
61
- end
62
- end
63
- end
@@ -1,41 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe JoinedVersion, type: :model, versioning: true do
4
- let(:widget) { Widget.create!(name: FFaker::Name.name) }
5
- let(:version) { JoinedVersion.first }
6
-
7
- describe "default_scope" do
8
- it { expect(JoinedVersion.default_scopes).not_to be_empty }
9
- end
10
-
11
- describe "VersionConcern::ClassMethods" do
12
- before { widget } # persist a widget
13
-
14
- describe "#subsequent" do
15
- it "does not raise error when there is a default_scope that joins" do
16
- JoinedVersion.subsequent(version).first
17
- end
18
- end
19
-
20
- describe "#preceding" do
21
- it "does not raise error when there is a default scope that joins" do
22
- JoinedVersion.preceding(version).first
23
- end
24
- end
25
-
26
- describe "#between" do
27
- it "does not raise error when there is a default scope that joins" do
28
- JoinedVersion.between(Time.now, 1.minute.from_now).first
29
- end
30
- end
31
- end
32
-
33
- describe "#index" do
34
- it { is_expected.to respond_to(:index) }
35
-
36
- it "does not raise error when there is a default scope that joins" do
37
- widget # persist a widget
38
- version.index
39
- end
40
- end
41
- end
@@ -1,101 +0,0 @@
1
- require "spec_helper"
2
-
3
- # The `json_versions` table tests postgres' `json` data type. So, that
4
- # table is only created when testing against postgres and ActiveRecord >= 4.
5
- if JsonVersion.table_exists?
6
- RSpec.describe JsonVersion, type: :model do
7
- it "includes the VersionConcern module" do
8
- expect(described_class).to include(PaperTrail::VersionConcern)
9
- end
10
-
11
- describe "Methods" do
12
- describe "Class" do
13
- describe "#where_object" do
14
- it { expect(described_class).to respond_to(:where_object) }
15
-
16
- it "escapes values" do
17
- f = Fruit.create(name: "Bobby")
18
- expect(
19
- f.
20
- versions.
21
- where_object(name: "Robert'; DROP TABLE Students;--").
22
- count
23
- ).to eq(0)
24
- end
25
-
26
- context "invalid arguments" do
27
- it "raises an error" do
28
- expect { described_class.where_object(:foo) }.to raise_error(ArgumentError)
29
- expect { described_class.where_object([]) }.to raise_error(ArgumentError)
30
- end
31
- end
32
-
33
- context "valid arguments", versioning: true do
34
- let(:fruit_names) { %w[apple orange lemon banana lime coconut strawberry blueberry] }
35
- let(:fruit) { Fruit.new }
36
- let(:name) { "pomegranate" }
37
- let(:color) { FFaker::Color.name }
38
-
39
- before do
40
- fruit.update_attributes!(name: name)
41
- fruit.update_attributes!(name: fruit_names.sample, color: color)
42
- fruit.update_attributes!(name: fruit_names.sample, color: FFaker::Color.name)
43
- end
44
-
45
- it "locates versions according to their `object` contents" do
46
- expect(described_class.where_object(name: name)).to eq([fruit.versions[1]])
47
- expect(described_class.where_object(color: color)).to eq([fruit.versions[2]])
48
- end
49
- end
50
- end
51
-
52
- describe "#where_object_changes" do
53
- it { expect(described_class).to respond_to(:where_object_changes) }
54
-
55
- it "escapes values" do
56
- f = Fruit.create(name: "Bobby")
57
- expect(
58
- f.
59
- versions.
60
- where_object_changes(name: "Robert'; DROP TABLE Students;--").
61
- count
62
- ).to eq(0)
63
- end
64
-
65
- context "invalid arguments" do
66
- it "raises an error" do
67
- expect { described_class.where_object_changes(:foo) }.to raise_error(ArgumentError)
68
- expect { described_class.where_object_changes([]) }.to raise_error(ArgumentError)
69
- end
70
- end
71
-
72
- context "valid arguments", versioning: true do
73
- let(:color) { %w[red green] }
74
- let(:fruit) { Fruit.create!(name: name[0]) }
75
- let(:name) { %w[banana kiwi mango] }
76
-
77
- before do
78
- fruit.update_attributes!(name: name[1], color: color[0])
79
- fruit.update_attributes!(name: name[2], color: color[1])
80
- end
81
-
82
- it "finds versions according to their `object_changes` contents" do
83
- expect(
84
- fruit.versions.where_object_changes(name: name[0])
85
- ).to match_array(fruit.versions[0..1])
86
- expect(
87
- fruit.versions.where_object_changes(color: color[0])
88
- ).to match_array(fruit.versions[1..2])
89
- end
90
-
91
- it "finds versions with multiple attributes changed" do
92
- expect(
93
- fruit.versions.where_object_changes(color: color[0], name: name[0])
94
- ).to match_array([fruit.versions[1]])
95
- end
96
- end
97
- end
98
- end
99
- end
100
- end
101
- end
@@ -1,14 +0,0 @@
1
- require "spec_helper"
2
-
3
- module Kitchen
4
- RSpec.describe Banana, type: :model do
5
- it { is_expected.to be_versioned }
6
-
7
- describe "#versions" do
8
- it "returns instances of Kitchen::BananaVersion", versioning: true do
9
- banana = described_class.create!
10
- expect(banana.versions.first).to be_a(Kitchen::BananaVersion)
11
- end
12
- end
13
- end
14
- end
@@ -1,40 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe LegacyWidget, type: :model, versioning: true do
4
- describe "#custom_version" do
5
- it "knows which version it came from" do
6
- widget = described_class.create(name: "foo", version: 2)
7
- %w[bar baz].each { |name| widget.update_attributes(name: name) }
8
- version = widget.versions.last
9
- reified = version.reify
10
- expect(reified.custom_version).to(eq(version))
11
- end
12
- end
13
-
14
- describe "#previous_version" do
15
- it "return its previous self" do
16
- widget = described_class.create(name: "foo", version: 2)
17
- %w[bar baz].each { |name| widget.update_attributes(name: name) }
18
- version = widget.versions.last
19
- reified = version.reify
20
- expect(reified.paper_trail.previous_version).to(eq(reified.versions[-2].reify))
21
- end
22
- end
23
-
24
- describe "#update_attributes" do
25
- it "does not create a PT version record because the updated column is ignored" do
26
- described_class.create.update_attributes(version: 1)
27
- expect(PaperTrail::Version.count).to(eq(1))
28
- end
29
- end
30
-
31
- describe "#version" do
32
- it "is a normal attribute and has nothing to do with PT" do
33
- widget = described_class.create(name: "foo", version: 2)
34
- expect(widget.versions.size).to(eq(1))
35
- expect(widget.version).to(eq(2))
36
- widget.update_attributes(version: 3)
37
- expect(widget.version).to(eq(3))
38
- end
39
- end
40
- end
@@ -1,22 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe NotOnUpdate, type: :model do
4
- describe "#touch_with_version", versioning: true do
5
- let!(:record) { described_class.create! }
6
-
7
- it "creates a version, regardless" do
8
- expect { record.paper_trail.touch_with_version }.to change {
9
- PaperTrail::Version.count
10
- }.by(+1)
11
- end
12
-
13
- it "increments the `:updated_at` timestamp" do
14
- before = record.updated_at
15
- # Travel 1 second because MySQL lacks sub-second resolution
16
- Timecop.travel(1) do
17
- record.paper_trail.touch_with_version
18
- end
19
- expect(record.updated_at).to be > before
20
- end
21
- end
22
- end
@@ -1,27 +0,0 @@
1
- require "spec_helper"
2
- require_dependency "on/create"
3
-
4
- module On
5
- RSpec.describe Create, type: :model, versioning: true do
6
- describe "#versions" do
7
- it "only have a version for the create event" do
8
- record = described_class.create(name: "Alice")
9
- record.update_attributes(name: "blah")
10
- record.destroy
11
- expect(record.versions.length).to(eq(1))
12
- expect(record.versions.last.event).to(eq("create"))
13
- end
14
- end
15
-
16
- context "#paper_trail_event" do
17
- it "rembembers the custom event name" do
18
- record = described_class.new
19
- record.paper_trail_event = "banana"
20
- record.update_attributes(name: "blah")
21
- record.destroy
22
- expect(record.versions.length).to(eq(1))
23
- expect(record.versions.last.event).to(eq("banana"))
24
- end
25
- end
26
- end
27
- end
@@ -1,27 +0,0 @@
1
- require "spec_helper"
2
- require_dependency "on/destroy"
3
-
4
- module On
5
- RSpec.describe Destroy, type: :model, versioning: true do
6
- describe "#versions" do
7
- it "only creates one version record, for the destroy event" do
8
- record = described_class.create(name: "Alice")
9
- record.update_attributes(name: "blah")
10
- record.destroy
11
- expect(record.versions.length).to(eq(1))
12
- expect(record.versions.last.event).to(eq("destroy"))
13
- end
14
- end
15
-
16
- context "#paper_trail_event" do
17
- it "rembembers the custom event name" do
18
- record = described_class.create(name: "Alice")
19
- record.paper_trail_event = "banana"
20
- record.update_attributes(name: "blah")
21
- record.destroy
22
- expect(record.versions.length).to(eq(1))
23
- expect(record.versions.last.event).to(eq("banana"))
24
- end
25
- end
26
- end
27
- end
@@ -1,30 +0,0 @@
1
- require "spec_helper"
2
- require_dependency "on/empty_array"
3
-
4
- module On
5
- RSpec.describe EmptyArray, type: :model, versioning: true do
6
- describe "#create" do
7
- it "does not create any version records" do
8
- record = described_class.create(name: "Alice")
9
- expect(record.versions.length).to(eq(0))
10
- end
11
- end
12
-
13
- describe "#touch_with_version" do
14
- it "creates a version record" do
15
- record = described_class.create(name: "Alice")
16
- record.paper_trail.touch_with_version
17
- expect(record.versions.length).to(eq(1))
18
- expect(record.versions.first.event).to(eq("update"))
19
- end
20
- end
21
-
22
- describe "#update_attributes" do
23
- it "does not create any version records" do
24
- record = described_class.create(name: "Alice")
25
- record.update_attributes(name: "blah")
26
- expect(record.versions.length).to(eq(0))
27
- end
28
- end
29
- end
30
- end