Smolder
view release on metacpan or search on metacpan
t/dev_prefs.t view on Meta::CPAN
use strict;
use warnings;
use Test::More;
use Smolder::TestScript;
use Smolder::TestData qw(
base_url
is_smolder_running
logout
create_developer
delete_developers
create_preference
delete_preferences
create_project
delete_projects
db_field_value
);
use Smolder::DB::ProjectDeveloper;
use Smolder::Mech;
if (is_smolder_running) {
plan(tests => 56);
} else {
plan(skip_all => 'Smolder not running');
}
my $mech = Smolder::Mech->new();
my $url = base_url() . '/developer_prefs';
my $pw = 's3cr3t';
my $dev = create_developer(password => $pw);
my $proj1 = create_project();
my $proj2 = create_project();
my %data = (
email_type => 'link',
email_freq => 'on_fail',
email_limit => 10,
);
# add this $dev to $proj1 and $proj2
my $proj_dev1 = Smolder::DB::ProjectDeveloper->create(
{developer => $dev, project => $proj1, preference => create_preference});
my $proj_dev2 = Smolder::DB::ProjectDeveloper->create(
{developer => $dev, project => $proj2, preference => create_preference});
END {
$proj_dev1->delete() if $proj_dev1;
$proj_dev2->delete() if $proj_dev2;
delete_developers();
delete_projects();
delete_preferences();
}
# 1
use_ok('Smolder::Control::Developer::Prefs');
# 2..6
# login as a developer
$mech->get($url);
#is($mech->status, 401, 'auth required'); # can we control HTTP codes in C::A::Server?
$mech->content_contains("You shouldn't be here");
$mech->content_lacks('Welcome');
$mech->login(username => $dev->username, password => $pw);
ok($mech->success);
$mech->get_ok($url);
$mech->content_contains('Preferences');
# 7..10
# show
{
$mech->get_ok($url . '/show');
$mech->content_contains('My Defaults');
$mech->content_contains($proj1->name);
$mech->content_contains($proj2->name);
}
# 11..32
# update_pref
{
# change my default pref
# invalid form
my $request = HTTP::Request::Common::POST(
$url . '/update_pref/',
{
id => $dev->preference->id,
email_type => 'stuff',
email_freq => 'more stuff',
( run in 1.010 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )