- 「绑定手机号」字段取消 secret 遮蔽,页面与导出均显示镜像中的真实手机号 - 更新 StoreAccountMirrorRepositoryTest 与 PrototypePageTest 覆盖新行为 - 密码配置状态列已由 #116 完成,本提交不重复改动
84 lines
3.6 KiB
PHP
84 lines
3.6 KiB
PHP
<?php
|
|
|
|
namespace Tests\Unit\EcommerceFinance;
|
|
|
|
use Illuminate\Database\Schema\Blueprint;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Illuminate\Support\Facades\Schema;
|
|
use Modules\EcommerceFinance\Repositories\GenericBusinessMirrorRepository;
|
|
use Modules\EcommerceFinance\Repositories\StoreAccountMirrorRepository;
|
|
use Modules\EcommerceFinance\Services\BusinessMirrorDatasetRegistry;
|
|
use Tests\TestCase;
|
|
|
|
class StoreAccountMirrorRepositoryTest extends TestCase
|
|
{
|
|
private StoreAccountMirrorRepository $repository;
|
|
|
|
protected function setUp(): void
|
|
{
|
|
parent::setUp();
|
|
|
|
config([
|
|
'database.connections.business_mirror' => [
|
|
'driver' => 'sqlite',
|
|
'database' => ':memory:',
|
|
'prefix' => '',
|
|
],
|
|
'upstream_mirrors.connection' => 'business_mirror',
|
|
'upstream_mirrors.datasets' => [
|
|
StoreAccountMirrorRepository::DATASET => [
|
|
'source_key' => 'database_4',
|
|
'schema' => 'external_store_accounts',
|
|
'object' => 'accounts_v1',
|
|
'target' => 'store_accounts',
|
|
'keys' => ['id'],
|
|
],
|
|
],
|
|
]);
|
|
DB::purge('business_mirror');
|
|
|
|
Schema::connection('business_mirror')->create('business_mirror_table_states', function (Blueprint $table): void {
|
|
$table->string('dataset_key')->primary();
|
|
$table->dateTime('initial_completed_at')->nullable();
|
|
});
|
|
Schema::connection('business_mirror')->create('store_accounts', function (Blueprint $table): void {
|
|
$table->string('id')->primary();
|
|
foreach (['storeName', 'operationOwner', 'operationDepartmentHead', 'operationDirector', 'profitCenter', 'accountType', 'account', 'boundPhone', 'verificationContact', 'accountGroupName', 'createdAt', 'updatedAt'] as $column) {
|
|
$table->string($column)->nullable();
|
|
}
|
|
$table->boolean('passwordConfigured')->nullable();
|
|
});
|
|
DB::connection('business_mirror')->table('business_mirror_table_states')->insert([
|
|
'dataset_key' => StoreAccountMirrorRepository::DATASET,
|
|
'initial_completed_at' => '2026-09-04 10:00:00',
|
|
]);
|
|
|
|
$this->repository = new StoreAccountMirrorRepository(
|
|
new BusinessMirrorDatasetRegistry(),
|
|
new GenericBusinessMirrorRepository(app('db')),
|
|
);
|
|
}
|
|
|
|
public function test_it_maps_account_type_codes_to_business_labels(): void
|
|
{
|
|
foreach (['MAIN' => '主账号', 'SUB' => '子账号', '/' => null] as $type => $expected) {
|
|
DB::connection('business_mirror')->table('store_accounts')->insert([
|
|
'id' => 'account-' . md5($type),
|
|
'storeName' => '测试店铺',
|
|
'accountType' => $type,
|
|
'account' => 'test-account',
|
|
'passwordConfigured' => $type === 'MAIN' ? true : ($type === 'SUB' ? false : null),
|
|
]);
|
|
}
|
|
|
|
$rows = collect($this->repository->paginate(1, 50)['data'])->keyBy('id');
|
|
|
|
$this->assertSame('主账号', $rows['account-' . md5('MAIN')]['account_type']);
|
|
$this->assertSame('子账号', $rows['account-' . md5('SUB')]['account_type']);
|
|
$this->assertNull($rows['account-' . md5('/')]['account_type']);
|
|
$this->assertTrue($rows['account-' . md5('MAIN')]['password_configured']);
|
|
$this->assertFalse($rows['account-' . md5('SUB')]['password_configured']);
|
|
$this->assertNull($rows['account-' . md5('/')]['password_configured']);
|
|
}
|
|
}
|