X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;ds=sidebyside;f=t%2Fhelper%2Fcsv.t;h=3a8556cfd334eb411f168665e3b7196ad052b142;hb=434d7c13b2618f29235e8f7adc93001ae5552915;hp=334c6f350a5ee3948ecc905bcbc86edf81a1243b;hpb=cb7c9269ed4bd736883f3ddc66fa342320d5b1f8;p=kivitendo-erp.git diff --git a/t/helper/csv.t b/t/helper/csv.t index 334c6f350..3a8556cfd 100644 --- a/t/helper/csv.t +++ b/t/helper/csv.t @@ -1,4 +1,4 @@ -use Test::More tests => 71; +use Test::More tests => 75; use lib 't'; use utf8; @@ -12,7 +12,7 @@ Support::TestSetup::login(); my $csv = SL::Helper::Csv->new( file => \"Kaffee\n", # " # make emacs happy - header => [[ 'description' ]], + header => [ 'description' ], profile => [{ class => 'SL::DB::Part', }], ); @@ -29,7 +29,7 @@ $::myconfig{dateformat} = 'dd.mm.yyyy'; $csv = SL::Helper::Csv->new( file => \"Kaffee;0.12;12,2;1,5234\n", # " # make emacs happy - header => [[ 'description', 'sellprice', 'lastcost_as_number', 'listprice' ]], + header => [ 'description', 'sellprice', 'lastcost_as_number', 'listprice' ], profile => [{profile => { listprice => 'listprice_as_number' }, class => 'SL::DB::Part',}], ); @@ -273,7 +273,7 @@ is_deeply( ($csv->errors)[0], [ 'description', undef, 'header field \'descriptio $csv = SL::Helper::Csv->new( file => \"Kaffee", # " # make emacs happy - header => [[ 'description' ]], + header => [ 'description' ], profile => [{class => 'SL::DB::Part'}], ); $csv->parse; @@ -296,7 +296,7 @@ is_deeply $csv->get_data, [ { description => 'Kaffee' } ], 'case insensitive hea $csv = SL::Helper::Csv->new( file => \"Kaffee", # " # make emacs happy - header => [[ 'Description' ]], + header => [ 'Description' ], case_insensitive_header => 1, profile => [{ profile => { description => 'description' }, @@ -320,7 +320,7 @@ is_deeply $csv->get_data, [ { description => 'Kaffee' } ], 'utf8 BOM works (bug $csv = SL::Helper::Csv->new( file => \"Kaffee", # " # make emacs happy - header => [[ 'Description' ]], + header => [ 'Description' ], profile => [{class => 'SL::DB::Part'}], ); $csv->parse; @@ -330,7 +330,7 @@ is_deeply $csv->get_data, undef, 'case insensitive header without flag ignores'; $csv = SL::Helper::Csv->new( file => \"Kaffee", # " # make emacs happy - header => [[ 'foo' ]], + header => [ 'foo' ], profile => [{ profile => { foo => '' }, class => 'SL::DB::Part', @@ -345,7 +345,7 @@ ok $csv->get_objects->[0], 'empty path gets ignored in object creation'; $csv = SL::Helper::Csv->new( file => \"Kaffee", # " # make emacs happy - header => [[ 'foo' ]], + header => [ 'foo' ], strict_profile => 1, profile => [{ profile => { foo => '' }, @@ -359,7 +359,7 @@ ok $csv->get_objects->[0], 'empty path gets ignored in object creation (strict p $csv = SL::Helper::Csv->new( file => \"Phil", # " # make emacs happy - header => [[ 'CVAR_grOUnDHog' ]], + header => [ 'CVAR_grOUnDHog' ], strict_profile => 1, case_insensitive_header => 1, profile => [{ @@ -551,6 +551,55 @@ ok !$csv->_check_multiplexed, 'multiplex check detects empty header'; ##### +$csv = SL::Helper::Csv->new( + file => \< [ + {class => 'SL::DB::Part', row_ident => 'P'}, + {class => 'SL::DB::Customer', row_ident => 'C'}, + ], + ignore_unknown_columns => 1, +); +$csv->parse; +is $csv->_multiplex_datatype_position, 2, 'multiplex check detects datatype field position right'; + +is_deeply $csv->get_data, [ { datatype => 'P', description => 'Kaffee', longdescription => 'lecker Kaffee' }, + { datatype => 'C', name => 'Meier', customernumber => 1}, + { datatype => 'P', description => 'Bier', longdescription => 'kühles Bier' }, + { datatype => 'C', name => 'Mueller', customernumber => 2} + ], + 'multiplex: datatype not at first position works'; + +##### + +$csv = SL::Helper::Csv->new( + file => \< [ + {class => 'SL::DB::Part', row_ident => 'P'}, + {class => 'SL::DB::Customer', row_ident => 'C'}, + ], + ignore_unknown_columns => 1, +); +ok !$csv->parse, 'multiplex check detects incosistent datatype field position'; +is_deeply( ($csv->errors)[0], [ 0, 'datatype field must be at the same position for all datatypes for multiplexed data', 0, 0 ], 'multiplex data with inconsistent datatype field posiotion throws error'); + +##### + $csv = SL::Helper::Csv->new( file => \"Datatype;Description\nDatatype;Name\nP;Kaffee\nC;Meier", # " # make emacs happy case_insensitive_header => 1,