Added "toBeInvokable" arch expectation.

This commit is contained in:
Ash Allen
2023-08-01 12:09:18 +01:00
parent 4de70da0a0
commit 011bd3ba82
9 changed files with 127 additions and 0 deletions

View File

@ -0,0 +1,29 @@
<?php
use Pest\Arch\Exceptions\ArchExpectationFailedException;
test('class is invokable')
->expect('Tests\\Fixtures\\Arch\\ToBeInvokable\\IsInvokable\\InvokableClass')
->toBeInvokable();
test('opposite class is invokable')
->throws(ArchExpectationFailedException::class)
->expect('Tests\\Fixtures\\Arch\\ToBeInvokable\\IsInvokable\\InvokableClass')
->not->toBeInvokable();
test('class is invokable via a parent class')
->expect('Tests\\Fixtures\\Arch\\ToBeInvokable\\IsInvokable\\InvokableClassViaParent')
->toBeInvokable();
test('class is invokable via a trait')
->expect('Tests\\Fixtures\\Arch\\ToBeInvokable\\IsInvokable\\InvokableClassViaTrait')
->toBeInvokable();
test('failure when the class is not invokable')
->throws(ArchExpectationFailedException::class)
->expect('Tests\\Fixtures\\Arch\\ToBeInvokable\\IsNotInvokable\\IsNotInvokableClass')
->toBeInvokable();
test('class is not invokable')
->expect('Tests\\Fixtures\\Arch\\ToBeInvokable\\IsNotInvokable\\IsNotInvokableClass')
->not->toBeInvokable();

View File

@ -0,0 +1,13 @@
<?php
declare(strict_types=1);
namespace Tests\Fixtures\Arch\ToBeInvokable\IsInvokable;
class InvokableClass
{
public function __invoke(): void
{
}
}

View File

@ -0,0 +1,10 @@
<?php
declare(strict_types=1);
namespace Tests\Fixtures\Arch\ToBeInvokable\IsInvokable;
class InvokableClassViaParent extends ParentInvokableClass
{
//
}

View File

@ -0,0 +1,10 @@
<?php
declare(strict_types=1);
namespace Tests\Fixtures\Arch\ToBeInvokable\IsInvokable;
class InvokableClassViaTrait
{
use InvokableTrait;
}

View File

@ -0,0 +1,13 @@
<?php
declare(strict_types=1);
namespace Tests\Fixtures\Arch\ToBeInvokable\IsInvokable;
trait InvokableTrait
{
public function __invoke(): void
{
//
}
}

View File

@ -0,0 +1,13 @@
<?php
declare(strict_types=1);
namespace Tests\Fixtures\Arch\ToBeInvokable\IsInvokable;
class ParentInvokableClass
{
public function __invoke(): void
{
}
}

View File

@ -0,0 +1,13 @@
<?php
declare(strict_types=1);
namespace Tests\Fixtures\Arch\ToBeInvokable\IsNotInvokable;
class IsNotInvokableClass
{
public function handle(): void
{
}
}