Skip to content
Snippets Groups Projects
group-monitor.component.spec.ts 4.11 KiB
Newer Older
  • Learn to ignore specific revisions
  • paf's avatar
    paf committed
    /* eslint-disable class-methods-use-this */
    // eslint-disable-next-line max-classes-per-file
    
    paf's avatar
    paf committed
    import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
    
    paf's avatar
    paf committed
    import { MatIconModule } from '@angular/material/icon';
    import { MatSidenavModule } from '@angular/material/sidenav';
    import { MatRadioModule } from '@angular/material/radio';
    import { MatCheckboxModule } from '@angular/material/checkbox';
    import { MatMenuModule } from '@angular/material/menu';
    import { MatTooltipModule } from '@angular/material/tooltip';
    
    import { MatTableModule } from '@angular/material/table';
    
    paf's avatar
    paf committed
    import { BehaviorSubject, Observable, of } from 'rxjs';
    
    paf's avatar
    paf committed
    import { MatDialog, MatDialogModule } from '@angular/material/dialog';
    import { RouterTestingModule } from '@angular/router/testing';
    import { NoopAnimationsModule } from '@angular/platform-browser/animations';
    
    paf's avatar
    paf committed
    import { CustomtextPipe } from 'iqb-components';
    import { Pipe } from '@angular/core';
    
    import { MatSlideToggleModule } from '@angular/material/slide-toggle';
    
    paf's avatar
    paf committed
    import { GroupMonitorComponent } from './group-monitor.component';
    import {
    
    paf's avatar
    paf committed
      CheckingOptions, CommandResponse,
    
    paf's avatar
    paf committed
      GroupData, TestSession,
    
    paf's avatar
    paf committed
      TestSessionData, TestSessionSetStats
    
    paf's avatar
    paf committed
    } from './group-monitor.interfaces';
    import { BackendService } from './backend.service';
    
    import { TestSessionComponent } from './test-session/test-session.component';
    import { TestSessionManager } from './test-session-manager/test-session-manager.service';
    
    paf's avatar
    paf committed
    import {
      unitTestSessionsStats,
      unitTestCheckedStats,
      unitTestExampleSessions,
      unitTestCommandResponse
    
    } from './unit-test-example-data.spec';
    
    paf's avatar
    paf committed
    
    class MockMatDialog {
    
      open(): { afterClosed: () => Observable<{ action: boolean }> } {
    
    paf's avatar
    paf committed
        return {
          afterClosed: () => of({ action: true })
        };
      }
    }
    
    class MockBackendService {
      observeSessionsMonitor(): Observable<TestSessionData[]> {
    
        return of([unitTestExampleSessions[0].data]);
    
    paf's avatar
    paf committed
      }
    
      getGroupData(groupName: string): Observable<GroupData> {
        return of(<GroupData>{
          name: groupName,
          label: `Label of: ${groupName}`
        });
      }
    
      cutConnection(): void {}
    }
    
    
    class MockTestSessionManagerService {
    
        enableAutoCheckAll: false,
    
    paf's avatar
    paf committed
    
    
      sessionsStats$ = new BehaviorSubject<TestSessionSetStats>(unitTestSessionsStats);
    
      checkedStats$ = new BehaviorSubject<TestSessionSetStats>(unitTestCheckedStats);
    
    paf's avatar
    paf committed
      sessions$ = new BehaviorSubject<TestSession[]>(unitTestExampleSessions);
    
    paf's avatar
    paf committed
      commandResponses$ = new BehaviorSubject<CommandResponse>(unitTestCommandResponse);
    
    paf's avatar
    paf committed
      sessions = unitTestExampleSessions;
      // eslint-disable-next-line @typescript-eslint/no-unused-vars
      connect = (_: string) => {};
    
      disconnect = () => {};
    
    paf's avatar
    paf committed
      isChecked = () => false;
    }
    
    
    paf's avatar
    paf committed
    @Pipe({ name: 'customtext' })
    // eslint-disable-next-line @typescript-eslint/no-unused-vars
    class MockCustomtextPipe {
      // eslint-disable-next-line @typescript-eslint/no-unused-vars
    
    paf's avatar
    paf committed
      transform(defaultValue: string, ..._: string[]): Observable<string> {
    
    paf's avatar
    paf committed
        return of<string>(defaultValue);
      }
    }
    
    
    paf's avatar
    paf committed
    describe('GroupMonitorComponent', () => {
      let component: GroupMonitorComponent;
      let fixture: ComponentFixture<GroupMonitorComponent>;
    
    
    paf's avatar
    paf committed
      beforeEach(waitForAsync(() => {
    
    paf's avatar
    paf committed
        TestBed.configureTestingModule({
          declarations: [
            GroupMonitorComponent,
    
    paf's avatar
    paf committed
            CustomtextPipe
    
    paf's avatar
    paf committed
          ],
          imports: [
            MatIconModule,
            MatTooltipModule,
            MatDialogModule,
            RouterTestingModule,
            MatMenuModule,
            MatSidenavModule,
            NoopAnimationsModule,
            MatRadioModule,
    
            MatCheckboxModule,
            MatTableModule,
    
    paf's avatar
    paf committed
          ],
          providers: [
    
            { provide: TestSessionManager, useValue: new MockTestSessionManagerService() },
    
    paf's avatar
    paf committed
            { provide: MatDialog, useValue: new MockMatDialog() },
            { provide: BackendService, useValue: new MockBackendService() }
          ]
        })
          .compileComponents();
      }));
    
      beforeEach(() => {
        fixture = TestBed.createComponent(GroupMonitorComponent);
        fixture.detectChanges();
        component = fixture.componentInstance;
      });
    
      it('should create', () => {
        expect(component).toBeTruthy();
      });
    });