update action testing documentation to include testing modals

This commit is contained in:
Brent Kelly
2024-08-09 11:26:00 +12:00
parent a2180d210c
commit ea4c093c6f
+20 -1
View File
@@ -86,6 +86,25 @@ it('stops sending if invoice has no email address', function () {
});
```
## Testing modal content
To assert against the content of a modal, you should first mount the action (rather than call it which resolves the modal). You can then use [livewire assertions](https://livewire.laravel.com/docs/testing#assertions) such as `assertSee` to assert the modal has rendered as you expect:
```php
use function Pest\Livewire\livewire;
it('confirms the target address before sending', function () {
$invoice = Invoice::factory()->create();
$recipientEmail = $invoice->company->primaryContact->email;
livewire(EditInvoice::class, [
'invoice' => $invoice,
])
->mountAction('send')
->assertSee($recipientEmail);
});
```
## Errors
`assertHasNoActionErrors()` is used to assert that no validation errors occurred when submitting the action form.
@@ -126,7 +145,7 @@ it('can send invoices to the primary contact by default', function () {
])
->callMountedAction()
->assertHasNoActionErrors();
expect($invoice->refresh())
->isSent()->toBeTrue()
->recipient_email->toBe($recipientEmail);