- 基础环境:Docker 部署配置,源码挂载实时同步 - 修复:super_admin 权限补全、登录重定向循环 - 开发:店铺营销账户账单 - 抖音账户(15字段汇总账单) - 开发:店铺营销账户账单 - 淘系支付宝账户(8字段流水账单) - 开发:店铺营销账户账单 - 拼多多账户(7字段流水账单) - 业务页面导航集成:config/business_navigation.php + Business\Pages 控制器 - 各平台独立表结构和视图,互不影响
66 lines
2.0 KiB
PHP
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);
|
|
}
|
|
}
|