X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=t%2Fcontrollers%2Fhelpers%2Fparse_filter.t;h=856ae2e337658ae60931a08aeb7d5fde44e43829;hb=70ba777d43331b446755116b26c04913212d2f1f;hp=1bc3a00b8dc7317201c01557a939df8a7ae18ffe;hpb=61cdba5d566357f3beabe0e7f3f0cb2d7bdccd73;p=kivitendo-erp.git diff --git a/t/controllers/helpers/parse_filter.t b/t/controllers/helpers/parse_filter.t index 1bc3a00b8..856ae2e33 100644 --- a/t/controllers/helpers/parse_filter.t +++ b/t/controllers/helpers/parse_filter.t @@ -1,12 +1,14 @@ use lib 't'; -use Test::More tests => 18; +use Test::More tests => 28; use Test::Deep; use Data::Dumper; use_ok 'Support::TestSetup'; use_ok 'SL::Controller::Helper::ParseFilter'; +use SL::DB::OrderItem; + undef *::any; # Test::Deep exports any (for junctions) and MoreCommon exports any (like in List::Moreutils) Support::TestSetup::login(); @@ -140,7 +142,7 @@ test { ] }, { 'sellprice:number' => [ '123,4', '2,34', '0,4' ], - 'sellprice_number' => [ '123,4', '2,34', '0,4' ], + 'sellprice_number_' => { '123,4' => 1, '2,34' => 1, '0,4' => 1 }, }, 'laundering with array', target => 'filter'; my %args = ( @@ -190,3 +192,104 @@ test { with_objects => bag('order.customer', 'order'), }, 'sub objects have to retain their prefix'; +### class filter dispatch +# +test { + name => 'Test', + whut => 'moof', +}, { + query => bag( + name => 'Test', + whut => 'moof' + ), +}, 'object test simple', class => 'SL::DB::Manager::Part'; + +test { + 'type' => 'assembly', +}, { + query => [ + 'assembly' => 1 + ], +}, 'object test without prefix', class => 'SL::DB::Manager::Part'; + +test { + 'part.type' => 'assembly', +}, { + query => [ + 'part.assembly' => 1 + ], +}, 'object test with prefix', class => 'SL::DB::Manager::OrderItem'; + +test { + 'type' => [ 'part', 'assembly' ], +}, { + query => [ + or => [ + and => [ or => [ assembly => 0, assembly => undef ], + "!inventory_accno_id" => 0, + "!inventory_accno_id" => undef, + ], + assembly => 1, + ] + ], +}, 'object test without prefix but complex value', class => 'SL::DB::Manager::Part'; + +test { + 'part.type' => [ 'part', 'assembly' ], +}, { + query => [ + or => [ + and => [ or => [ 'part.assembly' => 0, 'part.assembly' => undef ], + "!part.inventory_accno_id" => 0, + "!part.inventory_accno_id" => undef, + ], + 'part.assembly' => 1, + ] + ], +}, 'object test with prefix but complex value', class => 'SL::DB::Manager::OrderItem'; + +test { + description => 'test' +}, { + query => [ description => 'test' ], + with_objects => [ 'order' ] +}, 'with_objects don\'t get clobbered', with_objects => [ 'order' ]; + +test { + customer => { + description => 'test' + } +}, { + query => [ 'customer.description' => 'test' ], + with_objects => [ 'order', 'customer' ] +}, 'with_objects get extended with auto infered objects', with_objects => [ 'order' ]; + +test { + customer => { + description => 'test' + } +}, { + query => [ 'customer.description' => 'test' ], + with_objects => [ 'order', 'customer' ] +}, 'with_objects get extended with auto infered objects with classes', class => 'SL::DB::Manager::Order', with_objects => [ 'order' ]; + +test { + customer => { + description => 'test' + } +}, { + query => [ 'customer.description' => 'test' ], + with_objects => [ 'customer' ] +}, 'with_objects: no duplicates', with_objects => [ 'customer' ]; + +test { + part => { + 'partnumber:substr::ilike' => '1', + }, +}, { + query => [ + 'part.partnumber', { + ilike => '%1%' + } + ] +}, 'Regression check: prefixing of fallback filtering in relation with custom filters', class => 'SL::DB::Manager::OrderItem';