use
lib
't/cdbi/testlib'
;
State->table(
'State'
);
State->columns(
Essential
=>
qw/Abbreviation Name/
);
State->columns(
Primary
=>
'Name'
);
State->columns(
Weather
=>
qw/Rain Snowfall/
);
State->columns(
Other
=>
qw/Capital Population/
);
sub
accessor_name_for {
my
(
$class
,
$column
) =
@_
;
my
$return
=
$column
eq
"Rain"
?
"Rainfall"
:
$column
;
return
$return
;
}
sub
mutator_name_for {
my
(
$class
,
$column
) =
@_
;
my
$return
=
$column
eq
"Rain"
?
"set_Rainfall"
:
"set_$column"
;
return
$return
;
}
sub
Snowfall { 1 }
City->table(
'City'
);
City->columns(
All
=>
qw/Name State Population/
);
{
local
$SIG
{__WARN__} =
sub
{
my
$warning
=
shift
;
warn
$warning
unless
(
$warning
=~ /\Qno such table: City(1)\E/);
};
City->has_a(
State
=>
'State'
);
}
CD->table(
'CD'
);
CD->columns(
'All'
=>
qw/artist title length/
);
is(State->table,
'State'
,
'State table()'
);
is(State->primary_column,
'name'
,
'State primary()'
);
is_deeply [ State->columns(
'Primary'
) ] => [
qw/name/
],
'State Primary:'
.
join
", "
, State->columns(
'Primary'
);
is_deeply [
sort
State->columns(
'Essential'
) ] => [
qw/abbreviation name/
],
'State Essential:'
.
join
", "
, State->columns(
'Essential'
);
is_deeply [
sort
State->columns(
'All'
) ] =>
[
sort
qw/name abbreviation rain snowfall capital population/
],
'State All:'
.
join
", "
, State->columns(
'All'
);
is(CD->primary_column,
'artist'
,
'CD primary()'
);
is_deeply [ CD->columns(
'Primary'
) ] => [
qw/artist/
],
'CD primary:'
.
join
", "
, CD->columns(
'Primary'
);
is_deeply [
sort
CD->columns(
'All'
) ] => [
qw/artist length title/
],
'CD all:'
.
join
", "
, CD->columns(
'All'
);
is_deeply [
sort
CD->columns(
'Essential'
) ] => [
qw/artist/
],
'CD essential:'
.
join
", "
, CD->columns(
'Essential'
);
ok(State->find_column(
'Rain'
),
'find_column Rain'
);
ok(State->find_column(
'rain'
),
'find_column rain'
);
ok(!State->find_column(
'HGLAGAGlAG'
),
'!find_column HGLAGAGlAG'
);
{
can_ok +
State
=>
qw/Rainfall _Rainfall_accessor set_Rainfall
_set_Rainfall_accessor Snowfall _Snowfall_accessor set_Snowfall
_set_Snowfall_accessor/
;
foreach
my
$method
(
qw/Rain _Rain_accessor rain snowfall/
) {
ok !State->can(
$method
),
"State can't $method"
;
}
}
{
SKIP: {
skip
"No column objects"
, 1;
eval
{
my
@grps
= State->__grouper->groups_for(
"Huh"
); };
ok $@,
"Huh not in groups"
;
}
my
@grps
=
sort
State->__grouper->groups_for(State->_find_columns(
qw/rain capital/
));
is
@grps
, 2,
"Rain and Capital = 2 groups"
;
@grps
=
sort
@grps
;
is
$grps
[0],
'Other'
,
" - Other"
;
is
$grps
[1],
'Weather'
,
" - Weather"
;
}
@A::ISA
=
qw(DBIx::Class)
;
__PACKAGE__->load_components(
qw/CDBICompat Core/
);
__PACKAGE__->table(
'dummy'
);
__PACKAGE__->columns(
Primary
=>
'id'
);
@A::B::ISA
=
'A'
;
__PACKAGE__->table(
'dummy2'
);
__PACKAGE__->columns(
All
=>
qw(id b1)
);
@A::C::ISA
=
'A'
;
__PACKAGE__->table(
'dummy3'
);
__PACKAGE__->columns(
All
=>
qw(id c1 c2 c3)
);
is
join
(
' '
,
sort
A->columns),
'id'
,
"A columns"
;
is
join
(
' '
,
sort
A::B->columns),
'b1 id'
,
"A::B columns"
;
is
join
(
' '
,
sort
A::C->columns),
'c1 c2 c3 id'
,
"A::C columns"
;
done_testing;