40 lines
1.2 KiB
PHP
40 lines
1.2 KiB
PHP
|
|
<?php
|
||
|
|
|
||
|
|
declare(strict_types=1);
|
||
|
|
|
||
|
|
namespace Tests\Unit\Shared\ValueObjects\Config;
|
||
|
|
|
||
|
|
use Shared\ValueObjects\Config\RequestsPerMinute;
|
||
|
|
|
||
|
|
covers(RequestsPerMinute::class);
|
||
|
|
|
||
|
|
describe('RequestsPerMinute Value Object Unit Tests', function (): void {
|
||
|
|
it('creates valid requests per minute', function (): void {
|
||
|
|
// GIVEN
|
||
|
|
$rate = new RequestsPerMinute(60);
|
||
|
|
|
||
|
|
// THEN
|
||
|
|
expect($rate->value)->toBe(60)
|
||
|
|
->and($rate->toInt())->toBe(60)
|
||
|
|
->and((string) $rate)->toBe('60');
|
||
|
|
});
|
||
|
|
|
||
|
|
it('rejects values less than 1', function (int $invalid): void {
|
||
|
|
// GIVEN & WHEN & THEN
|
||
|
|
expect(fn () => new RequestsPerMinute($invalid))
|
||
|
|
->toThrow(\InvalidArgumentException::class);
|
||
|
|
})->with([0, -1, -100]);
|
||
|
|
|
||
|
|
it('compares with another RequestsPerMinute instance', function (): void {
|
||
|
|
// GIVEN
|
||
|
|
$rate60 = new RequestsPerMinute(60);
|
||
|
|
$rate120 = new RequestsPerMinute(120);
|
||
|
|
|
||
|
|
// THEN
|
||
|
|
expect($rate120->isGreaterThan($rate60))->toBeTrue()
|
||
|
|
->and($rate60->isGreaterThan($rate120))->toBeFalse()
|
||
|
|
->and($rate60->equals(new RequestsPerMinute(60)))->toBeTrue()
|
||
|
|
->and($rate60->equals($rate120))->toBeFalse();
|
||
|
|
});
|
||
|
|
});
|