The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;
use Test::More;
use Test::Exception;
use HTTP::Request::Common;
use URI;
use FindBin qw/$Bin/;
use lib "$Bin/lib";

use Catalyst::Test qw/TestApp/;

my $db_file = "$Bin/lib/TestApp/testdbic.db";
unlink $db_file if -e $db_file;

use_ok('TestApp::Schema');

my $schema;
lives_ok( sub { $schema = TestApp::Schema->connect("DBI:SQLite:$db_file") },
    'Connect' );
ok($schema);
lives_ok( sub { $schema->deploy }, 'deploy schema' );

{
    my $path = '/artists/create';

    my ( $res, $c );
    $res = request($path);
    ok( $res->is_success, "GET $path returns HTTP 200" );
    like( $res->content, '/form.*Picture/s', 'GET requests returns a form' );

    ( $res, $c ) = ctx_request(
        POST $path,
        Content_Type => 'form-data',
        Content      => [
            name            => 'simit',
            password        => 'asdf',
            password_repeat => 'asdf',
            picture => ["$Bin/07_merge_upload_params.t"],    # a file upload
        ]
    );
    ok( $res->is_redirect, "POST $path returns HTTP 302" );
    my $uri = URI->new( $res->header('location') );
    is( $uri->path, '/artists/list', "redirect to '/artists/list'" );
    is( ref $c->req->params->{picture},
        'Catalyst::Request::Upload',
        'upload params are merged into req params' );
}

done_testing;