The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use warnings;
use strict;

use Test::More;

use lib qw(t/lib);
use DBICTest;

my $schema = DBICTest->init_schema(
   no_populate => 1,
);

$schema->resultset('CD')->create({
   cdid => 0,
   artist => {
      artistid => 0,
      name => '',
      rank => 0,
      charfield => 0,
   },
   title => '',
   year => 0,
   genreid => 0,
   single_track => 0,
});

my $orig_debug = $schema->storage->debug;

my $queries = 0;
$schema->storage->debugcb(sub { $queries++; });
$schema->storage->debug(1);

my $cd = $schema->resultset('CD')->search( {}, { prefetch => 'artist' })->next;

is_deeply
  { $cd->get_columns },
  {
    artist => 0,
    cdid => 0,
    genreid => 0,
    single_track => 0,
    title => '',
    year => 0,
  },
  'Expected CD columns present',
;

is_deeply
  { $cd->artist->get_columns },
  {
    artistid => 0,
    charfield => 0,
    name => "",
    rank => 0,
  },
  'Expected Artist columns present',
;

is $queries, 1, 'Only one query fired - prefetch worked';

$schema->storage->debugcb(undef);
$schema->storage->debug($orig_debug);

done_testing;