1' ); $res = FilterParser::parse($filters_input, array('COUNTRY_CODE', 'PRODUCT_CODE')); } public function testParserCollections(){ $filters_input = [ 'actions==type_id=1&&is_completed=0', 'actions==type_id=2&&is_completed=1', ]; $res = FilterParser::parse($filters_input,[ 'actions'=> [ '==' ]]); $this->assertTrue(!is_null($res)); } public function testApplyFilterAND(){ $filters_input = [ 'actions==type_id==1&&is_completed==0,type_id==1', 'actions==type_id==2&&is_completed==1', ]; $filter = FilterParser::parse($filters_input,[ 'actions' => [ '==' ], 'type_id' => [ '==' ] ]); $em = Registry::getManager(SilverstripeBaseModel::EntityManager); $query = new QueryBuilder($em); $query->select("e") ->from(\models\summit\SummitEvent::class, "e") ->leftJoin(Presentation::class, 'p', 'WITH', 'e.id = p.id'); $filter->apply2Query($query, [ 'actions' => new DoctrineCollectionFieldsFilterMapping ( 'p.actions', "a", [ 'type_id', 'is_completed' ] ) ]); $dql = $query->getDQL(); $this->assertTrue(!empty($dql)); } public function testApplyFilterOR(){ $filters_input = [ 'actions==type_id==1&&is_completed==0,actions==type_id==2&&is_completed==1', ]; $filter = FilterParser::parse($filters_input,[ 'actions' => [ '==' ], 'type_id' => [ '==' ] ]); $em = Registry::getManager(SilverstripeBaseModel::EntityManager); $query = new QueryBuilder($em); $query->select("e") ->from(\models\summit\SummitEvent::class, "e") ->leftJoin(Presentation::class, 'p', 'WITH', 'e.id = p.id'); $filter->apply2Query($query, [ 'actions' => new DoctrineCollectionFieldsFilterMapping ( 'p.actions', "a", [ 'type_id', 'is_completed' ] ) ]); $dql = $query->getDQL(); $this->assertTrue(!empty($dql)); } }