-
Notifications
You must be signed in to change notification settings - Fork 20
Expand file tree
/
Copy pathKeyboardInputModal.test.js
More file actions
110 lines (91 loc) · 3.45 KB
/
KeyboardInputModal.test.js
File metadata and controls
110 lines (91 loc) · 3.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
// @flow
import React from 'react';
import Adapter from 'enzyme-adapter-react-16';
import { createIntl, IntlProvider } from 'react-intl';
import messages from './messages.json';
import { configure, mount } from 'enzyme';
import KeyboardInputModal from './KeyboardInputModal';
configure({ adapter: new Adapter()});
function createShallowKeyboardInputModal(props) {
const intl = createIntl({
locale: 'en',
defaultLocale: 'en',
messages: messages.en
});
const onChangeKeyBindingsEnabled = jest.fn();
const onChangeKeyboardInputScheme = jest.fn();
const onHide = jest.fn();
const defaultWrapperProps = {
keyBindingsEnabled: true,
keyboardInputSchemeName: "controlshift",
onChangeKeyBindingsEnabled: onChangeKeyBindingsEnabled,
onChangeKeyboardInputScheme: onChangeKeyboardInputScheme,
onHide: onHide,
show: true
}
const wrapper = mount(
React.createElement(
KeyboardInputModal,
Object.assign(
{},
defaultWrapperProps,
{ intl: intl },
props
)
),
{
wrappingComponent: IntlProvider,
wrappingComponentProps: {
locale: 'en',
defaultLocale: 'en',
messages: messages.en
}
}
);
const wrappedModal = wrapper.children().at(0).instance();
return {
wrappedModal,
onChangeKeyBindingsEnabled,
onChangeKeyboardInputScheme,
onHide
};
}
it('should be able to save keyboardInputSchemeName changes', () => {
const {wrappedModal, onChangeKeyboardInputScheme, onHide} = createShallowKeyboardInputModal();
wrappedModal.handleChangeKeyboardInputSchemeName({
target: {
value: "controlalt"
}
});
expect(wrappedModal.state.keyboardInputSchemeName).toBe("controlalt");
wrappedModal.saveChanges();
expect(onChangeKeyboardInputScheme.mock.calls.length).toBe(1);
expect(onChangeKeyboardInputScheme.mock.calls[0][0]).toBe('controlalt');
expect(onHide.mock.calls.length).toBe(1);
});
it('should be able to save keyBindingsEnabled changes', () => {
const {wrappedModal, onChangeKeyBindingsEnabled, onHide} = createShallowKeyboardInputModal();
wrappedModal.handleChangeKeyBindingsEnabled(false);
expect(wrappedModal.state.keyBindingsEnabled).toBe(false);
wrappedModal.saveChanges();
expect(onChangeKeyBindingsEnabled.mock.calls.length).toBe(1);
expect(onChangeKeyBindingsEnabled.mock.calls[0][0]).toBe(false);
expect(onHide.mock.calls.length).toBe(1);
});
it('should be able to cancel changes.', () => {
const {wrappedModal, onChangeKeyBindingsEnabled, onChangeKeyboardInputScheme, onHide} = createShallowKeyboardInputModal();
wrappedModal.handleChangeKeyboardInputSchemeName({
target: {
value: "alt"
}
});
expect(wrappedModal.state.keyboardInputSchemeName).toBe("alt");
wrappedModal.handleChangeKeyBindingsEnabled(false);
expect(wrappedModal.state.keyBindingsEnabled).toBe(false);
wrappedModal.cancelChanges();
expect(wrappedModal.state.keyboardInputSchemeName).toBe("controlshift");
expect(wrappedModal.state.keyBindingsEnabled).toBe(true);
expect(onChangeKeyBindingsEnabled.mock.calls.length).toBe(0);
expect(onChangeKeyboardInputScheme.mock.calls.length).toBe(0);
expect(onHide.mock.calls.length).toBe(1);
});