12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
-
- import * as JitsiConferenceEvents from '../../JitsiConferenceEvents';
- import browser from '../browser';
- import Listenable from '../util/Listenable';
-
- import Statistics from './statistics';
-
- /**
- * Mock object to be used in place of a real conference.
- *
- */
- class MockConference extends Listenable {
- /**
- * constructor
- */
- constructor() {
- super();
- this.options = {
- config: {}
- };
- }
- }
-
- describe('PerformanceObserverStats', () => {
- let mockConference, statistics;
-
- beforeEach(() => {
- // works only on chrome.
- spyOn(browser, 'isChrome').and.returnValue(true);
- mockConference = new MockConference();
- Statistics.init({ longTasksStatsInterval: 1000 });
- statistics = new Statistics();
- jasmine.clock().install();
- });
-
- it('Conference events start/stop observer', () => {
- statistics.attachLongTasksStats(mockConference);
- const startObserverSpy = spyOn(statistics.performanceObserverStats, 'startObserver');
- const stopObserverSpy = spyOn(statistics.performanceObserverStats, 'stopObserver');
-
- mockConference.eventEmitter.emit(JitsiConferenceEvents.CONFERENCE_JOINED);
- expect(startObserverSpy).toHaveBeenCalled();
-
- mockConference.eventEmitter.emit(JitsiConferenceEvents.CONFERENCE_LEFT);
- expect(stopObserverSpy).toHaveBeenCalled();
- });
-
- it('Emits long tasks stats every sec', () => {
- statistics.attachLongTasksStats(mockConference);
- statistics.performanceObserverStats.eventEmitter = {
- // eslint-disable-next-line no-empty-function
- emit: () => {}
- };
- statistics.performanceObserverStats.startObserver();
- const eventEmitSpy = spyOn(statistics.performanceObserverStats.eventEmitter, 'emit');
-
- expect(statistics.performanceObserverStats.getLongTasksStats()).toBeTruthy();
- expect(eventEmitSpy).not.toHaveBeenCalled();
-
- jasmine.clock().tick(1000);
- expect(eventEmitSpy).toHaveBeenCalled();
- });
-
- afterEach(() => {
- jasmine.clock().uninstall();
- });
- });
|