Files
shipping-portal/tests/Feature/Companies/Processors/CreateCompanyTest.php
T
2026-04-06 11:26:16 +08:00

55 lines
1.5 KiB
PHP

<?php
namespace Tests\Feature\Companies\Processors;
use App\Classes\Modules\Companies\Processors\CreateCompanyProcessor;
use App\Classes\ValueObjects\Constants\ApprovalStatus;
use App\Classes\ValueObjects\Constants\CompanyType;
use App\Models\Company;
use Illuminate\Foundation\Testing\DatabaseTransactions;
use Tests\TestCaseChild;
use PHPUnit\Framework\Attributes\Group;
#[Group('feature')]
#[Group('companies')]
#[Group('processors')]
#[Group('ok_to_run')]
class CreateCompanyTest extends TestCaseChild
{
// use DatabaseTransactions;
/**
* @return void
*/
public function test_it_can_create_a_company_via_processor()
{
// A R R A N G E
/** @var CreateCompanyProcessor $processor */
$processor = app(CreateCompanyProcessor::class);
$name = 'Test Integration Company ' . uniqid();
// A C T
$company = $processor->execute(
$name,
CompanyType::COMPANY_BUSINESS,
ApprovalStatus::APPROVED
);
// A S S E R T
$this->assertInstanceOf(Company::class, $company);
$this->assertEquals($name, $company->name);
$this->assertEquals(CompanyType::COMPANY_BUSINESS, $company->type);
$this->assertEquals(ApprovalStatus::APPROVED, $company->status);
$this->assertNotEmpty($company->reference);
// Final database verification
$this->assertDatabaseHas('companies', [
'id' => $company->id,
'name' => $name,
'reference' => $company->reference
]);
}
}