123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- <?php
- namespace Tests\Browser\Pages;
- use Dcat\Admin\Form\Field;
- use Laravel\Dusk\Browser;
- use Tests\Browser\Components\Form\Field\HasMany;
- class PainterCreatePage extends Page
- {
- /**
- * Get the URL for the page.
- *
- * @return string
- */
- public function url()
- {
- return admin_base_path('tests/painters/create');
- }
- /**
- * Assert that the browser is on the page.
- *
- * @param Browser $browser
- * @return void
- */
- public function assert(Browser $browser)
- {
- $browser->assertPathIs($this->url())
- ->with('@form', function (Browser $browser) {
- $browser->assertSeeText('Paintings')
- ->scrollToBottom()
- ->with(new HasMany('paintings'), function (Browser $browser) {
- // 点击新增
- $browser->add();
- // 点击删除
- $browser->removeLast();
- });
- });
- }
- /**
- * Get the element shortcuts for the page.
- *
- * @return array
- */
- public function elements()
- {
- return [
- '@form' => 'form[method="POST"]',
- ];
- }
- /**
- * 注入表单.
- *
- * @param Browser $browser
- * @param array $input
- *
- * @return Browser
- */
- public function fill(Browser $browser, array $input)
- {
- return $browser->with('@form', function (Browser $browser) use ($input) {
- $inputKeys = [
- 'username',
- 'bio',
- ];
- foreach ($input as $key => $value) {
- if (in_array($key, $inputKeys, true)) {
- $browser->type($key, $value);
- continue;
- }
- if ($key === 'paintings') {
- $browser->within(new HasMany($key), function (Browser $browser) use ($value) {
- foreach ($value as $input) {
- $browser->add();
- $browser->withLastFormGroup(function (Browser $browser) use ($input) {
- foreach ($input as $k => $v) {
- $browser->script(
- <<<JS
- $('{$browser->resolver->format('.'.Field::FIELD_CLASS_PREFIX.$k)}').val('$v');
- JS
- );
- }
- });
- }
- });
- }
- }
- });
- }
- /**
- * 提交表单.
- *
- * @param Browser $browser
- *
- * @return Browser
- */
- public function submit(Browser $browser)
- {
- return $browser->with('@form', function (Browser $browser) {
- $browser->press(__('admin.submit'));
- $browser->waitForTextInBody(__('admin.save_succeeded'), 2);
- $browser->waitForLocation(admin_base_path('tests/painters'), 1);
- });
- }
- }
|