#!/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);