summaryrefslogtreecommitdiff
path: root/test/models/page_test.rb
diff options
context:
space:
mode:
authorerdgeist <erdgeist@erdgeist.org>2026-08-20 17:52:44 +0200
committererdgeist <erdgeist@erdgeist.org>2026-08-20 17:52:44 +0200
commitc635b44d8139d0738d2caa6461c9946659d56c45 (patch)
tree75c1279aefd54d6a895c0408ff48f8959147cc80 /test/models/page_test.rb
parenta1794d3087e6cbd228f3641e7313815d8c59695f (diff)
Add tests for the redirect mechanics
Diffstat (limited to 'test/models/page_test.rb')
-rw-r--r--test/models/page_test.rb25
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
469end 494end