paper_trail 5.2.3 → 11.0.0

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 (198) hide show
  1. checksums.yaml +5 -5
  2. data/lib/generators/paper_trail/install/USAGE +3 -0
  3. data/lib/generators/paper_trail/install/install_generator.rb +75 -0
  4. data/lib/generators/paper_trail/{templates/add_object_changes_to_versions.rb → install/templates/add_object_changes_to_versions.rb.erb} +1 -1
  5. data/lib/generators/paper_trail/install/templates/create_versions.rb.erb +36 -0
  6. data/lib/generators/paper_trail/migration_generator.rb +38 -0
  7. data/lib/generators/paper_trail/update_item_subtype/USAGE +4 -0
  8. data/lib/generators/paper_trail/update_item_subtype/templates/update_versions_for_item_subtype.rb.erb +85 -0
  9. data/lib/generators/paper_trail/update_item_subtype/update_item_subtype_generator.rb +17 -0
  10. data/lib/paper_trail.rb +82 -130
  11. data/lib/paper_trail/attribute_serializers/attribute_serializer_factory.rb +27 -0
  12. data/lib/paper_trail/attribute_serializers/cast_attribute_serializer.rb +15 -44
  13. data/lib/paper_trail/attribute_serializers/object_attribute.rb +2 -0
  14. data/lib/paper_trail/attribute_serializers/object_changes_attribute.rb +2 -0
  15. data/lib/paper_trail/cleaner.rb +3 -1
  16. data/lib/paper_trail/compatibility.rb +51 -0
  17. data/lib/paper_trail/config.rb +11 -49
  18. data/lib/paper_trail/events/base.rb +323 -0
  19. data/lib/paper_trail/events/create.rb +32 -0
  20. data/lib/paper_trail/events/destroy.rb +42 -0
  21. data/lib/paper_trail/events/update.rb +60 -0
  22. data/lib/paper_trail/frameworks/active_record.rb +2 -1
  23. data/lib/paper_trail/frameworks/active_record/models/paper_trail/version.rb +8 -3
  24. data/lib/paper_trail/frameworks/cucumber.rb +5 -3
  25. data/lib/paper_trail/frameworks/rails.rb +2 -0
  26. data/lib/paper_trail/frameworks/rails/controller.rb +33 -43
  27. data/lib/paper_trail/frameworks/rails/engine.rb +34 -1
  28. data/lib/paper_trail/frameworks/rspec.rb +17 -4
  29. data/lib/paper_trail/frameworks/rspec/helpers.rb +2 -0
  30. data/lib/paper_trail/has_paper_trail.rb +22 -310
  31. data/lib/paper_trail/model_config.rb +157 -109
  32. data/lib/paper_trail/queries/versions/where_object.rb +65 -0
  33. data/lib/paper_trail/queries/versions/where_object_changes.rb +75 -0
  34. data/lib/paper_trail/record_history.rb +3 -9
  35. data/lib/paper_trail/record_trail.rb +169 -319
  36. data/lib/paper_trail/reifier.rb +53 -374
  37. data/lib/paper_trail/request.rb +166 -0
  38. data/lib/paper_trail/serializers/json.rb +9 -10
  39. data/lib/paper_trail/serializers/yaml.rb +15 -28
  40. data/lib/paper_trail/type_serializers/postgres_array_serializer.rb +48 -0
  41. data/lib/paper_trail/version_concern.rb +160 -155
  42. data/lib/paper_trail/version_number.rb +12 -4
  43. metadata +77 -372
  44. data/.github/CONTRIBUTING.md +0 -109
  45. data/.github/ISSUE_TEMPLATE.md +0 -13
  46. data/.gitignore +0 -23
  47. data/.rspec +0 -2
  48. data/.rubocop.yml +0 -99
  49. data/.rubocop_todo.yml +0 -22
  50. data/.travis.yml +0 -41
  51. data/Appraisals +0 -38
  52. data/CHANGELOG.md +0 -560
  53. data/Gemfile +0 -2
  54. data/MIT-LICENSE +0 -20
  55. data/README.md +0 -1654
  56. data/Rakefile +0 -30
  57. data/doc/bug_report_template.rb +0 -69
  58. data/doc/warning_about_not_setting_whodunnit.md +0 -32
  59. data/gemfiles/ar3.gemfile +0 -19
  60. data/gemfiles/ar4.gemfile +0 -8
  61. data/gemfiles/ar5.gemfile +0 -9
  62. data/lib/generators/paper_trail/USAGE +0 -2
  63. data/lib/generators/paper_trail/default_initializer.rb +0 -0
  64. data/lib/generators/paper_trail/install_generator.rb +0 -57
  65. data/lib/generators/paper_trail/templates/add_transaction_id_column_to_versions.rb +0 -13
  66. data/lib/generators/paper_trail/templates/create_version_associations.rb +0 -22
  67. data/lib/generators/paper_trail/templates/create_versions.rb +0 -80
  68. data/lib/paper_trail/attribute_serializers/legacy_active_record_shim.rb +0 -48
  69. data/lib/paper_trail/frameworks/active_record/models/paper_trail/version_association.rb +0 -11
  70. data/lib/paper_trail/frameworks/sinatra.rb +0 -40
  71. data/lib/paper_trail/version_association_concern.rb +0 -17
  72. data/paper_trail.gemspec +0 -56
  73. data/spec/generators/install_generator_spec.rb +0 -66
  74. data/spec/generators/paper_trail/templates/create_versions_spec.rb +0 -51
  75. data/spec/models/animal_spec.rb +0 -36
  76. data/spec/models/boolit_spec.rb +0 -48
  77. data/spec/models/callback_modifier_spec.rb +0 -96
  78. data/spec/models/car_spec.rb +0 -13
  79. data/spec/models/custom_primary_key_record_spec.rb +0 -18
  80. data/spec/models/fluxor_spec.rb +0 -17
  81. data/spec/models/gadget_spec.rb +0 -68
  82. data/spec/models/joined_version_spec.rb +0 -47
  83. data/spec/models/json_version_spec.rb +0 -102
  84. data/spec/models/kitchen/banana_spec.rb +0 -14
  85. data/spec/models/not_on_update_spec.rb +0 -22
  86. data/spec/models/post_with_status_spec.rb +0 -50
  87. data/spec/models/skipper_spec.rb +0 -46
  88. data/spec/models/thing_spec.rb +0 -11
  89. data/spec/models/truck_spec.rb +0 -5
  90. data/spec/models/vehicle_spec.rb +0 -5
  91. data/spec/models/version_spec.rb +0 -272
  92. data/spec/models/widget_spec.rb +0 -343
  93. data/spec/modules/paper_trail_spec.rb +0 -27
  94. data/spec/modules/version_concern_spec.rb +0 -31
  95. data/spec/modules/version_number_spec.rb +0 -43
  96. data/spec/paper_trail/config_spec.rb +0 -33
  97. data/spec/paper_trail_spec.rb +0 -79
  98. data/spec/rails_helper.rb +0 -34
  99. data/spec/requests/articles_spec.rb +0 -34
  100. data/spec/spec_helper.rb +0 -114
  101. data/spec/support/alt_db_init.rb +0 -54
  102. data/test/custom_json_serializer.rb +0 -13
  103. data/test/dummy/Rakefile +0 -7
  104. data/test/dummy/app/controllers/application_controller.rb +0 -33
  105. data/test/dummy/app/controllers/articles_controller.rb +0 -20
  106. data/test/dummy/app/controllers/test_controller.rb +0 -5
  107. data/test/dummy/app/controllers/widgets_controller.rb +0 -32
  108. data/test/dummy/app/helpers/application_helper.rb +0 -2
  109. data/test/dummy/app/models/animal.rb +0 -6
  110. data/test/dummy/app/models/article.rb +0 -24
  111. data/test/dummy/app/models/authorship.rb +0 -5
  112. data/test/dummy/app/models/bar_habtm.rb +0 -4
  113. data/test/dummy/app/models/book.rb +0 -9
  114. data/test/dummy/app/models/boolit.rb +0 -4
  115. data/test/dummy/app/models/callback_modifier.rb +0 -45
  116. data/test/dummy/app/models/car.rb +0 -3
  117. data/test/dummy/app/models/cat.rb +0 -2
  118. data/test/dummy/app/models/chapter.rb +0 -9
  119. data/test/dummy/app/models/citation.rb +0 -5
  120. data/test/dummy/app/models/custom_primary_key_record.rb +0 -13
  121. data/test/dummy/app/models/customer.rb +0 -4
  122. data/test/dummy/app/models/document.rb +0 -4
  123. data/test/dummy/app/models/dog.rb +0 -2
  124. data/test/dummy/app/models/editor.rb +0 -4
  125. data/test/dummy/app/models/editorship.rb +0 -5
  126. data/test/dummy/app/models/elephant.rb +0 -3
  127. data/test/dummy/app/models/fluxor.rb +0 -3
  128. data/test/dummy/app/models/foo_habtm.rb +0 -5
  129. data/test/dummy/app/models/foo_widget.rb +0 -2
  130. data/test/dummy/app/models/fruit.rb +0 -5
  131. data/test/dummy/app/models/gadget.rb +0 -3
  132. data/test/dummy/app/models/kitchen/banana.rb +0 -5
  133. data/test/dummy/app/models/legacy_widget.rb +0 -4
  134. data/test/dummy/app/models/line_item.rb +0 -4
  135. data/test/dummy/app/models/not_on_update.rb +0 -4
  136. data/test/dummy/app/models/order.rb +0 -5
  137. data/test/dummy/app/models/paragraph.rb +0 -5
  138. data/test/dummy/app/models/person.rb +0 -38
  139. data/test/dummy/app/models/post.rb +0 -3
  140. data/test/dummy/app/models/post_with_status.rb +0 -8
  141. data/test/dummy/app/models/protected_widget.rb +0 -3
  142. data/test/dummy/app/models/quotation.rb +0 -5
  143. data/test/dummy/app/models/section.rb +0 -6
  144. data/test/dummy/app/models/skipper.rb +0 -6
  145. data/test/dummy/app/models/song.rb +0 -41
  146. data/test/dummy/app/models/thing.rb +0 -3
  147. data/test/dummy/app/models/translation.rb +0 -4
  148. data/test/dummy/app/models/truck.rb +0 -4
  149. data/test/dummy/app/models/vehicle.rb +0 -4
  150. data/test/dummy/app/models/whatchamajigger.rb +0 -4
  151. data/test/dummy/app/models/widget.rb +0 -16
  152. data/test/dummy/app/models/wotsit.rb +0 -8
  153. data/test/dummy/app/versions/custom_primary_key_record_version.rb +0 -3
  154. data/test/dummy/app/versions/joined_version.rb +0 -6
  155. data/test/dummy/app/versions/json_version.rb +0 -3
  156. data/test/dummy/app/versions/kitchen/banana_version.rb +0 -5
  157. data/test/dummy/app/versions/post_version.rb +0 -3
  158. data/test/dummy/app/views/layouts/application.html.erb +0 -14
  159. data/test/dummy/config.ru +0 -4
  160. data/test/dummy/config/application.rb +0 -80
  161. data/test/dummy/config/boot.rb +0 -10
  162. data/test/dummy/config/database.mysql.yml +0 -19
  163. data/test/dummy/config/database.postgres.yml +0 -15
  164. data/test/dummy/config/database.sqlite.yml +0 -15
  165. data/test/dummy/config/environment.rb +0 -5
  166. data/test/dummy/config/environments/development.rb +0 -41
  167. data/test/dummy/config/environments/production.rb +0 -74
  168. data/test/dummy/config/environments/test.rb +0 -51
  169. data/test/dummy/config/initializers/backtrace_silencers.rb +0 -9
  170. data/test/dummy/config/initializers/inflections.rb +0 -10
  171. data/test/dummy/config/initializers/mime_types.rb +0 -5
  172. data/test/dummy/config/initializers/paper_trail.rb +0 -9
  173. data/test/dummy/config/initializers/secret_token.rb +0 -9
  174. data/test/dummy/config/initializers/session_store.rb +0 -8
  175. data/test/dummy/config/locales/en.yml +0 -5
  176. data/test/dummy/config/routes.rb +0 -4
  177. data/test/dummy/db/migrate/20110208155312_set_up_test_tables.rb +0 -361
  178. data/test/dummy/db/schema.rb +0 -288
  179. data/test/dummy/script/rails +0 -8
  180. data/test/functional/controller_test.rb +0 -90
  181. data/test/functional/enabled_for_controller_test.rb +0 -28
  182. data/test/functional/modular_sinatra_test.rb +0 -46
  183. data/test/functional/sinatra_test.rb +0 -51
  184. data/test/functional/thread_safety_test.rb +0 -46
  185. data/test/test_helper.rb +0 -127
  186. data/test/time_travel_helper.rb +0 -1
  187. data/test/unit/associations_test.rb +0 -1016
  188. data/test/unit/cleaner_test.rb +0 -188
  189. data/test/unit/inheritance_column_test.rb +0 -43
  190. data/test/unit/model_test.rb +0 -1489
  191. data/test/unit/protected_attrs_test.rb +0 -52
  192. data/test/unit/serializer_test.rb +0 -119
  193. data/test/unit/serializers/json_test.rb +0 -95
  194. data/test/unit/serializers/mixin_json_test.rb +0 -37
  195. data/test/unit/serializers/mixin_yaml_test.rb +0 -53
  196. data/test/unit/serializers/yaml_test.rb +0 -54
  197. data/test/unit/timestamp_test.rb +0 -41
  198. data/test/unit/version_test.rb +0 -119
@@ -1,288 +0,0 @@
1
- # encoding: UTF-8
2
- # This file is auto-generated from the current state of the database. Instead
3
- # of editing this file, please use the migrations feature of Active Record to
4
- # incrementally modify your database, and then regenerate this schema definition.
5
- #
6
- # Note that this schema.rb definition is the authoritative source for your
7
- # database schema. If you need to create the application database on another
8
- # system, you should be using db:schema:load, not running all the migrations
9
- # from scratch. The latter is a flawed and unsustainable approach (the more migrations
10
- # you'll amass, the slower it'll run and the greater likelihood for issues).
11
- #
12
- # It's strongly recommended that you check this file into your version control system.
13
-
14
- ActiveRecord::Schema.define(version: 20110208155312) do
15
-
16
- create_table "animals", force: :cascade do |t|
17
- t.string "name"
18
- t.string "species"
19
- end
20
-
21
- create_table "articles", force: :cascade do |t|
22
- t.string "title"
23
- t.string "content"
24
- t.string "abstract"
25
- t.string "file_upload"
26
- end
27
-
28
- create_table "authorships", force: :cascade do |t|
29
- t.integer "book_id"
30
- t.integer "author_id"
31
- end
32
-
33
- create_table "banana_versions", force: :cascade do |t|
34
- t.string "item_type", null: false
35
- t.integer "item_id", null: false
36
- t.string "event", null: false
37
- t.string "whodunnit"
38
- t.text "object"
39
- t.datetime "created_at"
40
- end
41
-
42
- add_index "banana_versions", ["item_type", "item_id"], name: "index_banana_versions_on_item_type_and_item_id"
43
-
44
- create_table "bananas", force: :cascade do |t|
45
- t.datetime "created_at"
46
- t.datetime "updated_at"
47
- end
48
-
49
- create_table "bar_habtms", force: :cascade do |t|
50
- t.string "name"
51
- end
52
-
53
- create_table "bar_habtms_foo_habtms", id: false, force: :cascade do |t|
54
- t.integer "foo_habtm_id"
55
- t.integer "bar_habtm_id"
56
- end
57
-
58
- add_index "bar_habtms_foo_habtms", ["bar_habtm_id"], name: "index_bar_habtms_foo_habtms_on_bar_habtm_id"
59
- add_index "bar_habtms_foo_habtms", ["foo_habtm_id"], name: "index_bar_habtms_foo_habtms_on_foo_habtm_id"
60
-
61
- create_table "books", force: :cascade do |t|
62
- t.string "title"
63
- end
64
-
65
- create_table "boolits", force: :cascade do |t|
66
- t.string "name"
67
- t.boolean "scoped", default: true
68
- end
69
-
70
- create_table "callback_modifiers", force: :cascade do |t|
71
- t.string "some_content"
72
- t.boolean "deleted", default: false
73
- end
74
-
75
- create_table "chapters", force: :cascade do |t|
76
- t.string "name"
77
- end
78
-
79
- create_table "citations", force: :cascade do |t|
80
- t.integer "quotation_id"
81
- end
82
-
83
- create_table "custom_primary_key_record_versions", force: :cascade do |t|
84
- t.string "item_type", null: false
85
- t.string "item_id", null: false
86
- t.string "event", null: false
87
- t.string "whodunnit"
88
- t.text "object"
89
- t.datetime "created_at"
90
- end
91
-
92
- add_index "custom_primary_key_record_versions", ["item_type", "item_id"], name: "idx_cust_pk_item"
93
-
94
- create_table "custom_primary_key_records", id: false, force: :cascade do |t|
95
- t.string "uuid"
96
- t.string "name"
97
- t.datetime "created_at"
98
- t.datetime "updated_at"
99
- end
100
-
101
- create_table "customers", force: :cascade do |t|
102
- t.string "name"
103
- end
104
-
105
- create_table "documents", force: :cascade do |t|
106
- t.string "name"
107
- end
108
-
109
- create_table "editors", force: :cascade do |t|
110
- t.string "name"
111
- end
112
-
113
- create_table "editorships", force: :cascade do |t|
114
- t.integer "book_id"
115
- t.integer "editor_id"
116
- end
117
-
118
- create_table "fluxors", force: :cascade do |t|
119
- t.integer "widget_id"
120
- t.string "name"
121
- end
122
-
123
- create_table "foo_habtms", force: :cascade do |t|
124
- t.string "name"
125
- end
126
-
127
- create_table "fruits", force: :cascade do |t|
128
- t.string "name"
129
- t.string "color"
130
- end
131
-
132
- create_table "gadgets", force: :cascade do |t|
133
- t.string "name"
134
- t.string "brand"
135
- t.datetime "created_at"
136
- t.datetime "updated_at"
137
- end
138
-
139
- create_table "legacy_widgets", force: :cascade do |t|
140
- t.string "name"
141
- t.integer "version"
142
- end
143
-
144
- create_table "line_items", force: :cascade do |t|
145
- t.integer "order_id"
146
- t.string "product"
147
- end
148
-
149
- create_table "not_on_updates", force: :cascade do |t|
150
- t.datetime "created_at"
151
- t.datetime "updated_at"
152
- end
153
-
154
- create_table "orders", force: :cascade do |t|
155
- t.integer "customer_id"
156
- t.string "order_date"
157
- end
158
-
159
- create_table "paragraphs", force: :cascade do |t|
160
- t.integer "section_id"
161
- t.string "name"
162
- end
163
-
164
- create_table "people", force: :cascade do |t|
165
- t.string "name"
166
- t.string "time_zone"
167
- end
168
-
169
- create_table "post_versions", force: :cascade do |t|
170
- t.string "item_type", null: false
171
- t.integer "item_id", null: false
172
- t.string "event", null: false
173
- t.string "whodunnit"
174
- t.text "object"
175
- t.datetime "created_at"
176
- t.string "ip"
177
- t.string "user_agent"
178
- end
179
-
180
- add_index "post_versions", ["item_type", "item_id"], name: "index_post_versions_on_item_type_and_item_id"
181
-
182
- create_table "post_with_statuses", force: :cascade do |t|
183
- t.integer "status"
184
- t.datetime "created_at", null: false
185
- t.datetime "updated_at", null: false
186
- end
187
-
188
- create_table "posts", force: :cascade do |t|
189
- t.string "title"
190
- t.string "content"
191
- end
192
-
193
- create_table "quotations", force: :cascade do |t|
194
- t.integer "chapter_id"
195
- end
196
-
197
- create_table "sections", force: :cascade do |t|
198
- t.integer "chapter_id"
199
- t.string "name"
200
- end
201
-
202
- create_table "skippers", force: :cascade do |t|
203
- t.string "name"
204
- t.datetime "another_timestamp"
205
- t.datetime "created_at"
206
- t.datetime "updated_at"
207
- end
208
-
209
- create_table "songs", force: :cascade do |t|
210
- t.integer "length"
211
- end
212
-
213
- create_table "things", force: :cascade do |t|
214
- t.string "name"
215
- end
216
-
217
- create_table "translations", force: :cascade do |t|
218
- t.string "headline"
219
- t.string "content"
220
- t.string "language_code"
221
- t.string "type"
222
- end
223
-
224
- create_table "vehicles", force: :cascade do |t|
225
- t.string "name", null: false
226
- t.string "type", null: false
227
- t.datetime "created_at", null: false
228
- t.datetime "updated_at", null: false
229
- end
230
-
231
- create_table "version_associations", force: :cascade do |t|
232
- t.integer "version_id"
233
- t.string "foreign_key_name", null: false
234
- t.integer "foreign_key_id"
235
- end
236
-
237
- add_index "version_associations", ["foreign_key_name", "foreign_key_id"], name: "index_version_associations_on_foreign_key"
238
- add_index "version_associations", ["version_id"], name: "index_version_associations_on_version_id"
239
-
240
- create_table "versions", force: :cascade do |t|
241
- t.string "item_type", null: false
242
- t.integer "item_id", null: false
243
- t.string "event", null: false
244
- t.string "whodunnit"
245
- t.text "object", limit: 1073741823
246
- t.text "object_changes", limit: 1073741823
247
- t.integer "transaction_id"
248
- t.datetime "created_at"
249
- t.integer "answer"
250
- t.string "action"
251
- t.string "question"
252
- t.integer "article_id"
253
- t.string "title"
254
- t.string "ip"
255
- t.string "user_agent"
256
- end
257
-
258
- add_index "versions", ["item_type", "item_id"], name: "index_versions_on_item_type_and_item_id"
259
-
260
- create_table "whatchamajiggers", force: :cascade do |t|
261
- t.string "owner_type"
262
- t.integer "owner_id"
263
- t.string "name"
264
- end
265
-
266
- create_table "widgets", force: :cascade do |t|
267
- t.string "name"
268
- t.text "a_text"
269
- t.integer "an_integer"
270
- t.float "a_float"
271
- t.decimal "a_decimal", precision: 6, scale: 4
272
- t.datetime "a_datetime"
273
- t.time "a_time"
274
- t.date "a_date"
275
- t.boolean "a_boolean"
276
- t.string "type"
277
- t.datetime "created_at"
278
- t.datetime "updated_at"
279
- end
280
-
281
- create_table "wotsits", force: :cascade do |t|
282
- t.integer "widget_id"
283
- t.string "name"
284
- t.datetime "created_at"
285
- t.datetime "updated_at"
286
- end
287
-
288
- end
@@ -1,8 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- # This command will automatically be run when you run "rails" with Rails 3 gems
4
- # installed from the root of your application.
5
-
6
- APP_PATH = File.expand_path("../../config/application", __FILE__)
7
- require File.expand_path("../../config/boot", __FILE__)
8
- require "rails/commands"
@@ -1,90 +0,0 @@
1
- require "test_helper"
2
-
3
- class ControllerTest < ActionController::TestCase
4
- tests WidgetsController
5
-
6
- setup do
7
- @request.env["REMOTE_ADDR"] = "127.0.0.1"
8
- end
9
-
10
- # Mimick what RequestStore will do outside of the test env, since it is
11
- # middleware, and doesn't get executed in controller / request specs
12
- teardown do
13
- RequestStore.store[:paper_trail] = nil
14
- end
15
-
16
- test "disable on create" do
17
- @request.env["HTTP_USER_AGENT"] = "Disable User-Agent"
18
- post :create, params_wrapper(widget: { name: "Flugel" })
19
- assert_equal 0, assigns(:widget).versions.length
20
- end
21
-
22
- test "disable on update" do
23
- @request.env["HTTP_USER_AGENT"] = "Disable User-Agent"
24
- post :create, params_wrapper(widget: { name: "Flugel" })
25
- w = assigns(:widget)
26
- assert_equal 0, w.versions.length
27
- put :update, params_wrapper(id: w.id, widget: { name: "Bugle" })
28
- widget = assigns(:widget)
29
- assert_equal 0, widget.versions.length
30
- end
31
-
32
- test "disable on destroy" do
33
- @request.env["HTTP_USER_AGENT"] = "Disable User-Agent"
34
- post :create, params_wrapper(widget: { name: "Flugel" })
35
- w = assigns(:widget)
36
- assert_equal 0, w.versions.length
37
- delete :destroy, params_wrapper(id: w.id)
38
- assert_equal 0, PaperTrail::Version.with_item_keys("Widget", w.id).size
39
- end
40
-
41
- test "create" do
42
- post :create, params_wrapper(widget: { name: "Flugel" })
43
- widget = assigns(:widget)
44
- assert_equal 1, widget.versions.length
45
- assert_equal 153, widget.versions.last.whodunnit.to_i
46
- assert_equal "127.0.0.1", widget.versions.last.ip
47
- assert_equal "Rails Testing", widget.versions.last.user_agent
48
- end
49
-
50
- test "update" do
51
- w = Widget.create name: "Duvel"
52
- assert_equal 1, w.versions.length
53
- put :update, params_wrapper(id: w.id, widget: { name: "Bugle" })
54
- widget = assigns(:widget)
55
- assert_equal 2, widget.versions.length
56
- assert_equal 153, widget.versions.last.whodunnit.to_i
57
- assert_equal "127.0.0.1", widget.versions.last.ip
58
- assert_equal "Rails Testing", widget.versions.last.user_agent
59
- end
60
-
61
- test "destroy" do
62
- w = Widget.create name: "Roundel"
63
- assert_equal 1, w.versions.length
64
- delete :destroy, params_wrapper(id: w.id)
65
- widget = assigns(:widget)
66
- assert_equal 2, widget.versions.length
67
- assert_equal "127.0.0.1", widget.versions.last.ip
68
- assert_equal "Rails Testing", widget.versions.last.user_agent
69
- assert_equal 153, widget.versions.last.whodunnit.to_i
70
- end
71
-
72
- test "controller metadata methods should get evaluated if PT enabled for controller" do
73
- @request.env["HTTP_USER_AGENT"] = "User-Agent"
74
- post :create, params_wrapper(widget: { name: "Flugel" })
75
- assert PaperTrail.enabled_for_controller?
76
- assert_equal 153, PaperTrail.whodunnit
77
- assert PaperTrail.controller_info.present?
78
- assert PaperTrail.controller_info.keys.include?(:ip)
79
- assert PaperTrail.controller_info.keys.include?(:user_agent)
80
- end
81
-
82
- test "controller metadata methods should not get evaluated if PT disabled for controller" do
83
- @request.env["HTTP_USER_AGENT"] = "Disable User-Agent"
84
- post :create, params_wrapper(widget: { name: "Flugel" })
85
- assert_equal 0, assigns(:widget).versions.length
86
- assert !PaperTrail.enabled_for_controller?
87
- assert PaperTrail.whodunnit.nil?
88
- assert PaperTrail.controller_info.nil?
89
- end
90
- end
@@ -1,28 +0,0 @@
1
- require "test_helper"
2
-
3
- class EnabledForControllerTest < ActionController::TestCase
4
- tests ArticlesController
5
-
6
- context "`PaperTrail.enabled? == true`" do
7
- should "enabled_for_controller?.should == true" do
8
- assert PaperTrail.enabled?
9
- post :create, params_wrapper(article: { title: "Doh", content: FFaker::Lorem.sentence })
10
- assert_not_nil assigns(:article)
11
- assert PaperTrail.enabled_for_controller?
12
- assert_equal 1, assigns(:article).versions.length
13
- end
14
- end
15
-
16
- context "`PaperTrail.enabled? == false`" do
17
- setup { PaperTrail.enabled = false }
18
-
19
- should "enabled_for_controller?.should == false" do
20
- assert !PaperTrail.enabled?
21
- post :create, params_wrapper(article: { title: "Doh", content: FFaker::Lorem.sentence })
22
- assert !PaperTrail.enabled_for_controller?
23
- assert_equal 0, assigns(:article).versions.length
24
- end
25
-
26
- teardown { PaperTrail.enabled = true }
27
- end
28
- end
@@ -1,46 +0,0 @@
1
- # PaperTrail is not compatible with sinatra 2 yet. Contributions welcome.
2
- if Gem::Version.new(Rack.release) < Gem::Version.new("2.0.0.alpha")
3
- require "test_helper"
4
- require "sinatra/base"
5
-
6
- # --- Tests for modular `Sinatra::Base` style ----
7
- class BaseApp < Sinatra::Base
8
- configs = YAML.load_file(File.expand_path("../../dummy/config/database.yml", __FILE__))
9
- ActiveRecord::Base.configurations = configs
10
- ActiveRecord::Base.establish_connection(:test)
11
- register PaperTrail::Sinatra
12
-
13
- get "/test" do
14
- Widget.create!(name: "foo")
15
- "Hello"
16
- end
17
-
18
- def current_user
19
- @current_user ||= OpenStruct.new(id: "foobar")
20
- end
21
- end
22
-
23
- class ModularSinatraTest < ActionDispatch::IntegrationTest
24
- include Rack::Test::Methods
25
-
26
- def app
27
- @app ||= BaseApp
28
- end
29
-
30
- test "baseline" do
31
- assert_nil Widget.create.versions.first.whodunnit
32
- end
33
-
34
- context "`PaperTrail::Sinatra` in a `Sinatra::Base` application" do
35
- should "sets the `user_for_paper_trail` from the `current_user` method" do
36
- get "/test"
37
- assert_equal "Hello", last_response.body
38
- widget = Widget.last
39
- assert_not_nil widget
40
- assert_equal "foo", widget.name
41
- assert_equal 1, widget.versions.size
42
- assert_equal "foobar", widget.versions.first.whodunnit
43
- end
44
- end
45
- end
46
- end