CaiWuXiTong/tests/Unit/View/ThirdPartyWarehouseStorageViewTest.php

108 lines
4.7 KiB
PHP

<?php
namespace Tests\Unit\View;
use PHPUnit\Framework\TestCase;
class ThirdPartyWarehouseStorageViewTest extends TestCase
{
public function test_view_keeps_the_excel_columns_in_the_required_order(): void
{
$source = $this->viewSource();
preg_match_all(
"/\\['key' => '([^']+)', 'label' => '([^']+)'(?:, 'type' => '[^']+')?\\],/",
$source,
$matches,
PREG_SET_ORDER
);
$columns = array_map(
static fn (array $match): array => [$match[1], $match[2]],
array_slice($matches, 0, 28)
);
$this->assertSame([
['owner', '货主'],
['date', '日期'],
['sku_code', '商品编码'],
['image_url', '图片'],
['product_name', '商品名称'],
['short_name', '商品简称'],
['supplier', '供应商'],
['category', '分类'],
['virtual_category', '虚拟分类'],
['supplier_style_no', '供应商款号'],
['color_spec', '颜色规格'],
['brand', '品牌'],
['unit', '单位'],
['opening_qty', '期初数量'],
['closing_qty', '期末数量'],
['processing_in', '加工进仓'],
['processing_out', '加工出仓'],
['purchase_in', '采购进仓'],
['purchase_return', '采购退货'],
['other_in', '其它进仓'],
['other_return', '其它退货'],
['sales_out', '销售出仓'],
['sales_return', '销售退货'],
['stocktake', '盘点'],
['transfer_out', '调拨出'],
['transfer_in', '调拨入'],
['opening_aux', '期初'],
['other_out', '其它出库'],
], $columns);
}
public function test_view_reuses_finance_table_preferences_and_has_explicit_sync_states(): void
{
$source = $this->viewSource();
$this->assertStringContainsString('data-finance-table-surface', $source);
$this->assertStringContainsString('data-finance-field-picker', $source);
$this->assertStringContainsString('data-finance-table', $source);
$this->assertStringContainsString('data-finance-export-base', $source);
$this->assertStringContainsString('data-finance-export-query', $source);
$this->assertStringContainsString('name="dimension" value="month"', $source);
$this->assertStringContainsString('name="dimension" value="day"', $source);
$this->assertStringContainsString('name="period"', $source);
$this->assertStringContainsString("\$rows->appends(\$activeFilters)", $source);
$this->assertStringContainsString('data-warehouse-period', $source);
$this->assertStringContainsString('查询维度:商品 + 按天', $source);
$this->assertStringContainsString('每日 00:00 自动同步', $source);
$this->assertStringContainsString('首次同步尚未完成', $source);
$this->assertStringContainsString('当前展示最近一次成功同步的数据', $source);
$this->assertStringContainsString("in_array(\$scheme, ['http', 'https'], true)", $source);
$this->assertStringContainsString('referrerpolicy="no-referrer"', $source);
}
public function test_summary_only_displays_inventory_counts(): void
{
$source = $this->viewSource();
$this->assertStringContainsString('grid-template-columns:repeat(3,minmax(8rem,1fr))', $source);
$this->assertStringContainsString("['key' => 'count', 'label' => '明细记录数'", $source);
$this->assertStringContainsString("['key' => 'opening_qty', 'label' => '期初数量合计'", $source);
$this->assertStringContainsString("['key' => 'closing_qty', 'label' => '期末数量合计'", $source);
$this->assertStringNotContainsString("['key' => 'inbound_fee'", $source);
$this->assertStringNotContainsString("['key' => 'outbound_fee'", $source);
$this->assertStringNotContainsString("['key' => 'storage_fee'", $source);
$this->assertStringNotContainsString("['key' => 'total_fee'", $source);
$this->assertStringNotContainsString('ThirdPartyWarehouseStorageSettlementService', $source);
$this->assertStringNotContainsString('导出仓储费核算', $source);
$this->assertStringNotContainsString('仓储费暂时无法核算', $source);
}
private function viewSource(): string
{
$root = dirname(__DIR__, 3);
$source = file_get_contents(
$root . '/resources/views/business/pages/courier-payables/third-party-warehouse-storage.blade.php'
);
$this->assertIsString($source);
return $source;
}
}