user->attachPermission( Permission::where('name', 'read-admin-panel')->firstOrFail() ); $repository = Mockery::mock(CourierInformationMirrorRepository::class); $repository->shouldReceive('relatedAvailability')->once()->andReturn([ 'main' => false, 'networks' => false, 'accounts' => false, 'network_ready' => false, 'account_ready' => false, ]); $repository->shouldReceive('available')->once()->andReturnFalse(); $repository->shouldNotReceive('state'); $repository->shouldNotReceive('syncStatus'); $repository->shouldNotReceive('ready'); $repository->shouldNotReceive('paginate'); $this->app->instance(CourierInformationMirrorRepository::class, $repository); $this->loginAs() ->get(route('business.pages.show', [ 'section' => 'courier-payables', 'page' => 'courier-information', 'courier_tab' => 'express', ])) ->assertOk() ->assertSeeText('快递资料') ->assertSeeText('共享业务镜像尚未建立,快递资料暂时无法读取。') ->assertSeeText('网点') ->assertSeeText('打款信息') ->assertSeeText('操作日志'); } public function test_page_renders_mirrored_courier_rows_and_filters(): void { $this->user->attachPermission( Permission::where('name', 'read-admin-panel')->firstOrFail() ); $repository = Mockery::mock(CourierInformationMirrorRepository::class); $repository->shouldReceive('relatedAvailability')->once()->andReturn([ 'main' => true, 'networks' => false, 'accounts' => false, 'network_ready' => false, 'account_ready' => false, ]); $repository->shouldReceive('available')->once()->andReturnTrue(); $repository->shouldReceive('state')->once()->andReturn([ 'status' => 'succeeded', 'initial_completed_at' => '2026-08-28 10:00:00', 'last_succeeded_at' => '2026-08-28 10:00:00', 'mirror_row_count' => 1, ]); $repository->shouldReceive('syncStatus')->once()->andReturn(['code' => 'healthy', 'lag_minutes' => 3]); $repository->shouldReceive('ready')->once()->andReturnTrue(); $repository->shouldReceive('paginate')->once()->withArgs(function (array $filters, int $page, int $limit): bool { return $filters['expcode'] === 'SF' && $filters['status'] === '1' && $page === 1 && $limit > 0; })->andReturn([ 'data' => [(object) [ 'Id' => 1, 'expcode' => 'SF', 'expname' => '顺丰速运', 'status' => 1, 'tradebody' => '乙方顺丰物流有限公司', 'signcom' => '甲方商贸有限公司', 'tradebtime' => '2026-01-01 00:00:00', ]], 'total' => 1, ]); $this->app->instance(CourierInformationMirrorRepository::class, $repository); $response = $this->loginAs() ->get(route('business.pages.show', [ 'section' => 'courier-payables', 'page' => 'courier-information', 'courier_tab' => 'express', 'expcode' => 'SF', 'status' => '1', ])) ->assertOk() ->assertSeeText('顺丰速运') ->assertSeeText('SF') ->assertSeeText('同步正常') ->assertSeeText('可达服务') ->assertSeeText('合同主体')->assertSeeText('乙方顺丰物流有限公司') ->assertSeeText('签订公司')->assertSeeText('甲方商贸有限公司') ->assertSeeText('第 1 / 1 页,本页 1 条,共 1 条') ->assertSee('name="expcode"', false); $this->assertMatchesRegularExpression( '/