DBIx-SearchBuilder
view release on metacpan or search on metacpan
t/01records.t view on Meta::CPAN
my ($id) = $rec->Create( Name => 'Jesse', Phone => '617 124 567', Content => 'HÃ¥vard');
ok($id,"Created record ". $id);
ok($rec->Load($id), "Loaded the record");
is($rec->id, $id, "The record has its id");
is ($rec->Name, 'Jesse', "The record's name is Jesse");
is( $rec->Content, $d eq 'Oracle' ? Encode::decode('UTF-8', 'HÃ¥vard') : 'HÃ¥vard', "The record's Content is HÃ¥vard");
my ($val, $msg) = $rec->SetName('Obra');
ok($val, $msg) ;
is($rec->Name, 'Obra', "We did actually change the name");
my $rec2 = TestApp::Address->new($handle);
isa_ok($rec2, 'DBIx::SearchBuilder::Record');
my ($id2) = $rec2->Create( Name => 'HÃ¥vard', Phone => '617 124 567', Content => 'Foo');
ok($id2,"Created record ". $id2);
ok($rec2->Load($id2), "Loaded the record");
is($rec2->id, $id2, "The record has its id");
is ($rec2->Name, $d eq 'Oracle' ? Encode::decode('UTF-8', 'HÃ¥vard') : 'HÃ¥vard', "The record's name is HÃ¥vard");
# Validate immutability of the field id
($val, $msg) = $rec->Setid( $rec->id + 1 );
ok(!$val, $msg);
is($msg, 'Immutable field', 'id is immutable field');
is($rec->id, $id, "The record still has its id");
# Check some non existant field
ok( !eval{ $rec->SomeUnexpectedField }, "The record has no 'SomeUnexpectedField'");
{
# test produce DBI warning
local $SIG{__WARN__} = sub {return};
is( $rec->_Value( 'SomeUnexpectedField' ), undef, "The record has no 'SomeUnexpectedField'");
}
($val, $msg) = $rec->SetSomeUnexpectedField( 'foo' );
ok(!$val, $msg);
is($msg, 'Nonexistant field?', "Field doesn't exist");
($val, $msg) = $rec->_Set('SomeUnexpectedField', 'foo');
ok(!$val, "$msg");
# Validate truncation on update
($val,$msg) = $rec->SetName('1234567890123456789012345678901234567890');
ok($val, $msg);
is($rec->Name, '12345678901234', "Truncated on update");
$val = $rec->TruncateValue(Phone => '12345678901234567890');
is($val, '123456789012345678', 'truncate by length attribute');
# Confirm we truncate before comparing values and
# don't try to update again with the same value
($val,$msg) = $rec->SetName('1234567890123456789012345678901234567890');
ok(!$val, $msg);
is($msg, 'That is already the current value', 'No update for same value');
is($rec->Name, '12345678901234', "Value is the same");
# Test unicode truncation:
my $univalue = "鿝忏¬è©¦";
($val,$msg) = $rec->SetName($univalue.$univalue);
ok($val, $msg) ;
is($rec->Name, '鿝忏¬');
# make sure we do _not_ truncate things which should not be truncated
($val,$msg) = $rec->SetEmployeeId('1234567890');
ok($val, $msg) ;
is($rec->EmployeeId, '1234567890', "Did not truncate id on create");
# make sure we do truncation on create
my $newrec = TestApp::Address->new($handle);
my $newid = $newrec->Create( Name => '1234567890123456789012345678901234567890',
EmployeeId => '1234567890' );
$newrec->Load($newid);
ok ($newid, "Created a new record");
is($newrec->Name, '12345678901234', "Truncated on create");
is($newrec->EmployeeId, '1234567890', "Did not truncate id on create");
# no prefetch feature and _LoadFromSQL sub checks
$newrec = TestApp::Address->new($handle);
($val, $msg) = $newrec->_LoadFromSQL('SELECT id FROM Address WHERE id = ?', $newid);
is($val, 1, 'found object');
is($newrec->Name, '12345678901234', "autoloaded not prefetched field");
is($newrec->EmployeeId, '1234567890', "autoloaded not prefetched field");
# _LoadFromSQL and missing PK
$newrec = TestApp::Address->new($handle);
($val, $msg) = $newrec->_LoadFromSQL('SELECT Name FROM Address WHERE Name = ?', '12345678901234');
is($val, 0, "didn't find object");
is($msg, "Missing a primary key?", "reason is missing PK");
# _LoadFromSQL and not existant row
$newrec = TestApp::Address->new($handle);
($val, $msg) = $newrec->_LoadFromSQL('SELECT id FROM Address WHERE id = ?', 0);
is($val, 0, "didn't find object");
is($msg, "Couldn't find row", "reason is wrong id");
# _LoadFromSQL and wrong SQL
$newrec = TestApp::Address->new($handle);
{
local $SIG{__WARN__} = sub{return};
($val, $msg) = $newrec->_LoadFromSQL('SELECT ...');
}
is($val, 0, "didn't find object");
like($msg, qr/^Couldn't execute query/, "reason is bad SQL");
# test Load* methods
$newrec = TestApp::Address->new($handle);
$newrec->Load();
is( $newrec->id, undef, "can't load record with undef id");
$newrec = TestApp::Address->new($handle);
$newrec->LoadByCol( Name => '12345678901234' );
is( $newrec->id, $newid, "load record by 'Name' column value");
( run in 2.413 seconds using v1.01-cache-2.11-cpan-5735350b133 )