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 )