admin-dashboard.component.spec.ts 1.5 KB

123456789101112131415161718192021222324252627282930
  1. import { ComponentFixture, TestBed } from '@angular/core/testing';
  2. import { AdminSessionService } from '../admin-session.service';
  3. import { OperationsService } from '../operations.service';
  4. import { AdminDashboardComponent } from './admin-dashboard.component';
  5. describe('AdminDashboardComponent', () => {
  6. let fixture: ComponentFixture<AdminDashboardComponent>;
  7. let operations: jasmine.SpyObj<OperationsService>;
  8. let sessions: jasmine.SpyObj<AdminSessionService>;
  9. beforeEach(async () => {
  10. operations = jasmine.createSpyObj<OperationsService>('OperationsService', ['dashboard']);
  11. sessions = jasmine.createSpyObj<AdminSessionService>('AdminSessionService', ['applyIdentity']);
  12. operations.dashboard.and.resolveTo({
  13. identity: { objectId: 'admin-1', username: 'ops', displayName: '运营经理', roles: ['admin', 'ops-manager'], isSuperAdmin: false, operationsRole: 'ops-manager' },
  14. date: '2026-08-20', metrics: [], alerts: []
  15. });
  16. await TestBed.configureTestingModule({ imports: [AdminDashboardComponent], providers: [
  17. { provide: OperationsService, useValue: operations },
  18. { provide: AdminSessionService, useValue: sessions }
  19. ] }).compileComponents();
  20. fixture = TestBed.createComponent(AdminDashboardComponent);
  21. });
  22. it('refreshes the stored operations role from the cloud identity', async () => {
  23. fixture.detectChanges();
  24. await fixture.whenStable();
  25. expect(sessions.applyIdentity).toHaveBeenCalledWith(jasmine.objectContaining({ operationsRole: 'ops-manager' }));
  26. });
  27. });