#!/usr/bin/env perl
use strict;
use warnings;
# Disable IPv6, epoll and kqueue
BEGIN { $ENV{MOJO_NO_IPV6} = $ENV{MOJO_POLL} = 1 }
use Test::More;
use lib '../lib';
eval "use DBD::AnyData";
plan skip_all => 'DBD::AnyData required for this test!' if $@;
plan tests => 29;
# testing code starts here
use Mojolicious::Lite;
use Test::Mojo;
use DBI;
use Try::Tiny;
plugin 'any_data', {
load_data => {
users => [
['id_user', 'user_name'],
[1, 'Alex'],
[2, 'John'],
]
},
helper => 'dbh',
};
get '/get-user' => sub {
my $self = shift;
my $user_name = $self->dbh->selectrow_array(qq{
select user_name
from users
where
id_user = ?
}, undef, 1);
$self->render(text => ( $user_name eq 'Alex' ) ? 'ok' : 'failed');
};
get '/make-func' => sub {
my $self = shift;
$self->dbh->func('ages', 'ARRAY', [
['age', 'id_user'],
[28, 1],
[32, 2],
],
'ad_import'
);
$self->render(text => 'ok');
};
get '/make-func-error' => sub {
my $self = shift;
$self->dbh->func('ages', 'ARRAY', [
['age', 'id_user'],
[28, 1],
[32, 2],
],
'ad_import'
);
$self->dbh->func('ages', 'ARRAY', [
['age', 'id_user'],
[28, 1],
[32, 2],
],
'ad_import'
);
$self->render(text => 'ok');
};
get '/get-age' => sub {
my $self = shift;
my $age = $self->dbh->selectrow_array(qq{
select age
from ages
join users using (id_user)
where
user_name = ?
}, undef, 'Alex');
$self->render(text => ($age == 28) ? 'ok' : 'failed');
};
# With recently added helper any_data
get '/version' => sub {
my $self = shift;
$self->render( text => $self->any_data->version );
};
get '/any_data/load_data' => sub {
my $self = shift;
$self->any_data->load_data({
cars => [
['id', 'model'],
[ '1', 'Honda'],
],
});
my $model = $self->dbh->selectrow_array(qq{
select model from cars where id = ?
}, undef, 1);
$self->render( text => $model );
};
get '/any_data/load_data_2' => sub {
my $self = shift;
$self->any_data->load_data({
cars => [
['id', 'model'],
[ '1', 'Honda'],
],
});
$self->any_data->load_data({
cars => [
['id', 'model'],
[ '1', 'Honda'],
],
});
my $model = $self->dbh->selectrow_array(qq{
select model from cars where id = ?
}, undef, 1);
$self->render( text => $model );
};
get '/any_data/load_data_3/:id' => sub {
my $self = shift;
$self->any_data->load_data('data.conf');
my $id = $self->stash('id');
my $cd_title = $self->dbh->selectrow_array('select title from cd where id = ?', undef, $id);
$self->render( text => $cd_title );
};
get '/any_data/func' => sub {
my $self = shift;
$self->any_data->func('table1', 'ARRAY', [
['col1', 'col2'],
['28', '1'],
['32', '2'],
],
'ad_import' );
my $age = $self->dbh->selectrow_array('select col1 from table1 where col2 = ?', undef, 1);
$self->render( text => $age );
};
my $t = Test::Mojo->new();
$t->get_ok('/get-user')->status_is(200)->content_is('ok');
$t->get_ok('/make-func')->status_is(200)->content_is('ok');
$t->get_ok('/get-age')->status_is(200)->content_is('ok');
$t->get_ok('/version')->status_is(200)->content_is('1.20');
$t->get_ok('/any_data/load_data')->status_is(200)->content_is('Honda');
$t->get_ok('/make-func-error')->status_is(500);
$t->get_ok('/any_data/load_data_2')->status_is(200)->content_is('Honda');
$t->get_ok('/any_data/load_data_3/1')->status_is(200)->content_is('Load');
$t->get_ok('/any_data/load_data_3/2')->status_is(200)->content_is('Death Magnetic');
$t->get_ok('/any_data/func')->status_is(200)->content_is(28);