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();
]
}, {
'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 = (
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';