From c635b44d8139d0738d2caa6461c9946659d56c45 Mon Sep 17 00:00:00 2001 From: erdgeist Date: Thu, 20 Aug 2026 17:52:44 +0200 Subject: Add tests for the redirect mechanics --- test/models/page_test.rb | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'test/models/page_test.rb') 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 :order_by => "slug" }).map { |p| p.node.slug } assert_equal %w[alpha Mike zulu], names end + + test "redirect_target prefers an internal node over an external url" do + target = Node.root.children.create!(:slug => "redirect_precedence_target") + target.publish_draft! + + node = Node.root.children.create!(:slug => "redirect_precedence") + page = node.draft + page.update!(:redirect => "temporary", :redirect_node_id => target.id, + :external_url => "https://example.org/") + + resolved = page.redirect_target + assert resolved.internal? + assert_equal target, resolved.node + end + + test "redirect_target is nil when the target has no head" do + target = Node.root.children.create!(:slug => "redirect_unpublished_target") + assert_nil target.head + + node = Node.root.children.create!(:slug => "redirect_to_unpublished") + page = node.draft + page.update!(:redirect => "temporary", :redirect_node_id => target.id) + + assert_nil page.redirect_target + end end -- cgit v1.3