81 lines
2.5 KiB
PHP
81 lines
2.5 KiB
PHP
<?php
|
|
|
|
namespace Tests\Unit;
|
|
|
|
use App\Console\Commands\SyncStoreReceiptProductCost;
|
|
use PHPUnit\Framework\TestCase;
|
|
use ReflectionMethod;
|
|
|
|
class StoreReceiptProductCostLineTest extends TestCase
|
|
{
|
|
public function test_platform_placeholder_is_removed_when_internal_sku_exists(): void
|
|
{
|
|
[$lines, $placeholders, $bundles] = $this->costLines([
|
|
$this->row('platform', '955859844397', '3767501840732782900', 20, 2800),
|
|
$this->row('internal', 'DSG005016N11V01', '3767501840732782900', 20, 2800),
|
|
]);
|
|
|
|
$this->assertSame(1, $placeholders);
|
|
$this->assertSame(0, $bundles);
|
|
$this->assertSame('DSG005016N11V01', $lines[0]['sku']);
|
|
$this->assertSame(20.0, $lines[0]['qty']);
|
|
}
|
|
|
|
public function test_bundle_parent_is_removed_but_component_remains(): void
|
|
{
|
|
[$lines, $placeholders, $bundles] = $this->costLines([
|
|
$this->row('bundle-parent', '运营组合套装12994', '3832980288011632985', 2, 696),
|
|
$this->row(
|
|
'bundle-child',
|
|
'SJ038017N1410V02',
|
|
'3832980288011632985',
|
|
2,
|
|
625.26,
|
|
'运营组合套装12994',
|
|
),
|
|
]);
|
|
|
|
$this->assertSame(0, $placeholders);
|
|
$this->assertSame(1, $bundles);
|
|
$this->assertSame('SJ038017N1410V02', $lines[0]['sku']);
|
|
$this->assertSame(2.0, $lines[0]['qty']);
|
|
}
|
|
|
|
/** @return array{0:list<array<string,mixed>>,1:int,2:int} */
|
|
private function costLines(array $rows): array
|
|
{
|
|
$command = new SyncStoreReceiptProductCost();
|
|
$method = new ReflectionMethod($command, 'costLines');
|
|
$method->setAccessible(true);
|
|
$placeholders = 0;
|
|
$bundles = 0;
|
|
$lines = $method->invokeArgs($command, [$rows, &$placeholders, &$bundles]);
|
|
|
|
return [$lines, $placeholders, $bundles];
|
|
}
|
|
|
|
/** @return array<string,mixed> */
|
|
private function row(
|
|
string $rowKey,
|
|
string $sku,
|
|
string $shopItemId,
|
|
float $quantity,
|
|
float $amount,
|
|
string $bundleParent = '',
|
|
): array {
|
|
return [
|
|
'source' => 'jst',
|
|
'sku' => $sku,
|
|
'qty' => $quantity,
|
|
'amount' => $amount,
|
|
'warehouse' => '简尚-新苏北仓',
|
|
'o_id' => '8986587',
|
|
'parent_o_id' => '',
|
|
'row_key' => $rowKey,
|
|
'status' => 'Sent',
|
|
'shop_i_id' => $shopItemId,
|
|
'src_combine_sku_id' => $bundleParent,
|
|
];
|
|
}
|
|
}
|