PHPackages                             dk-dev/testrine - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Testing &amp; Quality](/categories/testing)
4. /
5. dk-dev/testrine

ActiveLibrary[Testing &amp; Quality](/categories/testing)

dk-dev/testrine
===============

0.2.9(3mo ago)046MITPHPPHP ^8.1

Since Dec 17Pushed 3mo agoCompare

[ Source](https://github.com/KoryaginDmitry/testrine)[ Packagist](https://packagist.org/packages/dk-dev/testrine)[ RSS](/packages/dk-dev-testrine/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (28)Used By (0)

Testrine
========

[](#testrine)

The package covers the application with tests (analyzing routes, Eloquent resources, FormRequests, and Attributes). Based on the test results, information is collected for each route, and then OpenAPI documentation is generated from the collected data. The package is intended for Laravel developers.

Installation
------------

[](#installation)

```
composer require dk-dev/testrine
```

Publishing config, translations, and resources

```
php artisan vendor:publish --provider="DkDev\Testrine\TestrineServiceProvider"
```

General workflow:

- Define the configuration,
- Create base classes for each group,
- Cover it with tests,
- Run the tests,
- Collectors collect data,
- Processors generate documentation,
- Save the documentation.

Configuration
-------------

[](#configuration)

### Key Points

[](#key-points)

- You can have different groups (e.g., web, api, admin), each group can have its own users, response codes, etc.
- A default group is already defined in the configuration. Its settings apply to all other groups, but this group is not
- used in test generation,
- In the original documentation, the "api" group was added, all its settings will be taken from the default group, but we
- can override them.

### Analysis of each configuration block

[](#analysis-of-each-configuration-block)

#### tests block

[](#tests-block)

```
'groups' => [
    'default' => [

        'users' => [
            'guest',
            'user',
        ],

        'document' => true,

        'contracts' => [
            CodeContract::class => CodeContractResolver::class,
            DocIgnoreContract::class => DocIgnoreResolver::class,
            FakeStorageContract::class => FakeStorageResolver::class,
            InvalidateCodeContract::class => InvalidateContractResolver::class,
            InvalidateContract::class => InvalidateContractResolver::class,
            InvalidParametersCodeContract::class => InvalidParametersCodeResolver::class,
            InvalidParametersContract::class => InvalidParametersContractResolver::class,
            JobContract::class => JobResolver::class,
            MockContract::class => MockResolver::class,
            NotificationContract::class => NotificationResolver::class,
            ParametersContract::class => ParametersContractResolver::class,
            SeedContract::class => SeedResolver::class,
            ValidateContract::class => ValidateContractResolver::class,
            ResponseContract::class => ResponseContractResolver::class,
        ],

        'code' => [
            'valid_data' => ValidDataCodeResolver::class,
            'invalid_data' => InvalidDataCodeResolver::class,
            'invalid_route_params' => InvalidRouteParamsResolver::class,
        ],

        'auth_middleware' => 'auth:sanctum',

        'auth' => [
            'guest' => WithoutAuthStrategy::class,
            'user' => SanctumAuthStrategy::class,
        ],
    ],

    'api' => [],
],
```

#### users

[](#users)

In users, we define which users will be used within the group. For example, in api, there might only be guest and user. For example, in the web group, there might be performer, customer, and guest. There might also be other groups with their own users.

```
'users' => [
    'guest',
    'user',
],
```

**Important!** For each user, you will need to implement methods in the TestCase class or in base classes that will be created later. Below is an example implementation for the initial configuration.

```
