cristiangiordano/nova-test-assertions

一个小的特性,用于帮助测试 Laravel Nova 集成

0.1.0 2020-03-16 11:46 UTC

This package is auto-updated.

Last update: 2024-09-17 22:24:35 UTC


README

一个小的包,用于帮助测试 Laravel Nova 集成。

待办事项

  • 安装指南
  • 完整记录使用示例

安装

像其他包一样要求这个包。

$ composer require cristiangiordano/nova-test-assertions

创建一个基类 tests/TestResponse

<?php

namespace Tests;

use Illuminate\Foundation\Testing\TestResponse as BaseTestResponse;
use NovaTestHelpers\NovaTestAssertions;

class TestResponse extends BaseTestResponse
{
    use NovaTestAssertions;
}

TestCase 类中覆盖 createTestResponse 方法。

    protected function createTestResponse($response)
    {
        return TestResponse::fromBaseResponse($response);
    }

最后,在一个 Nova 资源测试中,确保使用 NovaTestHelpers\NovaEndpointAware 特性。

use NovaTestHelpers\NovaEndpointAware;

class ManageAdminsTest extends TestCase
{
    use NovaEndpointAware;

    public function resource(): string
    {
        return 'admins';
    }
}

享受吧!

示例

注意:WIP 文档

 /** @test */
function viewing_a_list_of_admin_resources()
{
    $admin = factory(User::class)->state(UserRole::ADMIN)->create();
    $user  = factory(User::class)->state(UserRole::USER)->create();

    $response = $this->json('GET', $this->endpoint());

    $response->assertOk();
    $response->assertNovaCollectionLabel('Admins');
    $response->assertNovaCollectionHas($admin);
    $response->assertNovaCollectionMissing($user);
    $response->assertNovaTextField('fullname', $admin->fullname, true);
    $response->assertNovaTextField('email', $admin->email, false);
    $response->assertNovaFieldCount(2);
}

API

待办事项:这个部分需要分组和解释,抱歉!

public function assertNovaCollectionLabel(string $label)
public function assertNovaCollectionHas(Model $model)
public function assertNovaCollectionMissing(Model ...$models)
public function assertNovaFieldCount(int $count)
public function assertNovaField(string $component, array $attributes)
public function assertNovaBelongsToField(string $attribute, $value, bool $sortable = false)
public function assertNovaHasManyField(string $attribute)
public function assertNovaTextField(string $attribute, $value, bool $sortable = false)
public function assertNovaComputedField(string $name, $value, bool $sortable = false)
public function assertNovaTextareaField(string $attribute, $value, bool $sortable = false)
public function assertNovaTrixField(string $attribute, $value, bool $sortable = false)
public function assertNovaSelectField(string $attribute, $value, bool $sortable = false)
public function assertNovaMultiSelectField(string $attribute, $value)
public function assertNovaDateField(string $attribute, $value, bool $sortable = false)
public function assertNovaAvatarField(string $attribute)
public function assertNovaBooleanField(string $attribute, bool $value)
public function assertNovaSortableField(string $attribute)
public function assertNovaAdvancedMediaLibraryField(string $attribute)
public function assertNovaDateTimeField(string $attribute, $value, bool $sortable = false)
public function assertNovaMorphToField(string $attribute, $value, bool $sortable = false)
public function assertNovaActionCount(int $count)
public function assertNovaAction(string $key)
public function assertNovaMissingAction(string $key)