Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: user event add target prop #1538

Merged
merged 3 commits into from
Nov 30, 2023
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 48 additions & 0 deletions src/user-event/__tests__/__snapshots__/clear.test.tsx.snap
Original file line number Diff line number Diff line change
@@ -5,38 +5,46 @@ exports[`clear() supports basic case: value: "Hello! 1`] = `
{
"name": "focus",
"payload": {
"currentTarget": {},
"nativeEvent": {
"target": 0,
},
"target": {},
},
},
{
"name": "selectionChange",
"payload": {
"currentTarget": {},
"nativeEvent": {
"selection": {
"end": 6,
"start": 0,
},
},
"target": {},
},
},
{
"name": "keyPress",
"payload": {
"currentTarget": {},
"nativeEvent": {
"key": "Backspace",
},
"target": {},
},
},
{
"name": "change",
"payload": {
"currentTarget": {},
"nativeEvent": {
"eventCount": 0,
"target": 0,
"text": "",
},
"target": {},
},
},
{
@@ -46,29 +54,35 @@ exports[`clear() supports basic case: value: "Hello! 1`] = `
{
"name": "selectionChange",
"payload": {
"currentTarget": {},
"nativeEvent": {
"selection": {
"end": 0,
"start": 0,
},
},
"target": {},
},
},
{
"name": "endEditing",
"payload": {
"currentTarget": {},
"nativeEvent": {
"target": 0,
"text": "",
},
"target": {},
},
},
{
"name": "blur",
"payload": {
"currentTarget": {},
"nativeEvent": {
"target": 0,
},
"target": {},
},
},
]
@@ -79,38 +93,46 @@ exports[`clear() supports defaultValue prop: defaultValue: "Hello Default!" 1`]
{
"name": "focus",
"payload": {
"currentTarget": {},
"nativeEvent": {
"target": 0,
},
"target": {},
},
},
{
"name": "selectionChange",
"payload": {
"currentTarget": {},
"nativeEvent": {
"selection": {
"end": 14,
"start": 0,
},
},
"target": {},
},
},
{
"name": "keyPress",
"payload": {
"currentTarget": {},
"nativeEvent": {
"key": "Backspace",
},
"target": {},
},
},
{
"name": "change",
"payload": {
"currentTarget": {},
"nativeEvent": {
"eventCount": 0,
"target": 0,
"text": "",
},
"target": {},
},
},
{
@@ -120,29 +142,35 @@ exports[`clear() supports defaultValue prop: defaultValue: "Hello Default!" 1`]
{
"name": "selectionChange",
"payload": {
"currentTarget": {},
"nativeEvent": {
"selection": {
"end": 0,
"start": 0,
},
},
"target": {},
},
},
{
"name": "endEditing",
"payload": {
"currentTarget": {},
"nativeEvent": {
"target": 0,
"text": "",
},
"target": {},
},
},
{
"name": "blur",
"payload": {
"currentTarget": {},
"nativeEvent": {
"target": 0,
},
"target": {},
},
},
]
@@ -154,33 +182,40 @@ How are you?" multiline: true, 1`] = `
{
"name": "focus",
"payload": {
"currentTarget": {},
"nativeEvent": {
"target": 0,
},
"target": {},
},
},
{
"name": "selectionChange",
"payload": {
"currentTarget": {},
"nativeEvent": {
"selection": {
"end": 25,
"start": 0,
},
},
"target": {},
},
},
{
"name": "keyPress",
"payload": {
"currentTarget": {},
"nativeEvent": {
"key": "Backspace",
},
"target": {},
},
},
{
"name": "textInput",
"payload": {
"currentTarget": {},
"nativeEvent": {
"previousText": "Hello World!
How are you?",
@@ -191,16 +226,19 @@ How are you?",
"target": 0,
"text": "",
},
"target": {},
},
},
{
"name": "change",
"payload": {
"currentTarget": {},
"nativeEvent": {
"eventCount": 0,
"target": 0,
"text": "",
},
"target": {},
},
},
{
@@ -210,41 +248,49 @@ How are you?",
{
"name": "selectionChange",
"payload": {
"currentTarget": {},
"nativeEvent": {
"selection": {
"end": 0,
"start": 0,
},
},
"target": {},
},
},
{
"name": "contentSizeChange",
"payload": {
"currentTarget": {},
"nativeEvent": {
"contentSize": {
"height": 16,
"width": 0,
},
"target": 0,
},
"target": {},
},
},
{
"name": "endEditing",
"payload": {
"currentTarget": {},
"nativeEvent": {
"target": 0,
"text": "",
},
"target": {},
},
},
{
"name": "blur",
"payload": {
"currentTarget": {},
"nativeEvent": {
"target": 0,
},
"target": {},
},
},
]
@@ -259,10 +305,12 @@ exports[`clear() works when not all events have handlers 1`] = `
{
"name": "endEditing",
"payload": {
"currentTarget": {},
"nativeEvent": {
"target": 0,
"text": "",
},
"target": {},
},
},
]
9 changes: 7 additions & 2 deletions src/user-event/event-builder/common.ts
Original file line number Diff line number Diff line change
@@ -5,8 +5,6 @@
*/
function touch() {
return {
persist: jest.fn(),
currentTarget: { measure: jest.fn() },
nativeEvent: {
changedTouches: [],
identifier: 0,
@@ -18,6 +16,9 @@ function touch() {
timestamp: Date.now(),
touches: [],
},
persist: jest.fn(),
currentTarget: { measure: jest.fn() },
target: {},
};
}

@@ -48,6 +49,8 @@ export const CommonEventBuilder = {
nativeEvent: {
target: 0,
},
currentTarget: {},
target: {},
};
},

@@ -61,6 +64,8 @@ export const CommonEventBuilder = {
nativeEvent: {
target: 0,
},
currentTarget: {},
target: {},
};
},
};
2 changes: 2 additions & 0 deletions src/user-event/event-builder/scroll-view.ts
Original file line number Diff line number Diff line change
@@ -27,6 +27,8 @@ export const ScrollViewEventBuilder = {
target: 0,
velocity: { y: 0, x: 0 },
},
currentTarget: {},
target: {},
};
},
};
14 changes: 14 additions & 0 deletions src/user-event/event-builder/text-input.ts
Original file line number Diff line number Diff line change
@@ -10,6 +10,8 @@ export const TextInputEventBuilder = {
change: (text: string) => {
return {
nativeEvent: { text, target: 0, eventCount: 0 },
currentTarget: {},
target: {},
};
},

@@ -21,6 +23,8 @@ export const TextInputEventBuilder = {
keyPress: (key: string) => {
return {
nativeEvent: { key },
currentTarget: {},
target: {},
};
},

@@ -32,6 +36,8 @@ export const TextInputEventBuilder = {
submitEditing: (text: string) => {
return {
nativeEvent: { text, target: 0 },
currentTarget: {},
target: {},
};
},

@@ -43,6 +49,8 @@ export const TextInputEventBuilder = {
endEditing: (text: string) => {
return {
nativeEvent: { text, target: 0 },
currentTarget: {},
target: {},
};
},

@@ -54,6 +62,8 @@ export const TextInputEventBuilder = {
selectionChange: ({ start, end }: TextRange) => {
return {
nativeEvent: { selection: { start, end } },
currentTarget: {},
target: {},
};
},

@@ -70,6 +80,8 @@ export const TextInputEventBuilder = {
range: { start: text.length, end: text.length },
target: 0,
},
currentTarget: {},
target: {},
};
},

@@ -81,6 +93,8 @@ export const TextInputEventBuilder = {
contentSizeChange: ({ width, height }: ContentSize) => {
return {
nativeEvent: { contentSize: { width, height }, target: 0 },
currentTarget: {},
target: {},
};
},
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP

exports[`userEvent.longPress with fake timers calls onLongPress if the delayLongPress is the default one 1`] = `
[
{
"name": "longPress",
"payload": {
"currentTarget": {
"measure": [MockFunction] {
"calls": [
[
[Function],
],
[
[Function],
],
],
"results": [
{
"type": "return",
"value": undefined,
},
{
"type": "return",
"value": undefined,
},
],
},
},
"dispatchConfig": {
"registrationName": "onResponderGrant",
},
"nativeEvent": {
"changedTouches": [],
"identifier": 0,
"locationX": 0,
"locationY": 0,
"pageX": 0,
"pageY": 0,
"target": 0,
"timestamp": 0,
"touches": [],
},
"persist": [MockFunction] {
"calls": [
[],
],
"results": [
{
"type": "return",
"value": undefined,
},
],
},
"target": {},
},
},
]
`;
127 changes: 127 additions & 0 deletions src/user-event/press/__tests__/__snapshots__/press.test.tsx.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP

exports[`userEvent.press with fake timers calls onPressIn, onPress and onPressOut prop of touchable 1`] = `
[
{
"name": "pressIn",
"payload": {
"currentTarget": {
"measure": [MockFunction] {
"calls": [
[
[Function],
],
[
[Function],
],
],
"results": [
{
"type": "return",
"value": undefined,
},
{
"type": "return",
"value": undefined,
},
],
},
},
"dispatchConfig": {
"registrationName": "onResponderGrant",
},
"nativeEvent": {
"changedTouches": [],
"identifier": 0,
"locationX": 0,
"locationY": 0,
"pageX": 0,
"pageY": 0,
"target": 0,
"timestamp": 0,
"touches": [],
},
"persist": [MockFunction] {
"calls": [
[],
],
"results": [
{
"type": "return",
"value": undefined,
},
],
},
"target": {},
},
},
{
"name": "press",
"payload": {
"currentTarget": {
"measure": [MockFunction],
},
"dispatchConfig": {
"registrationName": "onResponderRelease",
},
"nativeEvent": {
"changedTouches": [],
"identifier": 0,
"locationX": 0,
"locationY": 0,
"pageX": 0,
"pageY": 0,
"target": 0,
"timestamp": 0,
"touches": [],
},
"persist": [MockFunction] {
"calls": [
[],
],
"results": [
{
"type": "return",
"value": undefined,
},
],
},
"target": {},
},
},
{
"name": "pressOut",
"payload": {
"currentTarget": {
"measure": [MockFunction],
},
"dispatchConfig": {
"registrationName": "onResponderRelease",
},
"nativeEvent": {
"changedTouches": [],
"identifier": 0,
"locationX": 0,
"locationY": 0,
"pageX": 0,
"pageY": 0,
"target": 0,
"timestamp": 0,
"touches": [],
},
"persist": [MockFunction] {
"calls": [
[],
],
"results": [
{
"type": "return",
"value": undefined,
},
],
},
"target": {},
},
},
]
`;
57 changes: 1 addition & 56 deletions src/user-event/press/__tests__/longPress.test.tsx
Original file line number Diff line number Diff line change
@@ -24,62 +24,7 @@ describe('userEvent.longPress with fake timers', () => {
);
await user.longPress(screen.getByText('press me'));

expect(events).toMatchInlineSnapshot(`
[
{
"name": "longPress",
"payload": {
"currentTarget": {
"measure": [MockFunction] {
"calls": [
[
[Function],
],
[
[Function],
],
],
"results": [
{
"type": "return",
"value": undefined,
},
{
"type": "return",
"value": undefined,
},
],
},
},
"dispatchConfig": {
"registrationName": "onResponderGrant",
},
"nativeEvent": {
"changedTouches": [],
"identifier": 0,
"locationX": 0,
"locationY": 0,
"pageX": 0,
"pageY": 0,
"target": 0,
"timestamp": 0,
"touches": [],
},
"persist": [MockFunction] {
"calls": [
[],
],
"results": [
{
"type": "return",
"value": undefined,
},
],
},
},
},
]
`);
expect(events).toMatchSnapshot();
});

test('calls onLongPress when duration is greater than specified delayLongPress', async () => {
123 changes: 1 addition & 122 deletions src/user-event/press/__tests__/press.test.tsx
Original file line number Diff line number Diff line change
@@ -32,128 +32,7 @@ describe('userEvent.press with fake timers', () => {
);
await user.press(screen.getByTestId('pressable'));

expect(events).toMatchInlineSnapshot(`
[
{
"name": "pressIn",
"payload": {
"currentTarget": {
"measure": [MockFunction] {
"calls": [
[
[Function],
],
[
[Function],
],
],
"results": [
{
"type": "return",
"value": undefined,
},
{
"type": "return",
"value": undefined,
},
],
},
},
"dispatchConfig": {
"registrationName": "onResponderGrant",
},
"nativeEvent": {
"changedTouches": [],
"identifier": 0,
"locationX": 0,
"locationY": 0,
"pageX": 0,
"pageY": 0,
"target": 0,
"timestamp": 0,
"touches": [],
},
"persist": [MockFunction] {
"calls": [
[],
],
"results": [
{
"type": "return",
"value": undefined,
},
],
},
},
},
{
"name": "press",
"payload": {
"currentTarget": {
"measure": [MockFunction],
},
"dispatchConfig": {
"registrationName": "onResponderRelease",
},
"nativeEvent": {
"changedTouches": [],
"identifier": 0,
"locationX": 0,
"locationY": 0,
"pageX": 0,
"pageY": 0,
"target": 0,
"timestamp": 0,
"touches": [],
},
"persist": [MockFunction] {
"calls": [
[],
],
"results": [
{
"type": "return",
"value": undefined,
},
],
},
},
},
{
"name": "pressOut",
"payload": {
"currentTarget": {
"measure": [MockFunction],
},
"dispatchConfig": {
"registrationName": "onResponderRelease",
},
"nativeEvent": {
"changedTouches": [],
"identifier": 0,
"locationX": 0,
"locationY": 0,
"pageX": 0,
"pageY": 0,
"target": 0,
"timestamp": 0,
"touches": [],
},
"persist": [MockFunction] {
"calls": [
[],
],
"results": [
{
"type": "return",
"value": undefined,
},
],
},
},
},
]
`);
expect(events).toMatchSnapshot();
});

test('does not trigger event when pressable is disabled', async () => {
Original file line number Diff line number Diff line change
@@ -5,6 +5,7 @@ exports[`scrollTo() with FlatList supports vertical drag scroll: scrollTo({ y: 1
{
"name": "scrollBeginDrag",
"payload": {
"currentTarget": {},
"nativeEvent": {
"contentInset": {
"bottom": 0,
@@ -31,11 +32,13 @@ exports[`scrollTo() with FlatList supports vertical drag scroll: scrollTo({ y: 1
"y": 0,
},
},
"target": {},
},
},
{
"name": "scroll",
"payload": {
"currentTarget": {},
"nativeEvent": {
"contentInset": {
"bottom": 0,
@@ -62,11 +65,13 @@ exports[`scrollTo() with FlatList supports vertical drag scroll: scrollTo({ y: 1
"y": 0,
},
},
"target": {},
},
},
{
"name": "scroll",
"payload": {
"currentTarget": {},
"nativeEvent": {
"contentInset": {
"bottom": 0,
@@ -93,11 +98,13 @@ exports[`scrollTo() with FlatList supports vertical drag scroll: scrollTo({ y: 1
"y": 0,
},
},
"target": {},
},
},
{
"name": "scroll",
"payload": {
"currentTarget": {},
"nativeEvent": {
"contentInset": {
"bottom": 0,
@@ -124,11 +131,13 @@ exports[`scrollTo() with FlatList supports vertical drag scroll: scrollTo({ y: 1
"y": 0,
},
},
"target": {},
},
},
{
"name": "scrollEndDrag",
"payload": {
"currentTarget": {},
"nativeEvent": {
"contentInset": {
"bottom": 0,
@@ -155,6 +164,7 @@ exports[`scrollTo() with FlatList supports vertical drag scroll: scrollTo({ y: 1
"y": 0,
},
},
"target": {},
},
},
]
Original file line number Diff line number Diff line change
@@ -5,6 +5,7 @@ exports[`scrollTo() supports vertical drag scroll: scrollTo({ y: 100 }) 1`] = `
{
"name": "scrollBeginDrag",
"payload": {
"currentTarget": {},
"nativeEvent": {
"contentInset": {
"bottom": 0,
@@ -31,11 +32,13 @@ exports[`scrollTo() supports vertical drag scroll: scrollTo({ y: 100 }) 1`] = `
"y": 0,
},
},
"target": {},
},
},
{
"name": "scroll",
"payload": {
"currentTarget": {},
"nativeEvent": {
"contentInset": {
"bottom": 0,
@@ -62,11 +65,13 @@ exports[`scrollTo() supports vertical drag scroll: scrollTo({ y: 100 }) 1`] = `
"y": 0,
},
},
"target": {},
},
},
{
"name": "scroll",
"payload": {
"currentTarget": {},
"nativeEvent": {
"contentInset": {
"bottom": 0,
@@ -93,11 +98,13 @@ exports[`scrollTo() supports vertical drag scroll: scrollTo({ y: 100 }) 1`] = `
"y": 0,
},
},
"target": {},
},
},
{
"name": "scroll",
"payload": {
"currentTarget": {},
"nativeEvent": {
"contentInset": {
"bottom": 0,
@@ -124,11 +131,13 @@ exports[`scrollTo() supports vertical drag scroll: scrollTo({ y: 100 }) 1`] = `
"y": 0,
},
},
"target": {},
},
},
{
"name": "scrollEndDrag",
"payload": {
"currentTarget": {},
"nativeEvent": {
"contentInset": {
"bottom": 0,
@@ -155,6 +164,7 @@ exports[`scrollTo() supports vertical drag scroll: scrollTo({ y: 100 }) 1`] = `
"y": 0,
},
},
"target": {},
},
},
]
Original file line number Diff line number Diff line change
@@ -20,14 +20,17 @@ exports[`type() for managed TextInput supports basic case: input: "Wow" 1`] = `
"touches": [],
},
"persist": [MockFunction],
"target": {},
},
},
{
"name": "focus",
"payload": {
"currentTarget": {},
"nativeEvent": {
"target": 0,
},
"target": {},
},
},
{
@@ -48,24 +51,29 @@ exports[`type() for managed TextInput supports basic case: input: "Wow" 1`] = `
"touches": [],
},
"persist": [MockFunction],
"target": {},
},
},
{
"name": "keyPress",
"payload": {
"currentTarget": {},
"nativeEvent": {
"key": "W",
},
"target": {},
},
},
{
"name": "change",
"payload": {
"currentTarget": {},
"nativeEvent": {
"eventCount": 0,
"target": 0,
"text": "W",
},
"target": {},
},
},
{
@@ -75,30 +83,36 @@ exports[`type() for managed TextInput supports basic case: input: "Wow" 1`] = `
{
"name": "selectionChange",
"payload": {
"currentTarget": {},
"nativeEvent": {
"selection": {
"end": 1,
"start": 1,
},
},
"target": {},
},
},
{
"name": "keyPress",
"payload": {
"currentTarget": {},
"nativeEvent": {
"key": "o",
},
"target": {},
},
},
{
"name": "change",
"payload": {
"currentTarget": {},
"nativeEvent": {
"eventCount": 0,
"target": 0,
"text": "Wo",
},
"target": {},
},
},
{
@@ -108,30 +122,36 @@ exports[`type() for managed TextInput supports basic case: input: "Wow" 1`] = `
{
"name": "selectionChange",
"payload": {
"currentTarget": {},
"nativeEvent": {
"selection": {
"end": 2,
"start": 2,
},
},
"target": {},
},
},
{
"name": "keyPress",
"payload": {
"currentTarget": {},
"nativeEvent": {
"key": "w",
},
"target": {},
},
},
{
"name": "change",
"payload": {
"currentTarget": {},
"nativeEvent": {
"eventCount": 0,
"target": 0,
"text": "Wow",
},
"target": {},
},
},
{
@@ -141,29 +161,35 @@ exports[`type() for managed TextInput supports basic case: input: "Wow" 1`] = `
{
"name": "selectionChange",
"payload": {
"currentTarget": {},
"nativeEvent": {
"selection": {
"end": 3,
"start": 3,
},
},
"target": {},
},
},
{
"name": "endEditing",
"payload": {
"currentTarget": {},
"nativeEvent": {
"target": 0,
"text": "Wow",
},
"target": {},
},
},
{
"name": "blur",
"payload": {
"currentTarget": {},
"nativeEvent": {
"target": 0,
},
"target": {},
},
},
]
@@ -189,14 +215,17 @@ exports[`type() for managed TextInput supports rejecting TextInput: input: "ABC"
"touches": [],
},
"persist": [MockFunction],
"target": {},
},
},
{
"name": "focus",
"payload": {
"currentTarget": {},
"nativeEvent": {
"target": 0,
},
"target": {},
},
},
{
@@ -217,24 +246,29 @@ exports[`type() for managed TextInput supports rejecting TextInput: input: "ABC"
"touches": [],
},
"persist": [MockFunction],
"target": {},
},
},
{
"name": "keyPress",
"payload": {
"currentTarget": {},
"nativeEvent": {
"key": "A",
},
"target": {},
},
},
{
"name": "change",
"payload": {
"currentTarget": {},
"nativeEvent": {
"eventCount": 0,
"target": 0,
"text": "XXXA",
},
"target": {},
},
},
{
@@ -244,30 +278,36 @@ exports[`type() for managed TextInput supports rejecting TextInput: input: "ABC"
{
"name": "selectionChange",
"payload": {
"currentTarget": {},
"nativeEvent": {
"selection": {
"end": 4,
"start": 4,
},
},
"target": {},
},
},
{
"name": "keyPress",
"payload": {
"currentTarget": {},
"nativeEvent": {
"key": "B",
},
"target": {},
},
},
{
"name": "change",
"payload": {
"currentTarget": {},
"nativeEvent": {
"eventCount": 0,
"target": 0,
"text": "XXXB",
},
"target": {},
},
},
{
@@ -277,30 +317,36 @@ exports[`type() for managed TextInput supports rejecting TextInput: input: "ABC"
{
"name": "selectionChange",
"payload": {
"currentTarget": {},
"nativeEvent": {
"selection": {
"end": 4,
"start": 4,
},
},
"target": {},
},
},
{
"name": "keyPress",
"payload": {
"currentTarget": {},
"nativeEvent": {
"key": "C",
},
"target": {},
},
},
{
"name": "change",
"payload": {
"currentTarget": {},
"nativeEvent": {
"eventCount": 0,
"target": 0,
"text": "XXXC",
},
"target": {},
},
},
{
@@ -310,29 +356,35 @@ exports[`type() for managed TextInput supports rejecting TextInput: input: "ABC"
{
"name": "selectionChange",
"payload": {
"currentTarget": {},
"nativeEvent": {
"selection": {
"end": 4,
"start": 4,
},
},
"target": {},
},
},
{
"name": "endEditing",
"payload": {
"currentTarget": {},
"nativeEvent": {
"target": 0,
"text": "XXX",
},
"target": {},
},
},
{
"name": "blur",
"payload": {
"currentTarget": {},
"nativeEvent": {
"target": 0,
},
"target": {},
},
},
]
96 changes: 96 additions & 0 deletions src/user-event/type/__tests__/__snapshots__/type.test.tsx.snap

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions src/user-event/type/__tests__/type.test.tsx
Original file line number Diff line number Diff line change
@@ -246,6 +246,8 @@ describe('type()', () => {
expect(events[7].name).toBe('submitEditing');
expect(events[7].payload).toEqual({
nativeEvent: { text: 'a', target: 0 },
currentTarget: {},
target: {},
});
});