use t::Utils;
use Test::More tests => 9;
use Test::Exception;
{
package Schema;
use base 'Data::Model';
use Data::Model::Schema;
use Data::Model::Driver::Memory;
base_driver( Data::Model::Driver::Memory->new(
) );
install_model model => schema {
key 'id';
unique 'unq';
index 'name';
columns qw/id unq name nickname/;
};
}
my $obj = Schema->new;
$obj->set(
model => {
id => 1,
unq => 'u1',
name => 'osawa',
nickname => 'yappo',
}
);
lives_ok {
local $Data::Model::RUN_VALIDATION = 0;
$obj->get('model' => { name => 'osawa' });
} 'local $Data::Model::RUN_VALIDATION = 0';
throws_ok {
$obj->get('model' => { name => 'osawa' });
} qr/but was not listed in the validation options: name/;
throws_ok {
$obj->get('model' => { index => { nickname => 'osawa' } });
} qr/did not pass the 'has_index_name' callback/;
throws_ok {
$obj->get('model' => { index => { bar => 'osawa' } });
} qr/did not pass the 'has_index_name' callback/;
lives_ok {
my($ret) = $obj->get('model' => { index => { name => 'osawa' } });
is $ret->id, 1, 'get by index';
} 'has an index name';
lives_ok {
my($ret) = $obj->get('model' => { index => { unq => 'u1' } });
is $ret->id, 1, 'get by unique index';
} 'has an unique index name';
throws_ok {
$obj->get('model' => { index => { unq => 'u1', foo => 2 } });
} qr/did not pass the 'has_index_name' callback/;