Skip to content

Commit 53a0459

Browse files
committed
test: min search length
1 parent b75d981 commit 53a0459

File tree

1 file changed

+99
-0
lines changed

1 file changed

+99
-0
lines changed
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
<?php
2+
3+
namespace Yajra\DataTables\Tests\Integration;
4+
5+
use Illuminate\Foundation\Testing\DatabaseTransactions;
6+
use Illuminate\Support\Facades\Route;
7+
use PHPUnit\Framework\Attributes\Test;
8+
use Yajra\DataTables\EloquentDataTable;
9+
use Yajra\DataTables\Tests\Models\User;
10+
use Yajra\DataTables\Tests\TestCase;
11+
12+
class MinSearchLengthDataTableTest extends TestCase
13+
{
14+
use DatabaseTransactions;
15+
16+
#[Test]
17+
public function it_returns_all_records_when_search_is_empty()
18+
{
19+
$crawler = $this->call('GET', '/eloquent/min-length', [
20+
'start' => 0,
21+
'length' => 10,
22+
'columns' => [
23+
['data' => 'id'],
24+
['data' => 'name'],
25+
['data' => 'email'],
26+
],
27+
'search' => [
28+
'value' => '',
29+
'regex' => false,
30+
],
31+
]);
32+
33+
$crawler->assertJson([
34+
'draw' => 0,
35+
'recordsTotal' => 20,
36+
'recordsFiltered' => 20,
37+
]);
38+
}
39+
40+
#[Test]
41+
public function it_returns_an_error_when_search_keyword_length_is_less_than_required()
42+
{
43+
$crawler = $this->call('GET', '/eloquent/min-length', [
44+
'start' => 0,
45+
'length' => 10,
46+
'columns' => [
47+
['data' => 'id'],
48+
['data' => 'name'],
49+
['data' => 'email'],
50+
],
51+
'search' => [
52+
'value' => 'abc',
53+
'regex' => false,
54+
],
55+
]);
56+
57+
$crawler->assertJson([
58+
'draw' => 0,
59+
'recordsTotal' => 0,
60+
'recordsFiltered' => 0,
61+
'data' => [],
62+
'error' => "Exception Message:\n\nPlease enter at least 5 characters to search.",
63+
]);
64+
}
65+
66+
#[Test]
67+
public function it_returns_filtered_records_when_search_keyword_length_is_met()
68+
{
69+
$crawler = $this->call('GET', '/eloquent/min-length', [
70+
'draw' => 1,
71+
'start' => 0,
72+
'length' => 10,
73+
'columns' => [
74+
['data' => 'id'],
75+
['data' => 'name'],
76+
['data' => 'email'],
77+
],
78+
'search' => [
79+
'value' => 'Record-17',
80+
'regex' => false,
81+
],
82+
]);
83+
84+
$crawler->assertJson([
85+
'draw' => 1,
86+
'recordsTotal' => 20,
87+
'recordsFiltered' => 1,
88+
]);
89+
}
90+
91+
protected function setUp(): void
92+
{
93+
parent::setUp();
94+
95+
Route::get('/eloquent/min-length', fn() => (new EloquentDataTable(User::query()))
96+
->minSearchLength(5)
97+
->toJson());
98+
}
99+
}

0 commit comments

Comments
 (0)