eventsauce / pest-utilities
Test utilities for EventSauce.
Installs: 125 183
Dependents: 1
Suggesters: 0
Security: 0
Stars: 2
Watchers: 1
Forks: 0
Open Issues: 0
Requires
- php: ^8.0
- eventsauce/eventsauce: ^3.0
- eventsauce/test-utilities: ^3.4
README
composer require --dev eventsauce/pest-utilities
Usage
First, create a base test case, as described in the regular PHPUnit setup.
Next, use the base test case in your Pest tests:
use function EventSauce\EventSourcing\PestTooling\expectToFail; use function EventSauce\EventSourcing\PestTooling\given; use function EventSauce\EventSourcing\PestTooling\nothingShouldHaveHappened; use function EventSauce\EventSourcing\PestTooling\when; uses(YourBaseTestCase::class); it('you can use the object-oriented interface', function () { $this->given( new ShoppingCartInitiated(), )->when(function (ShoppingCart $cart): void { $cart->addProduct(new ProductId('garlic sauce'), 250); })->then( new ProductAddedToCart(new ProductId('garlic sauce'), 250) ); }); it('or the function based interface', function () { given(new ShoppingCartInitiated()); when(function (ShoppingCart $cart): void { $cart->checkout(); }); expectToFail(SorryCantCheckout::becauseThereAreNoProductsInCart()); nothingShouldHaveHappened(); }); it('or mix it all', function () { given(new ShoppingCartInitiated()) ->when(function (ShoppingCart $cart): void { $cart->checkout(); }); expectToFail(SorryCantCheckout::becauseThereAreNoProductsInCart()) ->nothingShouldHaveHappened(); }); it('can be used in a compact manner') ->given(new ShoppingCartInitiated()) ->when(fn (ShoppingCart $cart) => $cart->add(new ProductId('garlic sauce'), 250)) ->then(new ProductAddedToCart(new ProductId('garlic sauce'), 250)) ->assertScenario(); // needed for a Pest bug