The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package MyApp::Model::Cd;

sub get_a_cd {
    return 1;
}

# more realistic method
sub newcd_myway {
    my $self  = shift;
    my $title = shift;
    
    $self->create({ artist => -1, name => $title });
    
    return $self->return;
}

package MyApp::Model;
use base 'ORMesque';

use strict;
use warnings;
use Test::More import => ['!pass'];
use Test::Exception;
use FindBin;

BEGIN {
    eval { require DBD::SQLite };

    if ($@) {
        plan skip_all => 'DBD::SQLite is required to run these tests';
    }
    else {
        plan tests => 6;
    }

    use_ok 'ORMesque';
}

my ($cd, $db);

$db = MyApp::Model->new('dbi:SQLite:' . "$FindBin::Bin/001_database.db", "", "", {
    RaiseError => 0,
    PrintError => 1,
});

$cd = $db->cd;
ok 'MyApp::Model' eq $db->namespace, 'the MyApp::Model namespace has been set';
ok 'MyApp::Model' eq $cd->namespace, 'the MyApp::Model namespace is persistent';
ok $cd->get_a_cd(), 'the MyApp::Model class has a get_a_cd() method';
ok $cd->read->count, 'the MyApp::Model::Cd table has entries and can count';
ok ref($cd->newcd_myway('blah')), 'custom method returns as expected';

#use Data::Dumper qw/Dumper/;
#print Dumper $cd->newcd_myway('this is a test');
#print "$_\n" for keys %{MyApp::Model::Cd::};

1;