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 => {
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';
});