diff options
| author | erdgeist <erdgeist@erdgeist.org> | 2026-07-14 14:31:18 +0200 |
|---|---|---|
| committer | erdgeist <erdgeist@erdgeist.org> | 2026-07-14 14:31:18 +0200 |
| commit | cca0e57b21d506cd341b927984bcb68f0e461783 (patch) | |
| tree | 2d49cf1b678a3f5cf0fd20cd214b20524027ec50 /test/models/page_test.rb | |
| parent | 6b302d263ac66b521a743f1e8e1cc82997b54b5d (diff) | |
Retire wipe_draft! and find_or_create_draft from production code
Both had already lost their reason to exist as production API:
wipe_draft!'s one remaining callsite (nodes#show) was removed two
sessions ago, and find_or_create_draft had zero production callers
left at all -- confirmed by a fresh grep, not assumed -- every one of
its ~65 call sites was test setup, unrelated to what those tests
actually cover.
wipe_draft! is deleted outright, along with its two tests -- the
lock/draft/autosave cleanup it silently performed already has
explicit, always-visible manual equivalents (Unlock, Discard
Autosave, Destroy Draft), so nothing real is lost.
find_or_create_draft moves to test_helper.rb as a plain method on
ActiveSupport::TestCase, alongside the create_node_with_draft/
create_node_with_published_page helpers already living there --
extending the framework's own designated test-extension point
rather than reopening the Node model from test code. Its three
tests of real dispatch behavior (idempotency on repeat calls, and
raising when a second user contends for the lock) are kept, since
~65 other tests depend on this helper actually working correctly;
only the call syntax changed, from node.find_or_create_draft(user)
to find_or_create_draft(node, user).
Diffstat (limited to 'test/models/page_test.rb')
| -rw-r--r-- | test/models/page_test.rb | 52 |
1 files changed, 26 insertions, 26 deletions
diff --git a/test/models/page_test.rb b/test/models/page_test.rb index 24bc7c5..edb7c37 100644 --- a/test/models/page_test.rb +++ b/test/models/page_test.rb | |||
| @@ -13,15 +13,15 @@ class PageTest < ActiveSupport::TestCase | |||
| 13 | n2 = Node.root.children.create! :slug => "two" | 13 | n2 = Node.root.children.create! :slug => "two" |
| 14 | 14 | ||
| 15 | # get the drafts and assign a user to it | 15 | # get the drafts and assign a user to it |
| 16 | assert_not_nil d1 = n1.find_or_create_draft( @user1 ) | 16 | assert_not_nil d1 = find_or_create_draft(n1, @user1) |
| 17 | assert_not_nil d3 = n2.find_or_create_draft( @user1 ) | 17 | assert_not_nil d3 = find_or_create_draft(n2, @user1) |
| 18 | 18 | ||
| 19 | # tag and double publish so we have 4 pages tagged with "update" | 19 | # tag and double publish so we have 4 pages tagged with "update" |
| 20 | d1.tag_list = "update" | 20 | d1.tag_list = "update" |
| 21 | d1.save | 21 | d1.save |
| 22 | n1.publish_draft! | 22 | n1.publish_draft! |
| 23 | 23 | ||
| 24 | d2 = n1.find_or_create_draft @user1 | 24 | d2 = find_or_create_draft(n1, @user1) |
| 25 | n1.publish_draft! | 25 | n1.publish_draft! |
| 26 | 26 | ||
| 27 | 27 | ||
| @@ -29,7 +29,7 @@ class PageTest < ActiveSupport::TestCase | |||
| 29 | d3.save | 29 | d3.save |
| 30 | n2.publish_draft! | 30 | n2.publish_draft! |
| 31 | 31 | ||
| 32 | d4 = n2.find_or_create_draft @user1 | 32 | d4 = find_or_create_draft(n2, @user1) |
| 33 | n2.publish_draft! | 33 | n2.publish_draft! |
| 34 | 34 | ||
| 35 | # Set up two options hashes for the assertions | 35 | # Set up two options hashes for the assertions |
| @@ -49,7 +49,7 @@ class PageTest < ActiveSupport::TestCase | |||
| 49 | 49 | ||
| 50 | def test_before_save_rewrite_links_in_body | 50 | def test_before_save_rewrite_links_in_body |
| 51 | n = Node.root.children.create :slug => "link_test" | 51 | n = Node.root.children.create :slug => "link_test" |
| 52 | d = n.find_or_create_draft @user1 | 52 | d = find_or_create_draft(n, @user1) |
| 53 | 53 | ||
| 54 | before = "<h1>Hello World</h1>\n" \ | 54 | before = "<h1>Hello World</h1>\n" \ |
| 55 | "<a href=\"/club\" target=\"_blank\">Linkme</a>" | 55 | "<a href=\"/club\" target=\"_blank\">Linkme</a>" |
| @@ -67,7 +67,7 @@ class PageTest < ActiveSupport::TestCase | |||
| 67 | 67 | ||
| 68 | def test_before_save_rewrite_links_in_body_if_no_locale_prefix_present | 68 | def test_before_save_rewrite_links_in_body_if_no_locale_prefix_present |
| 69 | n = Node.root.children.create :slug => "link_test" | 69 | n = Node.root.children.create :slug => "link_test" |
| 70 | d = n.find_or_create_draft @user1 | 70 | d = find_or_create_draft(n, @user1) |
| 71 | 71 | ||
| 72 | before = "<h1>Hello World</h1>\n" \ | 72 | before = "<h1>Hello World</h1>\n" \ |
| 73 | "<a href=\"/de/club\" target=\"_blank\">Linkme</a>" | 73 | "<a href=\"/de/club\" target=\"_blank\">Linkme</a>" |
| @@ -85,7 +85,7 @@ class PageTest < ActiveSupport::TestCase | |||
| 85 | 85 | ||
| 86 | def test_before_save_rewrite_links_skips_on_external_links | 86 | def test_before_save_rewrite_links_skips_on_external_links |
| 87 | n = Node.root.children.create :slug => "link_test" | 87 | n = Node.root.children.create :slug => "link_test" |
| 88 | d = n.find_or_create_draft @user1 | 88 | d = find_or_create_draft(n, @user1) |
| 89 | 89 | ||
| 90 | before = "<h1>Hello World</h1>\n" \ | 90 | before = "<h1>Hello World</h1>\n" \ |
| 91 | "<a href=\"http://www.ccc.de/club\" target=\"_blank\">Linkme</a>" | 91 | "<a href=\"http://www.ccc.de/club\" target=\"_blank\">Linkme</a>" |
| @@ -145,7 +145,7 @@ class PageTest < ActiveSupport::TestCase | |||
| 145 | 145 | ||
| 146 | test "a page scheduled for future publication is not yet public even after being published" do | 146 | test "a page scheduled for future publication is not yet public even after being published" do |
| 147 | node = Node.root.children.create!(slug: "preview-scheduled-test") | 147 | node = Node.root.children.create!(slug: "preview-scheduled-test") |
| 148 | draft = node.find_or_create_draft(@user1) | 148 | draft = find_or_create_draft(node, @user1) |
| 149 | draft.title = "Scheduled test" | 149 | draft.title = "Scheduled test" |
| 150 | draft.published_at = 1.day.from_now | 150 | draft.published_at = 1.day.from_now |
| 151 | draft.save! | 151 | draft.save! |
| @@ -160,13 +160,13 @@ class PageTest < ActiveSupport::TestCase | |||
| 160 | 160 | ||
| 161 | test "a superseded page is no longer the head, even though it was once published" do | 161 | test "a superseded page is no longer the head, even though it was once published" do |
| 162 | node = Node.root.children.create!(slug: "preview-superseded-test") | 162 | node = Node.root.children.create!(slug: "preview-superseded-test") |
| 163 | first_draft = node.find_or_create_draft(@user1) | 163 | first_draft = find_or_create_draft(node, @user1) |
| 164 | first_draft.title = "First version" | 164 | first_draft.title = "First version" |
| 165 | first_draft.save! | 165 | first_draft.save! |
| 166 | first_token = first_draft.ensure_preview_token! | 166 | first_token = first_draft.ensure_preview_token! |
| 167 | node.publish_draft! | 167 | node.publish_draft! |
| 168 | 168 | ||
| 169 | second_draft = node.find_or_create_draft(@user1) | 169 | second_draft = find_or_create_draft(node, @user1) |
| 170 | second_draft.title = "Second version" | 170 | second_draft.title = "Second version" |
| 171 | second_draft.save! | 171 | second_draft.save! |
| 172 | node.publish_draft! | 172 | node.publish_draft! |
| @@ -229,12 +229,12 @@ class PageTest < ActiveSupport::TestCase | |||
| 229 | 229 | ||
| 230 | def test_diff_against_inline_keeps_tags_and_marks_only_the_changed_word | 230 | def test_diff_against_inline_keeps_tags_and_marks_only_the_changed_word |
| 231 | n = Node.root.children.create! :slug => "diff_against_test" | 231 | n = Node.root.children.create! :slug => "diff_against_test" |
| 232 | d = n.find_or_create_draft @user1 | 232 | d = find_or_create_draft(n, @user1) |
| 233 | d.title = "Old heading" | 233 | d.title = "Old heading" |
| 234 | d.save! | 234 | d.save! |
| 235 | n.publish_draft! | 235 | n.publish_draft! |
| 236 | 236 | ||
| 237 | d2 = n.find_or_create_draft @user1 | 237 | d2 = find_or_create_draft(n, @user1) |
| 238 | d2.title = "New heading" | 238 | d2.title = "New heading" |
| 239 | d2.save! | 239 | d2.save! |
| 240 | 240 | ||
| @@ -246,12 +246,12 @@ class PageTest < ActiveSupport::TestCase | |||
| 246 | 246 | ||
| 247 | def test_diff_against_side_by_side_returns_two_annotated_strings | 247 | def test_diff_against_side_by_side_returns_two_annotated_strings |
| 248 | n = Node.root.children.create! :slug => "diff_against_sbs_test" | 248 | n = Node.root.children.create! :slug => "diff_against_sbs_test" |
| 249 | d = n.find_or_create_draft @user1 | 249 | d = find_or_create_draft(n, @user1) |
| 250 | d.title = "Old heading" | 250 | d.title = "Old heading" |
| 251 | d.save! | 251 | d.save! |
| 252 | n.publish_draft! | 252 | n.publish_draft! |
| 253 | 253 | ||
| 254 | d2 = n.find_or_create_draft @user1 | 254 | d2 = find_or_create_draft(n, @user1) |
| 255 | d2.title = "New heading" | 255 | d2.title = "New heading" |
| 256 | d2.save! | 256 | d2.save! |
| 257 | 257 | ||
| @@ -263,12 +263,12 @@ class PageTest < ActiveSupport::TestCase | |||
| 263 | 263 | ||
| 264 | test "diff_against handles an inserted paragraph split without corrupting the document" do | 264 | test "diff_against handles an inserted paragraph split without corrupting the document" do |
| 265 | n = Node.root.children.create! :slug => "paragraph_split_test" | 265 | n = Node.root.children.create! :slug => "paragraph_split_test" |
| 266 | d = n.find_or_create_draft @user1 | 266 | d = find_or_create_draft(n, @user1) |
| 267 | d.body = "<p>Der Vortragsraum ist ab 19 Uhr geöffnet, der Zugang erfolgt über den Hinterhof.</p>" | 267 | d.body = "<p>Der Vortragsraum ist ab 19 Uhr geöffnet, der Zugang erfolgt über den Hinterhof.</p>" |
| 268 | d.save! | 268 | d.save! |
| 269 | n.publish_draft! | 269 | n.publish_draft! |
| 270 | 270 | ||
| 271 | d2 = n.find_or_create_draft @user1 | 271 | d2 = find_or_create_draft(n, @user1) |
| 272 | d2.body = "<p>Der Vortragsraum ist ab 19 Uhr geöffnet,</p>\n<p>der Zugang erfolgt über den Hinterhof.</p>" | 272 | d2.body = "<p>Der Vortragsraum ist ab 19 Uhr geöffnet,</p>\n<p>der Zugang erfolgt über den Hinterhof.</p>" |
| 273 | d2.save! | 273 | d2.save! |
| 274 | 274 | ||
| @@ -281,13 +281,13 @@ class PageTest < ActiveSupport::TestCase | |||
| 281 | 281 | ||
| 282 | test "diff_against reports tag and template changes" do | 282 | test "diff_against reports tag and template changes" do |
| 283 | n = Node.root.children.create! :slug => "field_diff_test" | 283 | n = Node.root.children.create! :slug => "field_diff_test" |
| 284 | d = n.find_or_create_draft @user1 | 284 | d = find_or_create_draft(n, @user1) |
| 285 | d.tag_list = "update" | 285 | d.tag_list = "update" |
| 286 | d.template_name = "standard_template" | 286 | d.template_name = "standard_template" |
| 287 | d.save! | 287 | d.save! |
| 288 | n.publish_draft! | 288 | n.publish_draft! |
| 289 | 289 | ||
| 290 | d2 = n.find_or_create_draft @user1 | 290 | d2 = find_or_create_draft(n, @user1) |
| 291 | d2.tag_list = "update, pressemitteilung" | 291 | d2.tag_list = "update, pressemitteilung" |
| 292 | d2.template_name = "title_only" | 292 | d2.template_name = "title_only" |
| 293 | d2.save! | 293 | d2.save! |
| @@ -303,7 +303,7 @@ class PageTest < ActiveSupport::TestCase | |||
| 303 | 303 | ||
| 304 | test "diff_against reports added and removed assets by filename" do | 304 | test "diff_against reports added and removed assets by filename" do |
| 305 | n = Node.root.children.create! :slug => "asset_diff_test" | 305 | n = Node.root.children.create! :slug => "asset_diff_test" |
| 306 | d = n.find_or_create_draft @user1 | 306 | d = find_or_create_draft(n, @user1) |
| 307 | d.save! | 307 | d.save! |
| 308 | n.publish_draft! | 308 | n.publish_draft! |
| 309 | 309 | ||
| @@ -311,7 +311,7 @@ class PageTest < ActiveSupport::TestCase | |||
| 311 | removed_asset = Asset.create!(:upload_file_name => "removed.pdf", :upload_content_type => "application/pdf", :upload_file_size => 1) | 311 | removed_asset = Asset.create!(:upload_file_name => "removed.pdf", :upload_content_type => "application/pdf", :upload_file_size => 1) |
| 312 | n.head.update_assets([kept_asset.id, removed_asset.id]) | 312 | n.head.update_assets([kept_asset.id, removed_asset.id]) |
| 313 | 313 | ||
| 314 | d2 = n.find_or_create_draft @user1 | 314 | d2 = find_or_create_draft(n, @user1) |
| 315 | added_asset = Asset.create!(:upload_file_name => "added.png", :upload_content_type => "image/png", :upload_file_size => 1) | 315 | added_asset = Asset.create!(:upload_file_name => "added.png", :upload_content_type => "image/png", :upload_file_size => 1) |
| 316 | d2.update_assets([kept_asset.id, added_asset.id]) | 316 | d2.update_assets([kept_asset.id, added_asset.id]) |
| 317 | d2.save! | 317 | d2.save! |
| @@ -324,12 +324,12 @@ class PageTest < ActiveSupport::TestCase | |||
| 324 | 324 | ||
| 325 | test "diff_against with an explicit locale compares that locale's own translation on each side" do | 325 | test "diff_against with an explicit locale compares that locale's own translation on each side" do |
| 326 | n = Node.root.children.create!(:slug => "diff_locale_test") | 326 | n = Node.root.children.create!(:slug => "diff_locale_test") |
| 327 | d = n.find_or_create_draft(@user1) | 327 | d = find_or_create_draft(n, @user1) |
| 328 | Globalize.with_locale(:en) { d.update!(:title => "Old English") } | 328 | Globalize.with_locale(:en) { d.update!(:title => "Old English") } |
| 329 | d.save! | 329 | d.save! |
| 330 | n.publish_draft! | 330 | n.publish_draft! |
| 331 | 331 | ||
| 332 | d2 = n.find_or_create_draft(@user1) | 332 | d2 = find_or_create_draft(n, @user1) |
| 333 | Globalize.with_locale(:en) { d2.update!(:title => "New English") } | 333 | Globalize.with_locale(:en) { d2.update!(:title => "New English") } |
| 334 | d2.save! | 334 | d2.save! |
| 335 | 335 | ||
| @@ -341,11 +341,11 @@ class PageTest < ActiveSupport::TestCase | |||
| 341 | 341 | ||
| 342 | test "diff_against with an explicit locale ignores content in other locales entirely" do | 342 | test "diff_against with an explicit locale ignores content in other locales entirely" do |
| 343 | n = Node.root.children.create!(:slug => "diff_locale_isolation_test") | 343 | n = Node.root.children.create!(:slug => "diff_locale_isolation_test") |
| 344 | d = n.find_or_create_draft(@user1) | 344 | d = find_or_create_draft(n, @user1) |
| 345 | d.save! | 345 | d.save! |
| 346 | n.publish_draft! | 346 | n.publish_draft! |
| 347 | 347 | ||
| 348 | d2 = n.find_or_create_draft(@user1) | 348 | d2 = find_or_create_draft(n, @user1) |
| 349 | Globalize.with_locale(:de) { d2.update!(:title => "Nur Deutsch geändert") } | 349 | Globalize.with_locale(:de) { d2.update!(:title => "Nur Deutsch geändert") } |
| 350 | d2.save! | 350 | d2.save! |
| 351 | 351 | ||
| @@ -356,11 +356,11 @@ class PageTest < ActiveSupport::TestCase | |||
| 356 | 356 | ||
| 357 | test "locale_diff_summary flags a locale that only exists on one side as changed" do | 357 | test "locale_diff_summary flags a locale that only exists on one side as changed" do |
| 358 | n = Node.root.children.create!(:slug => "diff_locale_summary_test") | 358 | n = Node.root.children.create!(:slug => "diff_locale_summary_test") |
| 359 | d = n.find_or_create_draft(@user1) | 359 | d = find_or_create_draft(n, @user1) |
| 360 | d.save! | 360 | d.save! |
| 361 | n.publish_draft! | 361 | n.publish_draft! |
| 362 | 362 | ||
| 363 | d2 = n.find_or_create_draft(@user1) | 363 | d2 = find_or_create_draft(n, @user1) |
| 364 | Globalize.with_locale(:en) { d2.update!(:title => "New English translation") } | 364 | Globalize.with_locale(:en) { d2.update!(:title => "New English translation") } |
| 365 | d2.save! | 365 | d2.save! |
| 366 | 366 | ||
