mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
EventBus: Introduces new event bus with emitter backward compatible interface (#27564)
* updated * Experimenting with event bus with legacy support * Before switch to emitter * EventBus & Emitter unification * Everything using new EventBus * Making progress * Fixing merge issues * Final merge issues * Updated * Updates * Fix * Updated * Update * Update * Rename methods to publish and subscribe * Ts fixes * Updated * updated * fixing doc warnigns * removed unused file
This commit is contained in:
@@ -1,10 +1,9 @@
|
||||
import 'whatwg-fetch'; // fetch polyfill needed for PhantomJs rendering
|
||||
import { Observable, of } from 'rxjs';
|
||||
import { delay } from 'rxjs/operators';
|
||||
import { AppEvents, DataQueryErrorType } from '@grafana/data';
|
||||
import { AppEvents, DataQueryErrorType, EventBusExtended } from '@grafana/data';
|
||||
|
||||
import { BackendSrv } from '../services/backend_srv';
|
||||
import { Emitter } from '../utils/emitter';
|
||||
import { ContextSrv, User } from '../services/context_srv';
|
||||
import { describe, expect } from '../../../test/lib/common';
|
||||
import { BackendSrvRequest, FetchError } from '@grafana/runtime';
|
||||
@@ -35,9 +34,11 @@ const getTestContext = (overides?: object) => {
|
||||
};
|
||||
return of(mockedResponse);
|
||||
});
|
||||
const appEventsMock: Emitter = ({
|
||||
|
||||
const appEventsMock: EventBusExtended = ({
|
||||
emit: jest.fn(),
|
||||
} as any) as Emitter;
|
||||
} as any) as EventBusExtended;
|
||||
|
||||
const user: User = ({
|
||||
isSignedIn: props.isSignedIn,
|
||||
orgId: props.orgId,
|
||||
|
||||
@@ -1,67 +0,0 @@
|
||||
import { Emitter } from '../utils/emitter';
|
||||
import { eventFactory } from '@grafana/data';
|
||||
|
||||
const testEvent = eventFactory('test');
|
||||
|
||||
describe('Emitter', () => {
|
||||
describe('given 2 subscribers', () => {
|
||||
it('should notfiy subscribers', () => {
|
||||
const events = new Emitter();
|
||||
let sub1Called = false;
|
||||
let sub2Called = false;
|
||||
|
||||
events.on(testEvent, () => {
|
||||
sub1Called = true;
|
||||
});
|
||||
events.on(testEvent, () => {
|
||||
sub2Called = true;
|
||||
});
|
||||
|
||||
events.emit(testEvent, null);
|
||||
|
||||
expect(sub1Called).toBe(true);
|
||||
expect(sub2Called).toBe(true);
|
||||
});
|
||||
|
||||
it('when subscribing twice', () => {
|
||||
const events = new Emitter();
|
||||
let sub1Called = 0;
|
||||
|
||||
function handler() {
|
||||
sub1Called += 1;
|
||||
}
|
||||
|
||||
events.on(testEvent, handler);
|
||||
events.on(testEvent, handler);
|
||||
|
||||
events.emit(testEvent, null);
|
||||
|
||||
expect(sub1Called).toBe(2);
|
||||
});
|
||||
|
||||
it('should handle errors', () => {
|
||||
const events = new Emitter();
|
||||
let sub1Called = 0;
|
||||
let sub2Called = 0;
|
||||
|
||||
events.on(testEvent, () => {
|
||||
sub1Called++;
|
||||
throw { message: 'hello' };
|
||||
});
|
||||
|
||||
events.on(testEvent, () => {
|
||||
sub2Called++;
|
||||
});
|
||||
|
||||
try {
|
||||
events.emit(testEvent, null);
|
||||
} catch (_) {}
|
||||
try {
|
||||
events.emit(testEvent, null);
|
||||
} catch (_) {}
|
||||
|
||||
expect(sub1Called).toBe(2);
|
||||
expect(sub2Called).toBe(0);
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user