CaiWuXiTong/tests/Feature/Common/ReportsTest.php
WuYongJie 9595267ee7
Some checks failed
Tests / PHP 8.1 (push) Has been cancelled
Tests / PHP 8.2 (push) Has been cancelled
Tests / PHP 8.3 (push) Has been cancelled
chore: 导入 Akaunting 初始源码与团队协作规则
2026-07-20 18:20:25 +08:00

66 lines
2.0 KiB
PHP

<?php
namespace Tests\Feature\Common;
use App\Reports\ProfitLoss;
use App\Models\Common\Report;
use Tests\Feature\FeatureTestCase;
class ReportsTest extends FeatureTestCase
{
public function testItShouldShowProfitLossReportWhenSettingsAreMissing()
{
$report = Report::create([
'company_id' => company_id(),
'class' => 'App\Reports\ProfitLoss',
'name' => 'Legacy Profit Loss',
'description' => 'Report without saved settings',
'settings' => null,
'created_from' => 'core::test',
'created_by' => $this->user->id,
]);
$this->loginAs()
->get(route('reports.show', $report->id))
->assertOk()
->assertSeeText('Legacy Profit Loss')
->assertSeeText(trans('reports.net_profit'));
}
public function testItShouldRenderProfitLossFooterWhenIncomeTotalsAreMissing()
{
$report = new Report([
'class' => ProfitLoss::class,
'name' => 'Profit Loss Footer',
'description' => 'Footer regression coverage',
'settings' => ['group' => 'category', 'period' => 'quarterly', 'basis' => 'accrual'],
]);
$class = new ProfitLoss($report, false);
$class->dates = ['Q1 2026', 'Q2 2026'];
$class->footer_totals = [
'expense' => ['Q1 2026' => 125],
];
$html = view('reports.profit_loss.table.footer', [
'class' => $class,
'table_key' => 'income',
])->render();
$this->assertStringContainsString(trans_choice('general.totals', 1), $html);
$this->assertStringNotContainsString('Undefined array key', $html);
}
public function testItShouldRenderMoneyComponentWhenAmountIsEmptyString()
{
$html = view('money::components.money', [
'amount' => '',
'currency' => 'USD',
'convert' => false,
])->render();
$this->assertNotEmpty($html);
$this->assertStringNotContainsString('Invalid amount', $html);
}
}