summaryrefslogtreecommitdiff
path: root/rt/t/web/walk.t
diff options
context:
space:
mode:
authorIvan Kohler <ivan@freeside.biz>2012-04-24 11:35:56 -0700
committerIvan Kohler <ivan@freeside.biz>2012-04-24 11:35:56 -0700
commit6587f6ba7d047ddc1686c080090afe7d53365bd4 (patch)
treeec77342668e8865aca669c9b4736e84e3077b523 /rt/t/web/walk.t
parent47153aae5c2fc00316654e7277fccd45f72ff611 (diff)
first pass RT4 merge, RT#13852
Diffstat (limited to 'rt/t/web/walk.t')
-rw-r--r--rt/t/web/walk.t92
1 files changed, 92 insertions, 0 deletions
diff --git a/rt/t/web/walk.t b/rt/t/web/walk.t
new file mode 100644
index 000000000..34fab1476
--- /dev/null
+++ b/rt/t/web/walk.t
@@ -0,0 +1,92 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use RT::Test;
+use HTML::TreeBuilder;
+
+my ( $baseurl, $m ) = RT::Test->started_ok;
+
+ok( $m->login( 'root' => 'password' ), 'login as root' );
+
+my %viewed = ( '/NoAuth/Logout.html' => 1 ); # in case logout
+
+my $user = RT::User->new($RT::SystemUser);
+$user->Load('root');
+ok( $user->id, 'loaded root' );
+
+my $queue = RT::Queue->new($RT::SystemUser);
+$queue->Load('General');
+ok( $queue->id, 'loaded General queue' );
+
+my $group = RT::Group->new($RT::SystemUser);
+ok( $group->CreateUserDefinedGroup( Name => 'group_foo' ) );
+my $cf = RT::CustomField->new($RT::SystemUser);
+ok(
+ $cf->Create(
+ Name => 'cf_foo',
+ Type => 'Freeform',
+ LookupType => 'RT::Queue-RT::Ticket',
+ )
+);
+ok( $cf->id, 'created cf_foo' );
+
+my $class = RT::Class->new($RT::SystemUser);
+ok( $class->Create( Name => 'class_foo' ) );
+ok( $class->id, 'created class_foo' );
+
+# to make search have results
+my $open_ticket = RT::Test->create_ticket(
+ Subject => 'ticket_foo',
+ Queue => 1,
+);
+
+my $resolved_ticket = RT::Test->create_ticket(
+ Subject => 'ticket_bar',
+ Status => 'resolved',
+ Queue => 1,
+);
+
+my @links = (
+ '/',
+ '/Admin/Users/Modify.html?id=' . $user->id,
+ '/Admin/Groups/Modify.html?id=' . $group->id,
+ '/Admin/Queues/Modify.html?id=' . $queue->id,
+ '/Admin/CustomFields/Modify.html?id=' . $cf->id,
+ '/Admin/Global/Scrip.html?id=1',
+ '/Admin/Global/Template.html?Template=1',
+ '/Admin/Articles/Classes/Modify.html?id=' . $class->id,
+ '/Search/Build.html?Query=id<10',
+ '/Ticket/Display.html?id=' . $open_ticket->id,
+ '/Ticket/Display.html?id=' . $resolved_ticket->id,
+);
+
+for my $link (@links) {
+ test_page($m, $link);
+}
+
+$m->get_ok('/NoAuth/Logout.html');
+
+sub test_page {
+ my $m = shift;
+ my $link = shift;
+ $m->get_ok( $link, $link );
+ $m->no_warnings_ok($link);
+
+ my $tree = HTML::TreeBuilder->new();
+ $tree->parse( $m->content );
+ $tree->elementify;
+ my ($top_menu) = $tree->look_down( id => 'main-navigation' );
+ my ($page_menu) = $tree->look_down( id => 'page-navigation' );
+
+ my (@links) =
+ grep { !$viewed{$_}++ && /^[^#]/ }
+ map { $_->attr('href') || () } ( $top_menu ? $top_menu->find('a') : () ),
+ ( $page_menu ? $page_menu->find('a') : () );
+
+ for my $link (@links) {
+ test_page($m, $link);
+ }
+}
+