ldc-arcadia-api/tests/Unit/Shared/ValueObjects/Config/RequestsPerMinuteTest.php

40 lines
1.2 KiB
PHP
Raw Normal View History

<?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();
});
});