my $schema = DBICTest->init_schema();
-eval { require DateTime::Format::SQLite };
-my $NO_DTFM = $@ ? 1 : 0;
-
my @art = $schema->resultset("Artist")->search({ }, { order_by => 'name DESC'});
is(@art, 3, "Three artists returned");
$artist->delete;
}
+# deprecation of rolled-out search
+warnings_exist {
+ $schema->resultset('Artist')->search_rs(id => 4)
+} qr/\Qsearch( %condition ) is deprecated/, 'Deprecation warning on ->search( %condition )';
+
# this has been warning for 4 years, killing
throws_ok {
$schema->resultset('Artist')->find(artistid => 4);
$cd = $schema->resultset("CD")->search({ title => 'Spoonful of bees' }, { columns => ['title'] })->next;
is($cd->title, 'Spoonful of bees', 'subset of columns returned correctly');
-$cd = $schema->resultset("CD")->search(undef, { include_columns => [ 'artist.name' ], join => [ 'artist' ] })->find(1);
+$cd = $schema->resultset("CD")->search(undef, { include_columns => [ { name => 'artist.name' } ], join => [ 'artist' ] })->find(1);
is($cd->title, 'Spoonful of bees', 'Correct CD returned with include');
is($cd->get_column('name'), 'Caterwauler McCrae', 'Additional column returned');
# check if new syntax +columns also works for this
-$cd = $schema->resultset("CD")->search(undef, { '+columns' => [ 'artist.name' ], join => [ 'artist' ] })->find(1);
+$cd = $schema->resultset("CD")->search(undef, { '+columns' => [ { name => 'artist.name' } ], join => [ 'artist' ] })->find(1);
is($cd->title, 'Spoonful of bees', 'Correct CD returned with include');
is($cd->get_column('name'), 'Caterwauler McCrae', 'Additional column returned');
$new->update_or_insert;
is( $schema->resultset("Track")->find(100)->title, 'Insert or Update - updated', 'update_or_insert update ok');
-# get_inflated_columns w/relation and accessor alias
SKIP: {
- skip "This test requires DateTime::Format::SQLite", 8 if $NO_DTFM;
+ skip "Tests require " . DBIx::Class::Optional::Dependencies->req_missing_for ('test_dt_sqlite'), 13
+ unless DBIx::Class::Optional::Dependencies->req_ok_for ('test_dt_sqlite');
+
+ # test get_inflated_columns with objects
+ my $event = $schema->resultset('Event')->search->first;
+ my %edata = $event->get_inflated_columns;
+ is($edata{'id'}, $event->id, 'got id');
+ isa_ok($edata{'starts_at'}, 'DateTime', 'start_at is DateTime object');
+ isa_ok($edata{'created_on'}, 'DateTime', 'create_on DateTime object');
+ is($edata{'starts_at'}, $event->starts_at, 'got start date');
+ is($edata{'created_on'}, $event->created_on, 'got created date');
+
+ # get_inflated_columns w/relation and accessor alias
isa_ok($new->updated_date, 'DateTime', 'have inflated object via accessor');
my %tdata = $new->get_inflated_columns;
is($tdata{'trackid'}, 100, 'got id');
my $typeinfo = $schema->source("Artist")->column_info('artistid');
is($typeinfo->{data_type}, 'INTEGER', 'column_info ok');
$schema->source("Artist")->column_info('artistid');
- ok($schema->source("Artist")->{_columns_info_loaded} == 1, 'Columns info flag set');
+ ok($schema->source("Artist")->{_columns_info_loaded} == 1, 'Columns info loaded flag set');
+}
+
+# test columns_info
+{
+ $schema->source("Artist")->{_columns}{'artistid'} = {};
+ $schema->source("Artist")->column_info_from_storage(1);
+ $schema->source("Artist")->{_columns_info_loaded} = 0;
+
+ is_deeply (
+ $schema->source('Artist')->columns_info,
+ {
+ artistid => {
+ data_type => "INTEGER",
+ default_value => undef,
+ is_nullable => 0,
+ size => undef
+ },
+ charfield => {
+ data_type => "char",
+ default_value => undef,
+ is_nullable => 1,
+ size => 10
+ },
+ name => {
+ data_type => "varchar",
+ default_value => undef,
+ is_nullable => 1,
+ is_numeric => 0,
+ size => 100
+ },
+ rank => {
+ data_type => "integer",
+ default_value => 13,
+ is_nullable => 0,
+ size => undef
+ },
+ },
+ 'columns_info works',
+ );
+
+ ok($schema->source("Artist")->{_columns_info_loaded} == 1, 'Columns info loaded flag set');
+
+ is_deeply (
+ $schema->source('Artist')->columns_info([qw/artistid rank/]),
+ {
+ artistid => {
+ data_type => "INTEGER",
+ default_value => undef,
+ is_nullable => 0,
+ size => undef
+ },
+ rank => {
+ data_type => "integer",
+ default_value => 13,
+ is_nullable => 0,
+ size => undef
+ },
+ },
+ 'limited columns_info works',
+ );
}
# test source_info
ok(! exists $priv_columns->{'genreid'}, 'genreid purged from _columns');
}
-# test get_inflated_columns with objects
-SKIP: {
- skip "This test requires DateTime::Format::SQLite", 5 if $NO_DTFM;
- my $event = $schema->resultset('Event')->search->first;
- my %edata = $event->get_inflated_columns;
- is($edata{'id'}, $event->id, 'got id');
- isa_ok($edata{'starts_at'}, 'DateTime', 'start_at is DateTime object');
- isa_ok($edata{'created_on'}, 'DateTime', 'create_on DateTime object');
- is($edata{'starts_at'}, $event->starts_at, 'got start date');
- is($edata{'created_on'}, $event->created_on, 'got created date');
-}
-
# test resultsource->table return value when setting
{
my $class = $schema->class('Event');