getDefaultSearchContext(); $filter = new ExactMatchFilter("SearchFilterApplyRelationTest_HasOneGrandChild.Title"); $context->setFilters(null); $context->addFilter($filter); $params = [ "Title" => "I am has_one object", ]; $results = $context->getResults($params); $this->assertEquals(2, $results->count()); } public function testApplyRelationHasMany() { $do1 = $this->objFromFixture(SearchFilterApplyRelationTest\TestObject::class, 'do1'); $do2 = $this->objFromFixture(SearchFilterApplyRelationTest\TestObject::class, 'do2'); $all = SearchFilterApplyRelationTest\TestObject::singleton(); $context = $all->getDefaultSearchContext(); $filter = new PartialMatchFilter("SearchFilterApplyRelationTest_HasManyGrandChildren.Title"); $context->setFilters(null); $context->addFilter($filter); $params = [ "SearchFilterApplyRelationTest_HasManyGrandChildren__Title" => "I am has_many object1", ]; $results = $context->getResults($params); $this->assertEquals(1, $results->count()); $this->assertEquals([$do1->ID], $results->column('ID')); $params = [ "SearchFilterApplyRelationTest_HasManyGrandChildren__Title" => "I am has_many object3", ]; $results = $context->getResults($params); $this->assertEquals(1, $results->count()); $this->assertEquals([$do2->ID], $results->column('ID')); $params = [ "SearchFilterApplyRelationTest_HasManyGrandChildren__Title" => "I am has_many object", ]; $results = $context->getResults($params); $this->assertEquals(2, $results->count()); $params = [ "SearchFilterApplyRelationTest_HasManyGrandChildren__Title" => "not exist", ]; $results = $context->getResults($params); $this->assertEquals(0, $results->count()); } public function testApplyRelationManyMany() { $all = SearchFilterApplyRelationTest\TestObject::singleton(); $context = $all->getDefaultSearchContext(); $filter = new PartialMatchFilter("ManyManyGrandChildren.Title"); $context->setFilters(null); $context->addFilter($filter); $params = [ "ManyManyGrandChildren__Title" => "I am many_many object1", ]; $results = $context->getResults($params); $this->assertEquals(2, $results->count()); $params = [ "ManyManyGrandChildren__Title" => "I am many_many object2", ]; $results = $context->getResults($params); $this->assertEquals(2, $results->count()); $params = [ "ManyManyGrandChildren__Title" => "I am many_many object", ]; $results = $context->getResults($params); $this->assertEquals(2, $results->count()); $params = [ "ManyManyGrandChildren__Title" => "not exist", ]; $results = $context->getResults($params); $this->assertEquals(0, $results->count()); } }