user->attachPermission( Permission::where('name', 'read-admin-panel')->firstOrFail() ); } public function testAgreementSigningPageRendersTheSigningWorkspace(): void { $this->grantWorkspaceAccess(); $this->loginAs() ->get(route('business.pages.show', [ 'section' => 'courier-payables', 'page' => 'agreement-signing', ])) ->assertOk() ->assertSeeText('协议签署') ->assertSeeText('签署任务') ->assertSeeText('发起签章') ->assertSeeText('模板管理') ->assertSeeText(EsignClient::configured() ? 'E签宝已连接' : 'E签宝未连接') ->assertSeeText('还没有协议签署任务') ->assertSeeText('收款账户变更证明.doc') ->assertSeeText('收款账户证明文件.doc') ->assertSeeText('公司主体变更证明.docx') ->assertSeeText('共用合同证明.docx') ->assertSeeText('授权委托书(快递).docx'); } public function testAgreementSigningPageIncludesSinglePageRequestFormAndLivePreview(): void { $this->grantWorkspaceAccess(); $this->loginAs() ->get(route('business.pages.show', [ 'section' => 'courier-payables', 'page' => 'agreement-signing', 'agreement_view' => 'create', ])) ->assertOk() ->assertSee('data-signing-request-form', false) ->assertSee('data-agreement-preview', false) ->assertSee('data-sign-request-send', false) ->assertDontSee('data-agreement-step-panel', false) ->assertSeeText('发起签章请求') ->assertSeeText('快递公司') ->assertSeeText('文件类型') ->assertSeeText('收款账户证明') ->assertSeeText('TPL-ACCOUNT-CERT-V2') ->assertSeeText('我方签署主体') ->assertSeeText('公司全称') ->assertSee('name="company_full_name" type="text" value="My Company" data-company-name data-subject-linked-name', false) ->assertSeeText('签署截止日期') ->assertSeeText('对方E签宝账号') ->assertSeeText('合作合同统一使用我方账号 18052733960') ->assertSeeText('填写变量') ->assertSeeText('签署完成后自动归档') ->assertSeeText('人工确认后归档') ->assertSeeText('刷新预览') ->assertSeeText('推送至E签宝') ->assertSeeText('收款帐户资料证明'); } public function testAgreementSigningPageMapsEverySourceDocumentToItsOwnFieldsAndPreview(): void { $this->grantWorkspaceAccess(); $response = $this->loginAs() ->get(route('business.pages.show', [ 'section' => 'courier-payables', 'page' => 'agreement-signing', 'agreement_view' => 'create', ])) ->assertOk(); $response ->assertSee('data-template-fields="account-proof"', false) ->assertSee('data-template-preview="account-proof"', false) ->assertSeeText('生效日期') ->assertSeeText('银行帐户') ->assertSeeText('开户名称(持卡人姓名)') ->assertSeeText('填写实际收款银行卡对应的持卡人姓名,无需与营业执照或公司全称一致。') ->assertSeeText('我司同意自') ->assertSee('data-template-fields="account-change"', false) ->assertSee('data-template-preview="account-change"', false) ->assertSeeText('原收款账户') ->assertSeeText('原账户停止使用日期') ->assertSeeText('新账户启用日期') ->assertSeeText('之前相应的账户') ->assertSee('data-template-fields="entity-change"', false) ->assertSee('data-template-preview="entity-change"', false) ->assertSeeText('变更前公司名称') ->assertSeeText('变更后公司名称') ->assertSeeText('变更后,原公司的各项事宜由变更后的公司继续执行') ->assertSee('data-template-fields="shared-contract"', false) ->assertSee('data-template-preview="shared-contract"', false) ->assertSeeText('合同合作方') ->assertSeeText('共用合同的快递名称') ->assertSeeText('共用同一份合同,打款资料为同一份资料') ->assertSee('data-template-fields="cooperation-contract"', false) ->assertSee('data-template-preview="cooperation-contract"', false) ->assertSeeText('甲方名称') ->assertSee('name="cooperation_party_a_name" type="text" value="My Company" data-subject-linked-name', false) ->assertSeeText('乙方电话') ->assertSeeText('协议开始日期') ->assertSeeText('协议结束日期') ->assertSeeText('甲、乙双方根据') ->assertSee('data-template-fields="authorization"', false) ->assertSee('data-template-preview="authorization"', false) ->assertSeeText('委托方(个人或公司)') ->assertSeeText('授权事项(可多选)') ->assertSeeText('代签汇款账号变更') ->assertSeeText('委托有效期:从'); } public function testAgreementSigningPageRejectsUsersWithoutItsSidebarPermission(): void { $subject = 'user_' . $this->user->id; setting()->set('system.sidebar_permissions', json_encode([ 'configured' => [$subject], 'subjects' => [ $subject => ['courier-payables/freight-reconciliation'], ], ], JSON_UNESCAPED_UNICODE)); try { $this->loginAs()->get(route('business.pages.show', [ 'section' => 'courier-payables', 'page' => 'agreement-signing', ])); $this->fail('没有协议签署页面权限的用户不应访问该页面。'); } catch (HttpException $exception) { $this->assertSame(404, $exception->getStatusCode()); } } }