use strict;
use warnings;
use Test::More;
use Test::Warn;
use Test::Exception;
use lib qw(t/lib);
use DBICTest;
{
package DBICTest::Legacy::Storage;
use base 'DBIx::Class::Storage::DBI::SQLite';
use Data::Dumper::Concise;
sub source_bind_attributes { return {} }
}
my $schema = DBICTest::Schema->clone;
$schema->storage_type('DBICTest::Legacy::Storage');
$schema->connection('dbi:SQLite::memory:');
$schema->storage->dbh_do( sub { $_[1]->do(<<'EOS') } );
CREATE TABLE artist (
artistid INTEGER PRIMARY KEY NOT NULL,
name varchar(100),
rank integer NOT NULL DEFAULT 13,
charfield char(10)
)
EOS
my $legacy = sub { $schema->resultset('Artist')->search({ name => 'foo'})->next };
if (DBIx::Class->VERSION >= 0.09) {
&throws_ok(
$legacy,
qr/XXXXXXXXX not sure what error to put here yet XXXXXXXXXXXXXXX/,
'deprecated use of source_bind_attributes throws',
);
}
else {
&warnings_exist (
$legacy,
qr/\QThe source_bind_attributes() override in DBICTest::Legacy::Storage relies on a deprecated codepath/,
'Warning issued during invocation of legacy storage codepath',
);
}
done_testing;