diff options
| author | erdgeist <erdgeist@erdgeist.org> | 2026-08-20 17:52:44 +0200 |
|---|---|---|
| committer | erdgeist <erdgeist@erdgeist.org> | 2026-08-20 17:52:44 +0200 |
| commit | c635b44d8139d0738d2caa6461c9946659d56c45 (patch) | |
| tree | 75c1279aefd54d6a895c0408ff48f8959147cc80 /test/models/page_test.rb | |
| parent | a1794d3087e6cbd228f3641e7313815d8c59695f (diff) | |
Add tests for the redirect mechanics
Diffstat (limited to 'test/models/page_test.rb')
| -rw-r--r-- | test/models/page_test.rb | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/test/models/page_test.rb b/test/models/page_test.rb index f095a7e1..85098ebd 100644 --- a/test/models/page_test.rb +++ b/test/models/page_test.rb | |||
| @@ -466,4 +466,29 @@ class PageTest < ActiveSupport::TestCase | |||
| 466 | :order_by => "slug" }).map { |p| p.node.slug } | 466 | :order_by => "slug" }).map { |p| p.node.slug } |
| 467 | assert_equal %w[alpha Mike zulu], names | 467 | assert_equal %w[alpha Mike zulu], names |
| 468 | end | 468 | end |
| 469 | |||
| 470 | test "redirect_target prefers an internal node over an external url" do | ||
| 471 | target = Node.root.children.create!(:slug => "redirect_precedence_target") | ||
| 472 | target.publish_draft! | ||
| 473 | |||
| 474 | node = Node.root.children.create!(:slug => "redirect_precedence") | ||
| 475 | page = node.draft | ||
| 476 | page.update!(:redirect => "temporary", :redirect_node_id => target.id, | ||
| 477 | :external_url => "https://example.org/") | ||
| 478 | |||
| 479 | resolved = page.redirect_target | ||
| 480 | assert resolved.internal? | ||
| 481 | assert_equal target, resolved.node | ||
| 482 | end | ||
| 483 | |||
| 484 | test "redirect_target is nil when the target has no head" do | ||
| 485 | target = Node.root.children.create!(:slug => "redirect_unpublished_target") | ||
| 486 | assert_nil target.head | ||
| 487 | |||
| 488 | node = Node.root.children.create!(:slug => "redirect_to_unpublished") | ||
| 489 | page = node.draft | ||
| 490 | page.update!(:redirect => "temporary", :redirect_node_id => target.id) | ||
| 491 | |||
| 492 | assert_nil page.redirect_target | ||
| 493 | end | ||
| 469 | end | 494 | end |
