value))->toBeTrue() ->and(Uuid::fromString($code->value)->getVersion())->toBe(7); }); it('generates a different code each time', function (): void { // GIVEN / WHEN $first = CampaignCode::generate(); $second = CampaignCode::generate(); // THEN expect($first->value)->not->toBe($second->value); }); it('wraps a given uuid v7', function (): void { // GIVEN $uuid = Uuid::uuid7(); // WHEN $code = new CampaignCode($uuid); // THEN expect($code->value)->toBe($uuid->toString()); }); it('rejects a uuid that is not v7', function (): void { // GIVEN / WHEN / THEN expect(fn (): CampaignCode => new CampaignCode(Uuid::uuid4())) ->toThrow(\DomainException::class); }); });