| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- import { TestBed, fakeAsync, tick } from '@angular/core/testing';
- import { Router, provideRouter } from '@angular/router';
- import { WorkbenchContextService } from '../../../../app/core/services/workbench-context.service';
- import { GlobalContextBarComponent } from './global-context-bar.component';
- describe('GlobalContextBarComponent', () => {
- beforeEach(async () => {
- await TestBed.configureTestingModule({
- imports: [GlobalContextBarComponent],
- providers: [provideRouter([])],
- }).compileComponents();
- });
- it('renders only caller-provided business options', () => {
- const fixture = TestBed.createComponent(GlobalContextBarComponent);
- fixture.componentInstance.workspaceOptions = [
- { value: 'workspace-real', label: '业务空间 A' },
- ];
- fixture.componentInstance.platformOptions = [
- { value: 'jd', label: '京东' },
- ];
- fixture.detectChanges();
- const text = (fixture.nativeElement as HTMLElement).textContent ?? '';
- expect(text).toContain('业务空间 A');
- expect(text).toContain('京东');
- expect(text).not.toContain('示例店铺');
- });
- it('writes a selection to the shared context and URL', fakeAsync(() => {
- const fixture = TestBed.createComponent(GlobalContextBarComponent);
- const service = TestBed.inject(WorkbenchContextService);
- const router = TestBed.inject(Router);
- const select = document.createElement('select');
- const option = document.createElement('option');
- option.value = 'workspace-real';
- select.append(option);
- select.value = 'workspace-real';
- fixture.componentInstance.onSelection('workspaceId', { target: select } as unknown as Event);
- tick();
- expect(service.snapshot.workspaceId).toBe('workspace-real');
- expect(router.parseUrl(router.url).queryParams['workspaceId']).toBe('workspace-real');
- }));
- it('emits refresh without inventing a last-updated timestamp', () => {
- const fixture = TestBed.createComponent(GlobalContextBarComponent);
- const service = TestBed.inject(WorkbenchContextService);
- let componentRefreshes = 0;
- let serviceRefreshes = 0;
- fixture.componentInstance.refreshRequested.subscribe(() => componentRefreshes++);
- service.refreshRequested$.subscribe(() => serviceRefreshes++);
- fixture.componentInstance.requestRefresh();
- expect(componentRefreshes).toBe(1);
- expect(serviceRefreshes).toBe(1);
- expect(service.availabilitySnapshot.lastUpdated).toBeNull();
- });
- });
|