id())->toBeInstanceOf(CampaignId::class) ->and($campaign->code)->toBeInstanceOf(CampaignCode::class) ->and($campaign->name)->toBe($name) ->and($campaign->publication)->toBeFalse() ->and($campaign->printAllAtOnce)->toBeTrue() ->and($campaign->coupons)->toBe($coupons) ->and($campaign->brandCode)->toBe($brandCode) ->and($campaign->actorId)->toBe($actorId) ->and($campaign->createdAt())->toBeInstanceOf(DateTimeInterface::class) ->and($campaign->updatedAt())->toBeNull(); }); it('generates a different id for each created campaign', function () use ( $name, $printAllAtOnce, $coupons, $brandCode, $actorId, ): void { // GIVEN / WHEN $firstCampaign = Campaign::create( $name, $printAllAtOnce, $coupons, $brandCode, $actorId ); $secondCampaign = Campaign::create( $name, $printAllAtOnce, $coupons, $brandCode, $actorId ); // THEN expect($firstCampaign->id()->equals($secondCampaign->id()))->toBeFalse(); }); it('returns the creation date extracted from the id', function () use ( $name, $printAllAtOnce, $coupons, $brandCode, $actorId, ): void { // GIVEN $expected = new \DateTimeImmutable('now', new \DateTimeZone('UTC')); $campaign = Campaign::create( $name, $printAllAtOnce, $coupons, $brandCode, $actorId ); // WHEN $result = $campaign->createdAt(); // THEN expect($result->format('Y-m-d H:i:s.v'))->toBe($expected->format('Y-m-d H:i:s.v')); }); });