@@ -4,22 +4,40 @@ import * as assert from "uvu/assert";
4
4
import { serializeEvent } from "../src/event-to-object.js" ;
5
5
import "./tooling/setup.js" ;
6
6
7
- function assertEqualSerializedEventData ( eventData , expectedSerializedData ) {
8
- const mockBoundingRect = {
9
- left : 0 ,
10
- top : 0 ,
11
- right : 0 ,
12
- bottom : 0 ,
13
- x : 0 ,
14
- y : 0 ,
15
- width : 0 ,
16
- } ;
7
+ const mockBoundingRect = {
8
+ left : 0 ,
9
+ top : 0 ,
10
+ right : 0 ,
11
+ bottom : 0 ,
12
+ x : 0 ,
13
+ y : 0 ,
14
+ width : 0 ,
15
+ } ;
17
16
18
- const mockElement = {
19
- tagName : null ,
20
- getBoundingClientRect : ( ) => mockBoundingRect ,
21
- } ;
17
+ const mockElement = {
18
+ tagName : null ,
19
+ getBoundingClientRect : ( ) => mockBoundingRect ,
20
+ } ;
22
21
22
+ const allTargetData = {
23
+ files : [
24
+ {
25
+ lastModified : 0 ,
26
+ name : "something" ,
27
+ type : "some-type" ,
28
+ size : 0 ,
29
+ } ,
30
+ ] ,
31
+ value : "something" ,
32
+ currentTime : 35 ,
33
+ tagName : null , // overwritten in tests
34
+ elements : [
35
+ { ...mockElement , tagName : "INPUT" , value : "first" } ,
36
+ { ...mockElement , tagName : "INPUT" , value : "second" } ,
37
+ ] ,
38
+ } ;
39
+
40
+ function assertEqualSerializedEventData ( eventData , expectedSerializedData ) {
23
41
const commonEventData = {
24
42
target : mockElement ,
25
43
currentTarget : mockElement ,
@@ -38,20 +56,6 @@ function assertEqualSerializedEventData(eventData, expectedSerializedData) {
38
56
) ;
39
57
}
40
58
41
- const allTargetData = {
42
- files : [
43
- {
44
- lastModified : 0 ,
45
- name : "something" ,
46
- type : "some-type" ,
47
- size : 0 ,
48
- } ,
49
- ] ,
50
- value : "something" ,
51
- currentTime : 35 ,
52
- tagName : null , // overwritten in tests
53
- } ;
54
-
55
59
[
56
60
{
57
61
case : "adds 'files' and 'value' attributes for INPUT if type=file" ,
@@ -76,6 +80,24 @@ const allTargetData = {
76
80
tagName,
77
81
output : { target : { currentTime : allTargetData . currentTime } } ,
78
82
} ) ) ,
83
+ ...[ "FORM" ] . map ( ( tagName ) => ( {
84
+ case : `adds 'elements' attribute for ${ tagName } element` ,
85
+ tagName,
86
+ output : {
87
+ target : {
88
+ elements : [
89
+ {
90
+ value : "first" ,
91
+ boundingClientRect : mockBoundingRect ,
92
+ } ,
93
+ {
94
+ value : "second" ,
95
+ boundingClientRect : mockBoundingRect ,
96
+ } ,
97
+ ] ,
98
+ } ,
99
+ } ,
100
+ } ) ) ,
79
101
] . forEach ( ( expectation ) => {
80
102
test ( `serializeEvent() ${ expectation . case } ` , ( ) => {
81
103
const eventData = {
@@ -113,6 +135,7 @@ const allEventData = {
113
135
clientX : "clientX" ,
114
136
clientY : "clientY" ,
115
137
ctrlKey : "ctrlKey" ,
138
+ form : "form" ,
116
139
metaKey : "metaKey" ,
117
140
pageX : "pageX" ,
118
141
pageY : "pageY" ,
0 commit comments