/home/bdqbpbxa/api-uniferx.goodface.com.ua/vendor/laravel/nova/src/Testing/Browser/Pages/Detail.php
<?php
namespace Laravel\Nova\Testing\Browser\Pages;
use Laravel\Dusk\Browser;
use Laravel\Nova\Testing\Browser\Components\ActionDropdownComponent;
use Laravel\Nova\Testing\Browser\Components\IndexComponent;
use Laravel\Nova\Testing\Browser\Components\Modals\DeleteResourceModalComponent;
use Laravel\Nova\Testing\Browser\Components\Modals\RestoreResourceModalComponent;
class Detail extends Page
{
public $resourceName;
public $resourceId;
/**
* Create a new page instance.
*
* @param string $resourceName
* @param string $resourceId
* @return void
*/
public function __construct($resourceName, $resourceId)
{
$this->resourceId = $resourceId;
$this->resourceName = $resourceName;
$this->setNovaPage("/resources/{$this->resourceName}/{$this->resourceId}");
}
/**
* Run the action with the given URI key.
*
* @param \Laravel\Dusk\Browser $browser
* @param string $uriKey
* @return void
*
* @throws \Facebook\WebDriver\Exception\TimeOutException
*/
public function runAction(Browser $browser, $uriKey)
{
$browser->openControlSelector()
->elsewhereWhenAvailable(new ActionDropdownComponent(), function ($browser) use ($uriKey) {
$browser->runWithConfirmation($uriKey);
});
}
/**
* Run the action with the given URI key.
*
* @param \Laravel\Dusk\Browser $browser
* @param string $uriKey
* @return void
*
* @throws \Facebook\WebDriver\Exception\TimeOutException
*/
public function runInstantAction(Browser $browser, $uriKey)
{
$browser->openControlSelector()
->elsewhereWhenAvailable(new ActionDropdownComponent(), function ($browser) use ($uriKey) {
$browser->runWithoutConfirmation($uriKey);
});
}
/**
* Open the action modal but cancel the action.
*
* @param \Laravel\Dusk\Browser $browser
* @param string $uriKey
* @return void
*
* @throws \Facebook\WebDriver\Exception\TimeOutException
*/
public function cancelAction(Browser $browser, $uriKey)
{
$browser->openControlSelector()
->elsewhereWhenAvailable(new ActionDropdownComponent(), function ($browser) use ($uriKey) {
$browser->cancel($uriKey);
});
}
/**
* Edit the resource.
*
* @param \Laravel\Dusk\Browser $browser
* @return void
*
* @throws \Facebook\WebDriver\Exception\TimeOutException
*/
public function edit(Browser $browser)
{
$browser->waitFor('@edit-resource-button')
->click('@edit-resource-button');
}
/**
* Create the related resource.
*
* @param \Laravel\Dusk\Browser $browser
* @param string $relatedResourceName
* @return void
*
* @throws \Facebook\WebDriver\Exception\TimeOutException
*/
public function runCreateRelation(Browser $browser, $relatedResourceName)
{
$browser->within(new IndexComponent($relatedResourceName), function ($browser) {
$browser->waitFor('@create-button')->click('@create-button');
})->on(new Create($relatedResourceName));
}
/**
* Create the related resource.
*
* @param \Laravel\Dusk\Browser $browser
* @param string $relatedResourceName
* @param string|null $viaRelationship
* @return void
*
* @throws \Facebook\WebDriver\Exception\TimeOutException
*/
public function runAttachRelation(Browser $browser, $relatedResourceName, $viaRelationship = null)
{
$browser->within(new IndexComponent($relatedResourceName, $viaRelationship), function ($browser) {
$browser->waitFor('@attach-button')->click('@attach-button');
})->on(new Attach($this->resourceName, $this->resourceId, $relatedResourceName, $viaRelationship));
}
/**
* Open the delete selector.
*
* @param \Laravel\Dusk\Browser $browser
* @return void
*
* @throws \Facebook\WebDriver\Exception\TimeOutException
*/
public function openControlSelector(Browser $browser)
{
$browser->whenAvailable("@{$this->resourceId}-control-selector", function ($browser) {
$browser->click('');
})->pause(100);
}
/**
* Replicate the resource.
*
* @param \Laravel\Dusk\Browser $browser
* @return void
*
* @throws \Facebook\WebDriver\Exception\TimeOutException
*/
public function replicate(Browser $browser)
{
$browser->openControlSelector()
->whenAvailable("@{$this->resourceId}-replicate-button", function ($browser) {
$browser->click('');
});
}
/**
* Delete the resource.
*
* @param \Laravel\Dusk\Browser $browser
* @return void
*
* @throws \Facebook\WebDriver\Exception\TimeOutException
*/
public function delete(Browser $browser)
{
$browser->openControlSelector()
->whenAvailable('@open-delete-modal-button', function ($browser) {
$browser->click('');
})
->elsewhereWhenAvailable(new DeleteResourceModalComponent(), function ($browser) {
$browser->confirm();
})->pause(1000);
}
/**
* Restore the resource.
*
* @param \Laravel\Dusk\Browser $browser
* @return void
*
* @throws \Facebook\WebDriver\Exception\TimeOutException
*/
public function restore(Browser $browser)
{
$browser->openControlSelector()
->whenAvailable('@open-restore-modal-button', function ($browser) {
$browser->click('');
})
->elsewhereWhenAvailable(new RestoreResourceModalComponent(), function ($browser) {
$browser->confirm();
})->pause(1000);
}
/**
* Force delete the resource.
*
* @param \Laravel\Dusk\Browser $browser
* @return void
*
* @throws \Facebook\WebDriver\Exception\TimeOutException
*/
public function forceDelete(Browser $browser)
{
$browser->openControlSelector()
->whenAvailable('@open-force-delete-modal-button', function ($browser) {
$browser->click('');
})
->elsewhereWhenAvailable(new DeleteResourceModalComponent(), function ($browser) {
$browser->confirm();
})->pause(1000);
}
/**
* Assert that the browser is on the page.
*
* @param \Laravel\Dusk\Browser $browser
* @return void
*/
public function assert(Browser $browser)
{
$browser->assertOk()->waitFor('@nova-resource-detail');
}
/**
* Get the element shortcuts for the page.
*
* @return array
*/
public function elements()
{
return [
'@nova-resource-detail' => '#app [data-testid="content"] [dusk="'.$this->resourceName.'-detail-component"]',
];
}
}