Galileo
view release on metacpan or search on metacpan
};
$t->websocket_ok( '/store/page' )
->send_ok({ json => $data })
->message_ok
->json_message_is( { success => true, message => 'Changes saved' } )
->finish_ok;
# see that the changes are reflected
$t->get_ok('/page/home')
->status_is(200)
->text_like( h1 => qr'New Home' )
->text_like( '#content p' => qr/$text/ )
->element_exists_not('title script')
->element_exists_not('.page-header script');
# save page without title (error)
my $data_notitle = {
name => 'notitle',
title => '',
html => '<p>Hmmm no title</p>',
md => 'Hmmm no title',
};
$t->websocket_ok( '/store/page' )
->send_ok({ json => $data_notitle })
->message_ok
->json_message_is( { success => false, message => 'Not saved! A title is required!' } )
->finish_ok;
};
subtest 'New Page' => sub {
# author request non-existant page => create new page
$t->get_ok('/page/doesntexist')
->status_is(200)
->text_like( '#wmd-input' => qr/Hello World/ )
->element_exists( '#wmd-preview' );
# save page
my $text = 'Today it snowed so â gets a new home';
my $data = {
name => 'snowâflake',
title => 'New Home for â',
html => "<p>$text</p>",
md => $text,
};
$t->websocket_ok( '/store/page' )
->send_ok({ json => $data })
->message_ok
->json_message_is( { success => true, message => 'Changes saved' } )
->finish_ok;
# see that the changes are reflected
$t->get_ok('/page/snowâflake')
->status_is(200)
->text_is( h1 => 'New Home for â' )
->text_like( '#content p' => qr/$text/ );
};
subtest 'Edit Main Navigation Menu' => sub {
my $title = 'About Galileo';
# check about page is in nav
$t->get_ok('/admin/menu')
->status_is(200)
->$trimmed_text_is( 'ul#main > li:nth-of-type(4) > a' => $title )
->text_is( '#list-active-pages > #pages-2 > span' => $title );
# remove about page from list
my $data = {
name => 'main',
list => [],
};
$t->websocket_ok('/store/menu')
->send_ok({ json => $data })
->message_ok
->json_message_is( '/success' => true )
->json_message_is( '/message' => 'Changes saved' )
->json_message_has( '/content' )
->finish_ok;
my @items = Mojo::DOM
->new(j($t->message->[1])->{content})
->find('#nav_menu li')
->map('all_text')
->each;
is_deeply \@items, ['Navigation', 'Home'];
# check that item is removed
$t->get_ok('/admin/menu')
->status_is(200)
->element_exists_not( 'ul#main > li:nth-of-type(3) > a' )
->text_is( '#list-inactive-pages > #pages-2 > span' => $title );
# put about page back
$data = {
name => 'main',
list => ['pages-3', 'pages-2'],
};
$t->websocket_ok('/store/menu')
->send_ok({ json => $data })
->message_ok
->json_message_is( '/success' => true )
->json_message_is( '/message' => 'Changes saved' )
->json_message_has( '/content' )
->finish_ok;
@items = ();
@items = Mojo::DOM
->new(j($t->message->[1])->{content})
->find('#nav_menu li')
->map('all_text')
->map(\&trim)
->each;
is_deeply \@items, ['Navigation', 'Home', 'Syntax', $title];
# check about page is back in nav (same as first test block)
$t->get_ok('/admin/menu')
->status_is(200)
->$trimmed_text_is( 'ul#main > li:nth-of-type(4) > a' => $title )
( run in 0.691 second using v1.01-cache-2.11-cpan-f56aa216473 )