Merge branch 'b-3.6.1' of ../kivitendo-erp_20220811
[kivitendo-erp.git] / t / controllers / helpers / parse_filter.t
index 2c10d03..bfccf4e 100644 (file)
@@ -1,6 +1,6 @@
 use lib 't';
 
-use Test::More tests => 38;
+use Test::More tests => 41;
 use Test::Deep;
 use Data::Dumper;
 
@@ -243,47 +243,48 @@ test {
 }, 'object test simple', class => 'SL::DB::Manager::Part';
 
 test {
-  'type' => 'assembly',
+  'part_type' => 'assembly',
 }, {
   query => [
-    'assembly' => 1
-  ],
+             'part_type',
+             'assembly'
+           ] ,
 }, 'object test without prefix', class => 'SL::DB::Manager::Part';
 
 test {
-  'part.type' => 'assembly',
+  'part.part_type' => 'assembly',
 }, {
   query => [
-    'part.assembly' => 1
-  ],
+             'part.part_type',
+             'assembly'
+           ]
 }, 'object test with prefix', class => 'SL::DB::Manager::OrderItem';
 
 test {
-  'type' => [ 'part', 'assembly' ],
+  'part_type' => [ 'part', 'assembly' ],
 }, {
   query => [
-    or => [
-     and => [ or => [ assembly => 0, assembly => undef ],
-              "!inventory_accno_id" => 0,
-              "!inventory_accno_id" => undef,
-     ],
-     assembly => 1,
-    ]
-  ],
+             'or',
+             [
+               'part_type',
+               'part',
+               'part_type',
+               'assembly'
+             ]
+           ]
 }, 'object test without prefix but complex value', class => 'SL::DB::Manager::Part';
-
 test {
-  'part.type' => [ 'part', 'assembly' ],
+  'part.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,
-    ]
-  ],
+             'or',
+             [
+               'part.part_type',
+               'part',
+               'part.part_type',
+               'assembly'
+             ]
+           ]
 }, 'object test with prefix but complex value', class => 'SL::DB::Manager::OrderItem';
 
 test {
@@ -353,10 +354,12 @@ test {
       or => [
         'part.partnumber'  => { ilike => '%term1%' },
         'part.description' => { ilike => '%term1%' },
+        'part.ean'         => { ilike => '%term1%' },
       ],
       or => [
         'part.partnumber'  => { ilike => '%term2%' },
         'part.description' => { ilike => '%term2%' },
+        'part.ean'         => { ilike => '%term2%' },
       ],
     ]
   ],
@@ -420,3 +423,21 @@ test {
   with_objects => [ 'part' ],
 }, 'complex methods modifying the key';
 
+
+test {
+  'customer:substr::ilike' => ' Meyer'
+}, {
+  query => [ customer => { ilike => '%Meyer%' } ]
+}, 'auto trim 1';
+
+test {
+  'customer:head::ilike' => ' Meyer '
+}, {
+  query => [ customer => { ilike => 'Meyer%' } ]
+}, 'auto trim 2';
+
+test {
+  'customer:tail::ilike' => "\nMeyer\x{a0}"
+}, {
+  query => [ customer => { ilike => '%Meyer' } ]
+}, 'auto trim 2';