| 1234567891011121314151617181920212223242526272829 |
- import {TestBed} from '@angular/core/testing';
- import {Router,UrlTree,provideRouter} from '@angular/router';
- import {signal} from '@angular/core';
- import {AdminSessionService} from './admin-session.service';
- import {adminGuard} from './admin.guard';
- import {MemberCreditAccountComponent} from './components/member-credit-account.component';
- import {StoreCreditAccountComponent} from './components/store-credit-account.component';
- import {OperationsService} from './operations.service';
- import {STORE_NAVIGATION} from './admin.constants';
- describe('门店后台入口与权限',()=>{
- const session=signal({operationsRole:'store-admin',storeId:10,storeObjectId:'store-a',passwordResetRequired:false});
- beforeEach(()=>TestBed.configureTestingModule({providers:[provideRouter([]),{provide:AdminSessionService,useValue:{session,isAuthenticated:()=>true}},{provide:OperationsService,useValue:{request:()=>Promise.resolve({accounts:[],transactions:[],canPost:false,items:[],total:0})}}]}));
- it('门店首页重定向且阻止直接访问总部路由',()=>{
- for(const path of ['/admin/dashboard','/admin/vocabulary','/admin/privacy-requests','/admin/operator-accounts','/tech-admin/dashboard']){
- const result=TestBed.runInInjectionContext(()=>adminGuard({} as never,{url:path} as never)) as UrlTree;
- expect(TestBed.inject(Router).serializeUrl(result)).toBe(path==='/admin/dashboard'?'/admin/store-home':'/admin/forbidden');
- }
- for(const path of ['/admin/members','/admin/members/a','/admin/schedule','/admin/stores','/admin/stores/a','/admin/coaches','/admin/coaches/a','/admin/payroll','/admin/lessons','/admin/learning-reports','/admin/support-requests','/admin/store-home','/admin/change-password'])expect(TestBed.runInInjectionContext(()=>adminGuard({} as never,{url:path} as never))).toBeTrue();
- });
- it('展示全部八项门店业务模块和个人密码菜单',()=>{expect(STORE_NAVIGATION.flatMap(g=>g.items).map(i=>i.route)).toEqual(['/admin/store-home','/admin/members','/admin/stores','/admin/schedule','/admin/coaches','/admin/payroll','/admin/lessons','/admin/learning-reports','/admin/support-requests','/admin/change-password']);});
- it('学生充值不提供历史差错增额或旧系统导入入口',async()=>{
- const f=TestBed.createComponent(MemberCreditAccountComponent);f.componentInstance.data.set({storeId:10,storeName:'本店',trialStatus:'pending',canPost:true,accounts:[],transactions:[]} as never);f.detectChanges();
- expect(f.nativeElement.querySelector('select[name="direction"] option[value="adjust"]')).toBeNull();expect(f.nativeElement.textContent).not.toContain('核验旧体验');f.destroy();
- });
- it('本店额度说明由总部充值,不出现充值授权建议',()=>{
- const f=TestBed.createComponent(StoreCreditAccountComponent);f.componentInstance.data.set({storeId:10,storeName:'本店',canPost:false,accounts:[],transactions:[]} as never);f.detectChanges();expect(f.nativeElement.textContent).toContain('本店额度由总部充值');expect(f.nativeElement.textContent).not.toContain('单独授权');f.destroy();
- });
- });
|