Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 45119ead

Von Sven Schöling vor fast 14 Jahren hinzugefügt

  • ID 45119ead56cbc3b06daae7ea258b3839234e0b9a
  • Vorgänger efb48636
  • Nachfolger 7358571b

Indices auf OneToOne relationships werden jetzt mit Fehler quittiert.

Unterschiede anzeigen:

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