Skip to content
This repository was archived by the owner on Jun 27, 2024. It is now read-only.

Commit 9b23d20

Browse files
committed
Tests
1 parent 396cc15 commit 9b23d20

File tree

5 files changed

+50
-5
lines changed

5 files changed

+50
-5
lines changed

app/resources/js/Pages/Users.vue

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
<script setup>
22
import BreezeGuestLayout from "@/Layouts/Guest.vue";
3-
import { Table } from "@protonemedia/inertiajs-tables-laravel-query-builder";
3+
// import { Table } from "@protonemedia/inertiajs-tables-laravel-query-builder";
44
55
// use this one for development:
6-
// import Table from "../../../../js/Components/Table.vue"
6+
import Table from "../../../../js/Components/Table.vue"
77
88
defineProps(["users"])
99
</script>
@@ -13,7 +13,7 @@ defineProps(["users"])
1313
<Table
1414
:inertia="$inertia"
1515
:resource="users"
16-
:input-debounce="0"
16+
:input-debounce-ms="50"
1717
>
1818
<template #cell(actions)="{ item: user }">
1919
<a

app/tests/Browser/InputSearchTest.php

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
<?php
2+
3+
namespace Tests\Browser;
4+
5+
use App\Models\User;
6+
use Laravel\Dusk\Browser;
7+
use Tests\DuskTestCase;
8+
9+
class InputSearchTest extends DuskTestCase
10+
{
11+
/** @test */
12+
public function it_can_search_by_name_or_email()
13+
{
14+
$this->browse(function (Browser $browser) {
15+
User::first()->forceFill([
16+
'name' => 'Pascal Baljet',
17+
'email' => '[email protected]',
18+
])->save();
19+
20+
$users = User::query()
21+
->select(['id', 'name', 'email'])
22+
->orderBy('name')
23+
->get();
24+
25+
$browser->visit('/users/eloquent')
26+
// First user
27+
->assertSeeIn('tr:first-child td:nth-child(1)', $users->get(0)->name)
28+
->assertDontSee('Pascal Baljet')
29+
->press('@add-search-row-dropdown')
30+
->press('@add-search-row-name')
31+
->type('name', 'Pascal Baljet')
32+
->waitForText('[email protected]')
33+
->press('@remove-search-row-name')
34+
->waitUntilMissingText('[email protected]')
35+
->press('@add-search-row-dropdown')
36+
->press('@add-search-row-email')
37+
->type('email', '[email protected]')
38+
->waitForText('Pascal Baljet');
39+
});
40+
}
41+
}

js/Components/Table.vue

+2-2
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ const props = defineProps({
205205
required: false,
206206
},
207207
208-
inputDebounce: {
208+
inputDebounceMs: {
209209
type: Number,
210210
default: 350,
211211
required: false,
@@ -341,7 +341,7 @@ function changeSearchInputValue(key, value) {
341341
queryBuilderData.value.searchInputs[intKey].value = value;
342342
queryBuilderData.value.cursor = null;
343343
queryBuilderData.value.page = 1;
344-
}, props.inputDebounce);
344+
}, props.inputDebounceMs);
345345
}
346346
347347
function changeGlobalSearchValue(value) {

js/Components/TableAddSearchRow.vue

+2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<template>
22
<ButtonWithDropdown
33
ref="dropdown"
4+
dusk="add-search-row-dropdown"
45
:disabled="!hasSearchInputsWithoutValue"
56
class="w-auto"
67
>
@@ -30,6 +31,7 @@
3031
<button
3132
v-for="(searchInput, key) in searchInputs"
3233
:key="key"
34+
:dusk="`add-search-row-${searchInput.key}`"
3335
class="text-left w-full px-4 py-2 text-sm text-gray-700 hover:bg-gray-100 hover:text-gray-900"
3436
role="menuitem"
3537
@click.prevent="enableSearch(searchInput.key)"

js/Components/TableSearchRows.vue

+2
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
<input
2626
:ref="skipUnwrap.el"
2727
:key="searchInput.key"
28+
:name="searchInput.key"
2829
class="block w-full sm:text-sm rounded-md shadow-sm focus:ring-indigo-500 focus:border-indigo-500 border-gray-300"
2930
:value="searchInput.value"
3031
type="text"
@@ -35,6 +36,7 @@
3536
>
3637
<button
3738
class="rounded-md text-gray-400 hover:text-gray-500 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500"
39+
:dusk="`remove-search-row-${searchInput.key}`"
3840
@click.prevent="onRemove(searchInput.key)"
3941
>
4042
<span class="sr-only">Remove search</span>

0 commit comments

Comments
 (0)