DBIx-Class
view release on metacpan or search on metacpan
t/sqlmaker/dbihacks_internals.t view on Meta::CPAN
use strict;
use warnings;
use Test::More;
use Test::Warn;
use Test::Exception;
use lib qw(t/lib);
use DBICTest ':DiffSQL';
use DBIx::Class::_Util 'UNRESOLVABLE_CONDITION';
use Data::Dumper;
BEGIN {
if ( eval { require Test::Differences } ) {
no warnings 'redefine';
*is_deeply = \&Test::Differences::eq_or_diff;
}
}
my $schema = DBICTest->init_schema( no_deploy => 1);
my $sm = $schema->storage->sql_maker;
{
package # hideee
DBICTest::SillyInt;
use overload
fallback => 1,
'0+' => sub { ${$_[0]} },
;
}
my $num = bless( \do { my $foo = 69 }, 'DBICTest::SillyInt' );
is($num, 69, 'test overloaded object is "sane"');
is("$num", 69, 'test overloaded object is "sane"');
my @tests = (
{
where => { artistid => 1, charfield => undef },
cc_result => { artistid => 1, charfield => undef },
sql => 'WHERE artistid = ? AND charfield IS NULL',
efcc_result => { artistid => 1 },
efcc_n_result => { artistid => 1, charfield => undef },
},
{
where => { -and => [ artistid => 1, charfield => undef, { rank => 13 } ] },
cc_result => { artistid => 1, charfield => undef, rank => 13 },
sql => 'WHERE artistid = ? AND charfield IS NULL AND rank = ?',
efcc_result => { artistid => 1, rank => 13 },
efcc_n_result => { artistid => 1, charfield => undef, rank => 13 },
},
{
where => { -and => [ { artistid => 1, charfield => undef}, { rank => 13 } ] },
cc_result => { artistid => 1, charfield => undef, rank => 13 },
sql => 'WHERE artistid = ? AND charfield IS NULL AND rank = ?',
efcc_result => { artistid => 1, rank => 13 },
efcc_n_result => { artistid => 1, charfield => undef, rank => 13 },
},
{
where => { -and => [ -or => { name => 'Caterwauler McCrae' }, 'rank' ] },
cc_result => { name => 'Caterwauler McCrae', rank => undef },
sql => 'WHERE name = ? AND rank IS NULL',
efcc_result => { name => 'Caterwauler McCrae' },
efcc_n_result => { name => 'Caterwauler McCrae', rank => undef },
},
{
where => { -and => [ [ [ artist => {'=' => \'foo' } ] ], { name => \[ '= ?', 'bar' ] } ] },
cc_result => { artist => {'=' => \'foo' }, name => \[ '= ?', 'bar' ] },
sql => 'WHERE artist = foo AND name = ?',
efcc_result => { artist => \'foo' },
},
{
where => { -and => [ -or => { name => 'Caterwauler McCrae', artistid => 2 } ] },
cc_result => { -or => [ artistid => 2, name => 'Caterwauler McCrae' ] },
sql => 'WHERE artistid = ? OR name = ?',
efcc_result => {},
( run in 0.972 second using v1.01-cache-2.11-cpan-39bf76dae61 )