mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
MNT Update tests for searchable_fields match_any
This commit is contained in:
parent
30cd521029
commit
ffcaed84f3
@ -262,10 +262,48 @@ class SearchContextTest extends SapphireTest
|
|||||||
|
|
||||||
// Search should match Order's customer FirstName
|
// Search should match Order's customer FirstName
|
||||||
$results = $context->getResults(['CustomFirstName' => 'Bill']);
|
$results = $context->getResults(['CustomFirstName' => 'Bill']);
|
||||||
$this->assertEquals(1, $results->Count());
|
$this->assertCount(2, $results);
|
||||||
|
$this->assertListContains([
|
||||||
|
['Name' => 'Jane'],
|
||||||
|
['Name' => 'Jack'],
|
||||||
|
], $results);
|
||||||
|
|
||||||
// Search should match Order's shipping address FirstName
|
// Search should match Order's shipping address FirstName
|
||||||
$results = $context->getResults(['CustomFirstName' => 'Bob']);
|
$results = $context->getResults(['CustomFirstName' => 'Bob']);
|
||||||
$this->assertEquals(1, $results->Count());
|
$this->assertCount(2, $results);
|
||||||
|
$this->assertListContains([
|
||||||
|
['Name' => 'Jane'],
|
||||||
|
['Name' => 'Jill'],
|
||||||
|
], $results);
|
||||||
|
|
||||||
|
// Search should match Order's Name db field
|
||||||
|
$results = $context->getResults(['CustomFirstName' => 'Jane']);
|
||||||
|
$this->assertCount(1, $results);
|
||||||
|
$this->assertSame('Jane', $results->first()->Name);
|
||||||
|
|
||||||
|
// Search should not match any Order
|
||||||
|
$results = $context->getResults(['CustomFirstName' => 'NoMatches']);
|
||||||
|
$this->assertCount(0, $results);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testMatchAnySearchWithFilters()
|
||||||
|
{
|
||||||
|
$order1 = $this->objFromFixture(SearchContextTest\Order::class, 'order1');
|
||||||
|
$context = $order1->getDefaultSearchContext();
|
||||||
|
|
||||||
|
$results = $context->getResults(['ExactMatchField' => 'Bil']);
|
||||||
|
$this->assertCount(0, $results);
|
||||||
|
$results = $context->getResults(['PartialMatchField' => 'Bil']);
|
||||||
|
$this->assertCount(2, $results);
|
||||||
|
|
||||||
|
$results = $context->getResults(['ExactMatchField' => 'ob']);
|
||||||
|
$this->assertCount(0, $results);
|
||||||
|
$results = $context->getResults(['PartialMatchField' => 'ob']);
|
||||||
|
$this->assertCount(2, $results);
|
||||||
|
|
||||||
|
$results = $context->getResults(['ExactMatchField' => 'an']);
|
||||||
|
$this->assertCount(0, $results);
|
||||||
|
$results = $context->getResults(['PartialMatchField' => 'an']);
|
||||||
|
$this->assertCount(1, $results);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -74,12 +74,29 @@ SilverStripe\ORM\Tests\Search\SearchContextTest\AllFilterTypes:
|
|||||||
SilverStripe\ORM\Tests\Search\SearchContextTest\Customer:
|
SilverStripe\ORM\Tests\Search\SearchContextTest\Customer:
|
||||||
customer1:
|
customer1:
|
||||||
FirstName: Bill
|
FirstName: Bill
|
||||||
|
customer2:
|
||||||
|
FirstName: Bailey
|
||||||
|
customer3:
|
||||||
|
FirstName: Billy
|
||||||
|
|
||||||
SilverStripe\ORM\Tests\Search\SearchContextTest\Address:
|
SilverStripe\ORM\Tests\Search\SearchContextTest\Address:
|
||||||
address1:
|
address1:
|
||||||
FirstName: Bob
|
FirstName: Bob
|
||||||
|
address2:
|
||||||
|
FirstName: Barley
|
||||||
|
address3:
|
||||||
|
FirstName: Billy
|
||||||
|
|
||||||
SilverStripe\ORM\Tests\Search\SearchContextTest\Order:
|
SilverStripe\ORM\Tests\Search\SearchContextTest\Order:
|
||||||
order1:
|
order1:
|
||||||
|
Name: 'Jane'
|
||||||
Customer: =>SilverStripe\ORM\Tests\Search\SearchContextTest\Customer.customer1
|
Customer: =>SilverStripe\ORM\Tests\Search\SearchContextTest\Customer.customer1
|
||||||
ShippingAddress: =>SilverStripe\ORM\Tests\Search\SearchContextTest\Address.address1
|
ShippingAddress: =>SilverStripe\ORM\Tests\Search\SearchContextTest\Address.address1
|
||||||
|
order2:
|
||||||
|
Name: 'Jill'
|
||||||
|
Customer: =>SilverStripe\ORM\Tests\Search\SearchContextTest\Customer.customer2
|
||||||
|
ShippingAddress: =>SilverStripe\ORM\Tests\Search\SearchContextTest\Address.address1
|
||||||
|
order3:
|
||||||
|
Name: 'Jack'
|
||||||
|
Customer: =>SilverStripe\ORM\Tests\Search\SearchContextTest\Customer.customer3
|
||||||
|
ShippingAddress: =>SilverStripe\ORM\Tests\Search\SearchContextTest\Address.address3
|
||||||
|
@ -10,6 +10,10 @@ class Order extends DataObject implements TestOnly
|
|||||||
{
|
{
|
||||||
private static $table_name = 'SearchContextTest_Order';
|
private static $table_name = 'SearchContextTest_Order';
|
||||||
|
|
||||||
|
private static $db = [
|
||||||
|
'Name' => 'Varchar',
|
||||||
|
];
|
||||||
|
|
||||||
private static $has_one = [
|
private static $has_one = [
|
||||||
'Customer' => Customer::class,
|
'Customer' => Customer::class,
|
||||||
'ShippingAddress' => Address::class,
|
'ShippingAddress' => Address::class,
|
||||||
@ -19,12 +23,30 @@ class Order extends DataObject implements TestOnly
|
|||||||
'CustomFirstName' => [
|
'CustomFirstName' => [
|
||||||
'title' => 'First Name',
|
'title' => 'First Name',
|
||||||
'field' => TextField::class,
|
'field' => TextField::class,
|
||||||
'filter' => 'PartialMatchFilter',
|
|
||||||
'match_any' => [
|
'match_any' => [
|
||||||
// Searching with "First Name" will show Orders with matching Customer or Address names
|
// Searching with the "First Name" field will show Orders matching either Name, Customer.FirstName, or ShippingAddress.FirstName
|
||||||
|
'Name',
|
||||||
'Customer.FirstName',
|
'Customer.FirstName',
|
||||||
'ShippingAddress.FirstName',
|
'ShippingAddress.FirstName',
|
||||||
]
|
],
|
||||||
]
|
],
|
||||||
|
'PartialMatchField' => [
|
||||||
|
'field' => TextField::class,
|
||||||
|
'filter' => 'PartialMatchFilter',
|
||||||
|
'match_any' => [
|
||||||
|
'Name',
|
||||||
|
'Customer.FirstName',
|
||||||
|
'ShippingAddress.FirstName',
|
||||||
|
],
|
||||||
|
],
|
||||||
|
'ExactMatchField' => [
|
||||||
|
'field' => TextField::class,
|
||||||
|
'filter' => 'ExactMatchFilter',
|
||||||
|
'match_any' => [
|
||||||
|
'Name',
|
||||||
|
'Customer.FirstName',
|
||||||
|
'ShippingAddress.FirstName',
|
||||||
|
],
|
||||||
|
],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user