Aniki

 view release on metacpan or  search on metacpan

author/benchmark.pl  view on Meta::CPAN

use strict;
use warnings;
use utf8;
use feature qw/say/;

use lib 'lib';
use SampleDbic::Schema;
use SampleAniki::DB;
use SampleAniki::DB::Schema;
use SampleTeng::DB;
use Benchmark qw/cmpthese timethese/;

my $aniki = SampleAniki::DB->new(connect_info => ["dbi:SQLite:dbname=:memory:", "", "", { ShowErrorStatement => 1 }]);
my $dbic = SampleDbic::Schema->connect('dbi:SQLite:dbname=:memory:');
my $teng = SampleTeng::DB->new({ connect_info => ["dbi:SQLite:dbname=:memory:", "", ""], sql_builder_args => { strict => 1 } });

eg/synopsis.pl  view on Meta::CPAN

use 5.014002;
use File::Basename qw/dirname/;
use File::Spec;
use lib File::Spec->catdir(dirname(__FILE__), 'lib');
use MyProj::DB;
use MyProj::DB::Schema;
#use DBIx::QueryLog;

my $db = MyProj::DB->new(connect_info => ["dbi:SQLite:dbname=:memory:", "", ""]);
$db->execute($_) for split /;/, MyProj::DB::Schema->output;

my $author_id = $db->insert_and_fetch_id(author => { name => 'songmu' });

$db->insert(module => {

t/01_new.t  view on Meta::CPAN

use strict;
use warnings;
use utf8;

use Test::More;

use File::Spec;
use lib File::Spec->catfile('t', 'lib');
use t::DB;

t::DB->run_on_all_databases(sub {
    my $class = shift;

    my $db = $class->new();
    isa_ok $db, 'Aniki';
});

subtest 'no connect info' => sub {

t/02_insert.t  view on Meta::CPAN

use strict;
use warnings;
use utf8;

use Test::More;

use File::Spec;
use lib File::Spec->catfile('t', 'lib');
use t::Util;

run_on_database {
    db->insert(author => { name => 'MOZNION' });
    is db->select(author => {}, { limit => 1 })->count, 1, 'created.';
};

done_testing();

t/03_insert_and_fetch_id.t  view on Meta::CPAN

use strict;
use warnings;
use utf8;

use Test::More;

use File::Spec;
use lib File::Spec->catfile('t', 'lib');
use t::Util;

run_on_database {
    my $id = db->insert_and_fetch_id(author => { name => 'MOZNION' });
    ok defined $id, 'id is defined.';

    my $row = db->select(author => { id => $id }, { limit => 1 })->first;
    is_deeply $row->get_columns, {
        id              => $id,
        name            => 'MOZNION',

t/04_insert_and_fetch_row.t  view on Meta::CPAN

use strict;
use warnings;
use utf8;

use Test::More;

use File::Spec;
use lib File::Spec->catfile('t', 'lib');
use t::Util;

run_on_database {
    my $row = db->insert_and_fetch_row(author => { name => 'MOZNION' });
    ok defined $row, 'row is defined.';
    ok $row->is_new, 'new row.';

    is_deeply $row->get_columns, {
        id              => $row->id,
        name            => 'MOZNION',

t/05_insert_and_emulate_row.t  view on Meta::CPAN

use strict;
use warnings;
use utf8;

use Test::More;

use File::Spec;
use lib File::Spec->catfile('t', 'lib');
use t::Util;

run_on_database {
    my $row = db->insert_and_emulate_row(author => { name => 'MOZNION' });
    ok defined $row, 'row is defined.';
    ok $row->is_new, 'new row.';

    is_deeply $row->get_columns, {
        id              => $row->id,
        name            => 'MOZNION',

t/06_insert_multi.t  view on Meta::CPAN

use strict;
use warnings;
use utf8;

use Test::More;

use File::Spec;
use lib File::Spec->catfile('t', 'lib');
use t::Util;

use SQL::QueryMaker qw/sql_raw/;

run_on_database {
    is query_count {
        db->insert_multi(author => []);
    }, 0, 'nothing to do if empty values';

    db->insert_multi(author => [

t/07_insert_on_duplicate.t  view on Meta::CPAN

use strict;
use warnings;
use utf8;

use Test::More;

use File::Spec;
use lib File::Spec->catfile('t', 'lib');
use t::Util;

use SQL::QueryMaker qw/sql_raw/;

run_on_each_databases [qw/MySQL/] => sub {
    db->insert_on_duplicate(author => {
        name => 'PAPIX',
        message => 'hoge',
    }, {
        message => sql_raw('VALUES(message)'),

t/08_select.t  view on Meta::CPAN

use strict;
use warnings;
use utf8;

use Test::More;

use File::Spec;
use lib File::Spec->catfile('t', 'lib');
use t::Util;

run_on_database {
    db->insert(author => { name => 'MOZNION' });

    my $rows = db->select(author => {});
    isa_ok $rows, 'Aniki::Result::Collection';
    is $rows->count, 1;
    isa_ok $rows->first, 'Aniki::Row';

t/09_update.t  view on Meta::CPAN

use strict;
use warnings;
use utf8;

use Test::More;

use File::Spec;
use lib File::Spec->catfile('t', 'lib');
use t::Util;

run_on_database {
    db->insert(author => { name => 'MOZNION' });
    db->update(author => { name => 'MOZNION2' }, { name => 'MOZNION' });

    my $rows = db->select(author => {});
    isa_ok $rows, 'Aniki::Result::Collection';
    is $rows->count, 1;
    is $rows->first->name, 'MOZNION2', 'updated';

t/10_delete.t  view on Meta::CPAN

use strict;
use warnings;
use utf8;

use Test::More;

use File::Spec;
use lib File::Spec->catfile('t', 'lib');
use t::Util;

run_on_database {
    db->insert(author => { name => 'MOZNION' });
    db->insert(author => { name => 'MOZNION2' });

    is db->select(author => {})->count, 2;

    db->delete(author => { name => 'MOZNION' });

t/11_relay.t  view on Meta::CPAN

use strict;
use warnings;
use utf8;

use Test::More;

use File::Spec;
use lib File::Spec->catfile('t', 'lib');
use t::Util;

run_on_database {
    my $moznion_id = db->insert_and_fetch_id(author => { name => 'MOZNION' });
    my @moznion_module_ids = (
        db->insert_and_fetch_id(module => { name => 'Perl::Lint',             author_id => $moznion_id }),
        db->insert_and_fetch_id(module => { name => 'Regexp::Lexer',          author_id => $moznion_id }),
        db->insert_and_fetch_id(module => { name => 'Test::JsonAPI::Autodoc', author_id => $moznion_id }),
    );

t/12_new_row_from_hashref.t  view on Meta::CPAN

use strict;
use warnings;
use utf8;

use Test::More;

use File::Spec;
use lib File::Spec->catfile('t', 'lib');
use t::Util;

run_on_database {
    my $karupa = db->new_row_from_hashref(author => { name => 'KARUPA' });
    isa_ok $karupa, 't::DB::Row::Author';
    is $karupa->name, 'KARUPA';
};

done_testing();

t/13_new_collection_from_arrayref.t  view on Meta::CPAN

use strict;
use warnings;
use utf8;

use Test::More;

use File::Spec;
use lib File::Spec->catfile('t', 'lib');
use t::Util;

run_on_database {
    subtest 'non empty' => sub {
        my $authors = db->new_collection_from_arrayref(author => [{ name => 'KARUPA' }, { name => 'PAPIX' }]);
        isa_ok $authors, 'Aniki::Result::Collection';
        is $authors->count, 2;
        isa_ok $authors->first, 't::DB::Row::Author';
        is $authors->first->name, 'KARUPA';
    };

t/14_update_and_fetch_row.t  view on Meta::CPAN

use strict;
use warnings;
use utf8;

use Test::More;

use File::Spec;
use lib File::Spec->catfile('t', 'lib');
use t::Util;

run_on_database {
    my $row = db->insert_and_fetch_row(author => { name => 'MOZNION' });
    subtest 'assert default (in|de)flate_message' => sub {
        is $row->inflate_message, 'inflate hello', 'inflated: inflate_message';
        is $row->deflate_message, 'hello', 'inflated: deflate_message';
        is $row->get_column('inflate_message'), 'hello', 'raw: inflate_message';
        is $row->get_column('deflate_message'), 'hello', 'raw: deflate_message';
    };

t/15_update_and_emulate_row.t  view on Meta::CPAN

use strict;
use warnings;
use utf8;

use Test::More;

use File::Spec;
use lib File::Spec->catfile('t', 'lib');
use t::Util;

run_on_database {
    my $row = db->insert_and_fetch_row(author => { name => 'MOZNION' });
    subtest 'assert default (in|de)flate_message' => sub {
        is $row->inflate_message, 'inflate hello', 'inflated: inflate_message';
        is $row->deflate_message, 'hello', 'inflated: deflate_message';
        is $row->get_column('inflate_message'), 'hello', 'raw: inflate_message';
        is $row->get_column('deflate_message'), 'hello', 'raw: deflate_message';
    };

t/handler/weighted_round_robin.t  view on Meta::CPAN

use strict;
use warnings;
use utf8;

use Test::More;
use Test::Requires qw(Data::WeightedRoundRobin);

use File::Spec;
use lib File::Spec->catfile('t', 'lib');

use Aniki::Handler::WeightedRoundRobin;
use List::Util qw/reduce/;
use List::MoreUtils qw/apply/;

srand 4649;

my @connect_info = (
    {
        value  => ['dbi:mysql:dbname=test;host=db1.localhost;port='.int(rand 65535), 'foo'.int(rand 65535), 'bar'.int(rand 65535), { PrintError => 0, RaiseError => 1 }],

t/plugin/count/count.t  view on Meta::CPAN

use strict;
use warnings;
use utf8;

use Test::More;

use File::Spec;
use lib File::Spec->catfile('t', 'lib');
use Mouse::Util;
use Aniki::Plugin::Count;
use t::Util;

run_on_database {
    Mouse::Util::apply_all_roles(db, 'Aniki::Plugin::Count');

    db->insert_multi(author => [map {
        +{ name => $_ }
    } qw/MOZNION KARUPA PAPIX/]);

t/plugin/pager/select_with_pager.t  view on Meta::CPAN

use strict;
use warnings;
use utf8;

use Test::More;

use File::Spec;
use lib File::Spec->catfile('t', 'lib');
use Mouse::Util;
use Aniki::Plugin::Pager;
use t::Util;

run_on_database {
    Mouse::Util::apply_all_roles(db, 'Aniki::Plugin::Pager');

    db->insert_multi(author => [map {
        +{ name => $_ }
    } qw/MOZNION KARUPA PAPIX/]);

t/plugin/pager_injector/inject_pager_to_result.t  view on Meta::CPAN

use strict;
use warnings;
use utf8;

use Test::More;

use File::Spec;
use lib File::Spec->catfile('t', 'lib');
use Mouse::Util;
use Aniki::Plugin::PagerInjector;
use t::Util;

run_on_database {
    Mouse::Util::apply_all_roles(db, 'Aniki::Plugin::PagerInjector');

    db->insert_multi(author => [map {
        +{ name => $_ }
    } qw/MOZNION KARUPA PAPIX/]);

t/plugin/range_condition_maker/make_range_condition.t  view on Meta::CPAN

use strict;
use warnings;
use utf8;

use Test::More;

use File::Spec;
use lib File::Spec->catfile('t', 'lib');
use Mouse::Util;
use t::Util;

run_on_database {
    Mouse::Util::apply_all_roles(db, 'Aniki::Plugin::RangeConditionMaker');

    db->insert_multi(author => [map {
        +{ name => $_ }
    } qw/MOZNION KARUPA PAPIX MACKEE/]);

t/plugin/select_joined/select_joined.t  view on Meta::CPAN

use strict;
use warnings;
use utf8;

use Test::More;
use Test::Requires qw(SQL::Maker::Plugin::JoinSelect);

use File::Spec;
use lib File::Spec->catfile('t', 'lib');
use Mouse::Util;
use t::Util;

run_on_database {
    Mouse::Util::apply_all_roles(db, 'Aniki::Plugin::SelectJoined');

    my $moznion_id = db->insert_and_fetch_id(author => { name => 'MOZNION' });
    my @moznion_module_ids = (
        db->insert_and_fetch_id(module => { name => 'Perl::Lint',             author_id => $moznion_id }),
        db->insert_and_fetch_id(module => { name => 'Regexp::Lexer',          author_id => $moznion_id }),

t/plugin/sql_pager/select_by_sql_with_pager.t  view on Meta::CPAN

use strict;
use warnings;
use utf8;

use Test::More;

use File::Spec;
use lib File::Spec->catfile('t', 'lib');
use Mouse::Util;
use Aniki::Plugin::SQLPager;
use t::Util;

run_on_database {
    Mouse::Util::apply_all_roles(db, 'Aniki::Plugin::SQLPager');

    db->insert_multi(author => [map {
        +{ name => $_ }
    } qw/MOZNION KARUPA PAPIX/]);

t/plugin/sql_pager/select_named_with_pager.t  view on Meta::CPAN

use strict;
use warnings;
use utf8;

use Test::More;

use File::Spec;
use lib File::Spec->catfile('t', 'lib');
use Mouse::Util;
use Aniki::Plugin::SQLPager;
use t::Util;

run_on_database {
    Mouse::Util::apply_all_roles(db, 'Aniki::Plugin::SQLPager');

    db->insert_multi(author => [map {
        +{ name => $_ }
    } qw/MOZNION KARUPA PAPIX/]);

t/plugin/weighted_round_robin/weighted_round_robin.t  view on Meta::CPAN

use strict;
use warnings;
use utf8;

use Test::More;
use Test::Requires qw(Data::WeightedRoundRobin);

use File::Spec;
use lib File::Spec->catfile('t', 'lib');
use Mouse::Util;
use t::Util;

run_on_database {
    Mouse::Util::apply_all_roles(db, 'Aniki::Plugin::WeightedRoundRobin');
    is db->handler_class, 'Aniki::Handler::WeightedRoundRobin';
};

done_testing();

t/row/can.t  view on Meta::CPAN

use strict;
use warnings;
use utf8;

use Test::More;

use File::Spec;
use lib File::Spec->catfile('t', 'lib');
use t::Util;

run_on_database {
    my $moznion = db->insert_and_fetch_row(author => { name => 'MOZNION' });
    can_ok $moznion, qw/relay get_column name modules/;
    can_ok 't::DB::Row::Author', qw/relay get_column/;
};

done_testing();

t/row/joined/can.t  view on Meta::CPAN

use strict;
use warnings;
use utf8;

use Test::More;

use File::Spec;
use lib File::Spec->catfile('t', 'lib');
use t::Util;

use Aniki::Row::Joined;

run_on_database {
    my $author = db->insert_and_fetch_row(author => { name => 'MOZNION' });
    my $module = db->insert_and_fetch_row(module => { name => 'Perl::Lint', author_id => $author->id });

    my $row = Aniki::Row::Joined->new($author, $module);
    can_ok +$row, qw/author module/;

t/schema/00_has_many.t  view on Meta::CPAN

use strict;
use warnings;
use utf8;

use Test::More;

use File::Spec;
use lib File::Spec->catfile('t', 'lib');
use t::Util;
use t::DB;

t::DB->run_on_each_databases([target_databases()] => sub {
    my $class = shift;

    ok !$class->schema->has_many(author => [qw/id/]),      'primary key';
    ok !$class->schema->has_many(author => [qw/name/]),    'unique key';
    ok +$class->schema->has_many(author => [qw/message/]), 'normal';
});



( run in 2.458 seconds using v1.01-cache-2.11-cpan-3cd7ad12f66 )