@grafana/faro-core
Version:
Core package of Faro.
83 lines • 4.08 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var __1 = require("../..");
var testUtils_1 = require("../../testUtils");
var apiTestHelpers_1 = require("../apiTestHelpers");
var const_1 = require("./const");
var initialize_1 = require("./initialize");
var userAction_1 = __importDefault(require("./userAction"));
describe('initializeUserActionsAPI', function () {
var transports;
var config;
var internalLogger;
var api;
var mockPushEvent;
beforeEach(function () {
transports = apiTestHelpers_1.mockTransports;
// eslint-disable-next-line @typescript-eslint/no-unused-expressions
config = (0, testUtils_1.mockConfig)({
userActionsInstrumentation: {
excludeItem: jest.fn(),
},
});
internalLogger = testUtils_1.mockInternalLogger;
mockPushEvent = jest.fn();
api = (0, initialize_1.initializeUserActionsAPI)({ transports: transports, config: config, internalLogger: internalLogger, pushEvent: mockPushEvent });
jest.resetAllMocks();
});
afterEach(function () {
jest.resetAllMocks();
});
it('getActiveUserAction returns undefined before any action is created', function () {
expect(api.getActiveUserAction()).toBeUndefined();
});
it('startUserAction returns a new UserAction when none exists', function () {
var action = api.startUserAction('first');
expect(action).toBeInstanceOf(userAction_1.default);
expect(api.getActiveUserAction()).toBe(action);
});
it('startUserAction has custom importance and trigger set', function () {
var action = api.startUserAction('first', undefined, {
importance: __1.UserActionImportance.Critical,
triggerName: 'foo',
});
expect(action).toBeInstanceOf(userAction_1.default);
var activeAction = api.getActiveUserAction();
expect(activeAction).toBe(action);
activeAction === null || activeAction === void 0 ? void 0 : activeAction.end();
expect(mockPushEvent).toHaveBeenCalledTimes(1);
expect(mockPushEvent).toHaveBeenCalledWith(expect.any(String), expect.objectContaining({ userActionImportance: 'critical', userActionTrigger: 'foo' }), undefined, expect.any(Object));
});
it('subsequent startUserAction calls will return undefined as long as there is an action running', function () {
api.startUserAction('A');
var a2 = api.startUserAction('B');
expect(a2).not.toBeDefined();
});
it('getActiveUserAction returns undefined if the action is ended', function () {
var action = api.startUserAction('first');
action === null || action === void 0 ? void 0 : action.end();
expect(api.getActiveUserAction()).toBeUndefined();
});
it('getActiveUserAction returns undefined if the action is cancelled', function () {
var action = api.startUserAction('first');
action === null || action === void 0 ? void 0 : action.cancel();
expect(api.getActiveUserAction()).toBeUndefined();
});
it('user action has proper event name and contains all necessary attributes', function () {
var action = api.startUserAction('test-action', { foo: 'bar' }, { importance: __1.UserActionImportance.Critical, triggerName: 'foo' });
action === null || action === void 0 ? void 0 : action.end();
expect(mockPushEvent).toHaveBeenCalledWith(const_1.userActionEventName, expect.objectContaining({
userActionName: 'test-action',
userActionDuration: expect.any(String),
userActionImportance: 'critical',
userActionStartTime: expect.any(String),
userActionEndTime: expect.any(String),
userActionTrigger: 'foo',
foo: 'bar',
}), undefined, expect.any(Object));
});
});
//# sourceMappingURL=initialize.test.js.map