mk_group_accessors.t [plain text]
use strict;
use Test::More;
BEGIN {
eval "use DBIx::Class::CDBICompat;";
plan skip_all => 'Class::Trigger and DBIx::ContextualFetch required' if $@;
eval "use DBD::SQLite";
plan skip_all => 'needs DBD::SQLite for testing' if $@;
plan 'no_plan';
}
INIT {
use lib 't/cdbi/testlib';
require Film;
}
sub Film::get_test {
my $self = shift;
my $key = shift;
$self->{get_test}++;
return $self->{$key};
}
sub Film::set_test {
my($self, $key, $val) = @_;
$self->{set_test}++;
return $self->{$key} = $val;
}
my $film = Film->create({ Title => "No Wolf McQuade" });
# Test mk_group_accessors() with a list of fields.
{
Film->mk_group_accessors(test => qw(foo bar));
$film->foo(42);
is $film->foo, 42;
$film->bar(23);
is $film->bar, 23;
}
# An explicit accessor passed to mk_group_accessors should
# ignore accessor/mutator_name_for.
sub Film::accessor_name_for {
my($class, $col) = @_;
return "hlaglagh" if $col eq "wibble";
return $col;
}
sub Film::mutator_name_for {
my($class, $col) = @_;
return "hlaglagh" if $col eq "wibble";
return $col;
}
# Test with a mix of fields and field specs
{
Film->mk_group_accessors(test => ("baz", [wibble_thing => "wibble"]));
$film->baz(42);
is $film->baz, 42;
$film->wibble_thing(23);
is $film->wibble_thing, 23;
}