Dancer-Plugin-SimpleCRUD

 view release on metacpan or  search on metacpan

t/lib/TestAppBase.pm  view on Meta::CPAN

package t::lib::TestAppBase;

use Dancer ':syntax';
use Dancer::Logger;
use Dancer::Test;

use Test::More import => ['!pass'];
use Test::Differences;
use HTML::TreeBuilder;

use Moo;
has 'dbh'      => (is=>'rw', required=>1);
has 'provider' => (is=>'rw', required=>1); # "Database" or "DBIC"
has 'trap'     => (is=>'rw', default=>sub { Dancer::Logger::Capture->trap } );

BEGIN {
    eval { use Dancer::Plugin::SimpleCRUD; };
    if ($@) { die "Can't load Dancer::Plugin::SimpleCRUD. Bail out!\n"; }
}


sub setup_database_and_crud {
    my $self = shift;

    my $password = "{SSHA}LfvBweDp3ieVPRjAUeWikwpaF6NoiTSK";     # password is 'tester'
    my @sql = (
        #q/drop table if exists users/,
        qq/create table users (id INTEGER, username VARCHAR, password VARCHAR)/,
        qq/insert into users values (0, 'nobody', 'nobodyhasaplaintextpassword!')/,
        qq/insert into users values (1, 'sukria', '$password')/,
        qq/insert into users values (2, 'bigpresh', '$password')/,
        qq/insert into users values (3, 'badger', '$password')/,
        qq/insert into users values (4, 'bodger', '$password')/,
        qq/insert into users values (5, 'mousey', '$password')/,
        qq/insert into users values (6, 'mystery2', '$password')/,
        qq/insert into users values (7, 'mystery1', '$password')/,

        qq/create table roles (id INTEGER, role VARCHAR)/,
        qq/insert into roles values (1, 'superadmin')/,

        qq/create table user_roles (user_id INTEGER, role_id INTEGER)/,
        qq/insert into user_roles values (1, 1)/,
    );

    $self->dbh->do($_) for @sql;

    my %p = ( 
        db_connection_provider => $self->provider,
        record_title => "A",
        db_table => 'users' 
    );
    my $extra_custom_column = { name => 'extra', raw_column => 'id', transform => sub { "Extra: $_[0]" }, column_class=>"classhere" };
    my $id_custom_column    = { name => 'id', raw_column => 'id', transform => sub { "Hello, id: $_[0]" }, column_class=>"classhere" };
    my $username_custom_column = { name => "username", raw_column=>"username", transform => sub { "Username: $_[0]" }, column_class=>"classhere" };


    # now set up our simple_crud interfaces
    simple_crud( %p, prefix => '/users', editable => 0 );
    simple_crud( %p, prefix => '/users_auth', editable => 1, auth => { require_login => 1 } );

    simple_crud( %p, prefix => '/users_editable', );
    simple_crud( %p, prefix => '/users_editable_not_addable', editable => 1, addable => 0);

    simple_crud( %p, prefix => '/users_custom_columns', editable => 0, 
                    custom_columns => [ $extra_custom_column, $id_custom_column ] 
                );

    # override display of 'username' column



( run in 1.374 second using v1.01-cache-2.11-cpan-2398b32b56e )