CaiWuXiTong/tests/Feature/Business/ZhongcaiReconciliationPlatformTest.php

133 lines
6.3 KiB
PHP

<?php
namespace Tests\Feature\Business;
use App\Models\Auth\Permission;
use App\Models\StoreReceivables\StoreZhongcaiReconciliation;
use Tests\Feature\FeatureTestCase;
class ZhongcaiReconciliationPlatformTest extends FeatureTestCase
{
protected function setUp(): void
{
parent::setUp();
$this->user->attachPermission(
Permission::where('name', 'read-admin-panel')->firstOrFail()
);
}
public function testReconciliationPageProvidesPlatformTabsForCurrentPageRows(): void
{
foreach ([
['platform' => '京东商城', 'order' => 'JD-TEST-001'],
['platform' => '抖音小店', 'order' => 'DY-TEST-001'],
['platform' => '天猫旗舰店', 'order' => 'TM-TEST-001'],
['platform' => '拼多多店铺', 'order' => 'PDD-TEST-001'],
['platform' => '淘宝店铺', 'order' => 'TB-TEST-001'],
['platform' => '唯品会店铺', 'order' => 'VIP-TEST-001'],
['platform' => '京喜店铺', 'order' => 'JX-TEST-001'],
] as $row) {
StoreZhongcaiReconciliation::create([
'company_id' => $this->company->id,
'bill_date' => '2026-08-01',
'planting_order_no' => $row['order'],
'responsible_platform' => $row['platform'],
]);
}
$response = $this->loginAs()->get(route('business.pages.show', [
'section' => 'store-receivables',
'page' => 'zhongcai-reconciliation',
]));
$response
->assertOk()
->assertSee('平台筛选', false)
->assertSee('>京东<', false)
->assertSee('>抖音<', false)
->assertSee('>天猫<', false)
->assertSee('>拼多多<', false)
->assertSee('>淘宝<', false)
->assertSee('>唯品会<', false)
->assertSee('>京喜<', false)
->assertDontSee('>全部<', false)
->assertSee('data-platform="jd"', false)
->assertSee('data-platform="douyin"', false)
->assertSee('data-platform="tmall"', false)
->assertSee('data-platform="pdd"', false)
->assertSee('data-platform="taobao"', false)
->assertSee('data-platform="vipshop"', false)
->assertSee('data-platform="jingxi"', false)
->assertSee('data-platform-header="jd"', false)
->assertSeeInOrder([
'data-platform-header="jd"', '日期', '订单编号', '财务售价', '财务运费',
'财务佣金', '财务空包费', '财务打款金额', '笔数', '备注', '正确店铺',
'负责人', '账户', '类型', '创建人', '标签', '所属利润中心', '负责平台',
'ID', '实收', '运费', '差异', '是否退款', '备注', '问题件',
], false)
->assertSee('data-platform-header="douyin"', false)
->assertSeeInOrder([
'日期', '订单编号', '财务售价', '财务运费', '财务佣金',
'财务空包费', '财务打款金额', '笔数', '备注', '正确店铺', '负责人',
'账户', '类型', '创建人', '标签', '所属利润中心', '负责平台', 'ID',
'实收', '差异', '退款',
], false)
->assertSee('data-platform-header="tmall"', false)
->assertSeeInOrder([
'data-platform-header="tmall"', '日期', '订单编号', '财务售价', '财务运费',
'财务佣金', '财务空包费', '财务打款金额', '笔数', '备注',
'正确店铺', '负责人', '账户', '类型', '创建人', '标签', '所属利润中心',
'负责平台', 'ID', '实收', '差异', '是否退款', '备注', '问题件',
], false)
->assertSee('data-platform-header="pdd"', false)
->assertSeeInOrder([
'data-platform-header="pdd"', '日期', '订单编号', '财务售价', '财务运费',
'财务佣金', '财务空包费', '财务打款金额', '笔数', '备注',
'正确店铺', '负责人', '账户', '类型', '创建人', '标签', '所属利润中心',
'负责平台', 'ID', '实收', '差异', '退款', '小额打款',
], false)
->assertSee('data-platform-header="taobao"', false)
->assertSeeInOrder([
'data-platform-header="taobao"', '日期', '订单编号', '财务售价', '财务运费',
'财务佣金', '财务空包费', '财务打款金额', '笔数', '备注',
'正确店铺', '负责人', '账户', '类型', '创建人', '标签', '所属利润中心',
'负责平台', 'ID', '实收', '差异', '是否退款', '备注', '问题件',
], false)
->assertSeeInOrder([
'data-platform-header="vipshop"', '日期', '订单编号', '财务售价', '财务运费',
'财务佣金', '财务空包费', '财务打款金额', '笔数', '备注',
'正确店铺', '负责人', '账户', '类型', '创建人', '标签', '所属利润中心',
'负责平台', 'ID', '实收', '差异', '是否退款', '备注', '问题件',
], false)
->assertSee('JD-TEST-001')
->assertSee('DY-TEST-001')
->assertSee('TM-TEST-001')
->assertSee('PDD-TEST-001')
->assertSee('TB-TEST-001')
->assertSee('VIP-TEST-001')
->assertSee('JX-TEST-001');
}
public function testReconciliationPageShowsPlatformSpecificEmptyState(): void
{
StoreZhongcaiReconciliation::create([
'company_id' => $this->company->id,
'bill_date' => '2026-08-01',
'planting_order_no' => 'JD-TEST-002',
'responsible_platform' => '京东',
]);
$response = $this->loginAs()->get(route('business.pages.show', [
'section' => 'store-receivables',
'page' => 'zhongcai-reconciliation',
]));
$response
->assertOk()
->assertSee('当前页暂无抖音平台数据', false)
->assertSee('当前页暂无天猫平台数据', false)
->assertSee('当前页暂无唯品会平台数据', false);
}
}