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 )