CaiWuXiTong/tests/Unit/View/StoreReceivingBalanceOverviewTest.php
qiuxiang e5e11a25cb fix: 月度期末余额按发生时间仅展示单月
移除 7-9 月历史列和环比列,按发生时间结束日期所在月份读取平台及店铺汇总。
2026-11-11 14:11:58 +08:00

100 lines
6.2 KiB
PHP

<?php
namespace Tests\Unit\View;
use PHPUnit\Framework\TestCase;
class StoreReceivingBalanceOverviewTest extends TestCase
{
public function test_overview_renders_occurrence_date_filter_and_four_required_totals(): void
{
$source = file_get_contents(
__DIR__ . '/../../../resources/assets/js/components/business/StoreReceivingBalanceOverview.vue'
);
$this->assertStringContainsString('账户余额总览', $source);
$this->assertStringContainsString('期初余额合计', $source);
$this->assertStringContainsString('收入合计', $source);
$this->assertStringContainsString('支出合计', $source);
$this->assertStringContainsString('期末余额合计', $source);
$this->assertStringContainsString('期初余额 + 收入合计 - 支出合计', $source);
$this->assertStringContainsString('@submit.prevent="applyTimeRange"', $source);
$this->assertStringContainsString('<flat-picker', $source);
$this->assertStringContainsString('发生时间', $source);
$this->assertStringContainsString('查询中…', $source);
$this->assertStringContainsString('start: this.queryRange.start', $source);
$this->assertStringContainsString('end: this.queryRange.end', $source);
$this->assertStringContainsString('结束日期不能早于开始日期', $source);
$this->assertStringContainsString('暂不展示不完整合计', $source);
$this->assertStringContainsString(':aria-busy="loading', $source);
$this->assertStringContainsString('(单位:万元)', $source);
$this->assertStringContainsString('value: this.moneyWan(this.summary.opening_balance)', $source);
$this->assertStringContainsString('value: this.moneyWan(this.summary.income)', $source);
$this->assertStringContainsString('value: this.moneyWan(this.summary.expense)', $source);
$this->assertStringContainsString('value: this.moneyWan(this.summary.balance)', $source);
$this->assertStringContainsString('}万`;', $source);
$this->assertStringContainsString(':title="card.title"', $source);
$this->assertStringContainsString('查看明细', $source);
$this->assertStringContainsString('openDetails(card.key)', $source);
$this->assertStringContainsString('detailTitle', $source);
$this->assertStringContainsString('收入合计', $source);
$this->assertStringContainsString('支出合计', $source);
$this->assertStringContainsString("{ key: 'platform', label: '平台' }", $source);
$this->assertStringContainsString("{ key: 'store', label: '店铺' }", $source);
$this->assertStringContainsString("{ key: 'bill_item', label: '账单项目' }", $source);
$this->assertStringContainsString("{ key: 'store', label: '店铺名称' }", $source);
$this->assertStringContainsString('income-detail', $source);
$this->assertStringContainsString('expense-detail', $source);
$this->assertStringContainsString('balance-detail', $source);
$this->assertStringContainsString('balance-store-detail', $source);
$this->assertStringContainsString("detailFlow === 'balance'", $source);
$this->assertStringContainsString('期末余额(万元)', $source);
$this->assertStringContainsString("detailFlow === 'balance' ? '店铺名称' : '店铺'", $source);
$this->assertStringContainsString('fetchStoreBalanceDetails', $source);
$this->assertStringContainsString('该店铺缺少期初余额', $source);
$this->assertStringContainsString('当前筛选合计(万元)', $source);
}
public function test_overview_tab_is_placed_before_taobao_alipay_navigation(): void
{
$navigation = file_get_contents(__DIR__ . '/../../../config/business_navigation.php');
$this->assertLessThan(
strpos($navigation, "['slug' => 'taobao-alipay', 'title' => '淘系支付宝账户']"),
strpos($navigation, "['slug' => 'balance-overview', 'title' => '账户余额总览']"),
);
}
public function test_overview_contains_selected_month_closing_summary_without_comparison(): void
{
$source = file_get_contents(
__DIR__ . '/../../../resources/assets/js/components/business/StoreReceivingBalanceOverview.vue'
);
$this->assertStringContainsString('月度期末余额汇总', $source);
$this->assertStringContainsString('平台账户', $source);
$this->assertStringContainsString('monthly-closing-table', $source);
$this->assertStringContainsString('monthlyClosingMonthLabel', $source);
$this->assertStringContainsString('const selectedDate = this.queryRange.end || this.queryRange.start', $source);
$this->assertStringContainsString('month: this.monthlyClosingMonth', $source);
$this->assertStringContainsString('month: month.key', $source);
$this->assertStringContainsString("'各平台'", $source);
$this->assertStringContainsString('金额单位:万元', $source);
$this->assertStringContainsString('monthlyBalanceWan', $source);
$this->assertStringContainsString('Number(value) / 10000', $source);
$this->assertStringContainsString('monthlyClosingRows', $source);
$this->assertStringContainsString('fetchMonthlyClosing', $source);
$this->assertStringContainsString('店铺汇总', $source);
$this->assertStringContainsString('monthly-closing-view-switch', $source);
$this->assertStringContainsString('selectMonthlyClosingView', $source);
$this->assertStringContainsString('fetchMonthlyClosingStores', $source);
$this->assertStringContainsString('monthlyStoreRows', $source);
$this->assertStringContainsString('monthly-closing-store-table', $source);
$this->assertStringContainsString('店铺期末余额 = 期初余额 + 收入 - 支出', $source);
$this->assertStringContainsString('缺少期初时显示“—”', $source);
$this->assertStringNotContainsString('环比', $source);
$this->assertStringNotContainsString('2026 年 7-10 月', $source);
$this->assertStringNotContainsString('body.comparison', $source);
}
}