One-To-One dispatch test.
authorSven Schöling <s.schoeling@linet-services.de>
Wed, 23 Feb 2011 16:46:47 +0000 (17:46 +0100)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Thu, 16 Jun 2011 06:44:02 +0000 (08:44 +0200)
SL/Helper/Csv/Dispatcher.pm
t/helper/csv.t

index e060f82..3b60443 100644 (file)
@@ -35,7 +35,7 @@ sub apply {
     my ($acc, $class) = @$step;
     if ($class) {
       eval "require $class; 1" or die "could not load class '$class'";
-      $obj->$acc($class->new) if ! $$obj->$acc;
+      $obj->$acc($class->new) if ! $obj->$acc;
       $obj = $obj->$acc;
     } else {
       $obj->$acc($value);
@@ -74,7 +74,7 @@ sub make_spec {
   for my $step ( split /\./, $path ) {
     if ($cur_class->can($step)) {
       if ($cur_class->meta->relationship($step)) { #a
-        my $next_class = $cur_class->meta->relationsship($step)->class;
+        my $next_class = $cur_class->meta->relationship($step)->class;
         push @{ $spec->{steps} }, [ $step, $next_class ];
         $cur_class = $next_class;
       } else { # simple dispatch
index 2a58cab..58d2d55 100644 (file)
@@ -140,6 +140,24 @@ EOL
 $csv->parse;
 is $csv->get_objects->[0]->lastcost, '1221.52', 'ignore_unkown_columns works';
 
+#####
+
+$csv = SL::Helper::Csv->new(
+  file   => \<<EOL,
+description;partnumber;sellprice;lastcost_as_number;buchungsgruppe;
+Kaffee;;0.12;1,221.52;Standard 7%
+Beer;1123245;0.12;1.5234;16 %
+EOL
+  numberformat => '1,000.00',
+  class  => 'SL::DB::Part',
+  profile => {
+    buchungsgruppe => "buchungsgruppen.description",
+  }
+);
+$csv->parse;
+isa_ok $csv->get_objects->[0]->buchungsgruppe, 'SL::DB::Buchungsgruppe', 'deep dispatch auto vivify works';
+is $csv->get_objects->[0]->buchungsgruppe->description, 'Standard 7%', '...and gets set correctly';
+
 
 done_testing();
 # vim: ft=perl