51 lines
1.3 KiB
PHP
51 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace Tests\Unit\Plan\UseCases;
|
|
|
|
use App\Plan\UseCases\CreatePlan;
|
|
use App\Plan\UseCases\CreatePlanRequest;
|
|
use App\User\UseCases\CreateUserDto;
|
|
use App\User\User;
|
|
use App\User\UserRepository;
|
|
use App\ValueObjects\EmailAddress;
|
|
use Tests\Fakes\FakePlanRepository;
|
|
use PHPUnit\Framework\TestCase;
|
|
use Tests\Fakes\FakeUserRepository;
|
|
|
|
class CreatePlanTest extends TestCase
|
|
{
|
|
private FakePlanRepository $planRepo;
|
|
private UserRepository $userRepo;
|
|
private CreatePlan $useCase;
|
|
|
|
public function setUp(): void
|
|
{
|
|
$this->planRepo = new FakePlanRepository;
|
|
$this->userRepo = new FakeUserRepository;
|
|
$this->userRepo->create(new CreateUserDto(
|
|
email: new EmailAddress('test@test.com'),
|
|
));
|
|
$this->useCase = new CreatePlan(
|
|
$this->planRepo,
|
|
$this->userRepo,
|
|
);
|
|
}
|
|
|
|
public function test_create_plan(): void
|
|
{
|
|
$plan = $this->useCase->execute(new CreatePlanRequest(
|
|
userId: 0,
|
|
name: 'testPlan',
|
|
));
|
|
$this->assertEquals('testPlan', $plan->getName());
|
|
}
|
|
|
|
public function test_plan_has_user(): void
|
|
{
|
|
$plan = $this->useCase->execute(new CreatePlanRequest(
|
|
userId: 0,
|
|
name: 'testPlan',
|
|
));
|
|
$this->assertInstanceOf(User::class, $plan->getUser());
|
|
}
|
|
}
|