ember-test-recorder
Version:
An Ember addon for recording and generating acceptance test cases through UI interactions
36 lines (31 loc) • 1.36 kB
JavaScript
import EventAdapter from './event-handlers';
import { TEST_ACTIONS } from '../constants/events';
export function setupAllEvents(context, owner) {
const testCaseGenerator = owner.lookup('service:test-case-generator');
const eventManager = owner.lookup('service:event-manager');
const eventAdapter = new EventAdapter(testCaseGenerator, eventManager);
const eventHandlers = {
[TEST_ACTIONS.CLICK]: (event) => eventAdapter.handleClick(event),
[TEST_ACTIONS.INPUT]: (event) => eventAdapter.handleInput(event),
[TEST_ACTIONS.FOCUS]: (event) => eventAdapter.handleFocus(event),
[TEST_ACTIONS.BLUR]: (event) => eventAdapter.handleBlur(event),
[TEST_ACTIONS.SUBMIT]: (event) => eventAdapter.handleSubmit(event),
[TEST_ACTIONS.POPSTATE]: (event) => eventAdapter.handlePopState(event)
};
Object.entries(eventHandlers).forEach(([eventType, handler]) => {
if (eventType === TEST_ACTIONS.POPSTATE) {
window.addEventListener(eventType, handler);
} else {
document.body.addEventListener(eventType, handler);
}
});
return () => {
Object.entries(eventHandlers).forEach(([eventType, handler]) => {
if (eventType === TEST_ACTIONS.POPSTATE) {
window.removeEventListener(eventType, handler);
} else {
document.body.removeEventListener(eventType, handler);
}
});
};
}