Revision 45119ead
Von Sven Schöling vor fast 14 Jahren hinzugefügt
SL/Helper/Csv/Dispatcher.pm | ||
---|---|---|
for my $step_index ( split /\.(?!\d)/, $path ) {
|
||
my ($step, $index) = split /\./, $step_index;
|
||
if ($cur_class->can($step)) {
|
||
if ($cur_class->meta->relationship($step)) { #a
|
||
my $next_class = $cur_class->meta->relationship($step)->class;
|
||
push @{ $spec->{steps} }, [ $step, $next_class, $index ];
|
||
$cur_class = $next_class;
|
||
if (my $rel = $cur_class->meta->relationship($step)) { #a
|
||
if ($index && ! $rel->isa('Rose::DB::Object::Metadata::Relationship::OneToMany')) {
|
||
$self->_push_error([
|
||
$path,
|
||
undef,
|
||
"Profile path error. Indexed relationship is not OneToMany around here: '$step_index'",
|
||
undef,
|
||
0,
|
||
]);
|
||
return;
|
||
} else {
|
||
my $next_class = $cur_class->meta->relationship($step)->class;
|
||
push @{ $spec->{steps} }, [ $step, $next_class, $index ];
|
||
$cur_class = $next_class;
|
||
}
|
||
} else { # simple dispatch
|
||
push @{ $spec->{steps} }, [ $step ];
|
||
last;
|
t/helper/csv.t | ||
---|---|---|
use Test::More tests => 29;
|
||
use Test::More tests => 31;
|
||
use SL::Dispatcher;
|
||
use Data::Dumper;
|
||
use utf8;
|
||
... | ... | |
is $csv->get_objects->[0]->makemodels->[1]->model, 'Table 15', '...check 3';
|
||
is $csv->get_objects->[0]->makemodels->[1]->make, '523', '...check 4';
|
||
|
||
######
|
||
|
||
$csv = SL::Helper::Csv->new(
|
||
file => \<<EOL,
|
||
description;partnumber;sellprice;lastcost_as_number;buchungsgruppe;
|
||
EOL
|
||
numberformat => '1,000.00',
|
||
class => 'SL::DB::Part',
|
||
profile => {
|
||
buchungsgruppe => "buchungsgruppen.1.description",
|
||
}
|
||
);
|
||
is $csv->parse, undef, 'wrong profile gets rejected';
|
||
is_deeply $csv->errors, [ 'buchungsgruppen.1.description', undef, "Profile path error. Indexed relationship is not OneToMany around here: 'buchungsgruppen.1'", undef ,0 ], 'error indicates wrong header';
|
||
|
||
# vim: ft=perl
|
Auch abrufbar als: Unified diff
Indices auf OneToOne relationships werden jetzt mit Fehler quittiert.