@@ -46,6 +46,17 @@ Deno.test("reform, n-depth array", () => {
4646 assertEquals ( reform ( form ) , { multiple : [ [ "1" ] , [ "2" ] , [ "3" ] , [ "4" ] ] } ) ;
4747} ) ;
4848
49+ Deno . test ( "reform, sparse array" , ( ) => {
50+ const form = new FormData ( ) ;
51+
52+ form . append ( "multiple[5]" , "5" ) ;
53+ form . append ( "multiple[3]" , "3" ) ;
54+
55+ assertEquals ( reform ( form ) , {
56+ multiple : [ null , null , null , "3" , null , "5" ] , // fill sparse as null
57+ } ) ;
58+ } ) ;
59+
4960Deno . test ( "reform, n-depth, indexed array" , ( ) => {
5061 const form = new FormData ( ) ;
5162
@@ -69,3 +80,74 @@ Deno.test("reform, object array", () => {
6980 users : [ { id : "10" , name : "wan2land" } , { id : "11" , name : "wan3land" } ] ,
7081 } ) ;
7182} ) ;
83+
84+ Deno . test ( "reform, n-depth object" , ( ) => {
85+ const form = new FormData ( ) ;
86+
87+ form . append ( "user[id]" , "11" ) ;
88+ form . append ( "user.name" , "wan2land" ) ;
89+ form . append ( "user[pet].name" , "bori" ) ;
90+ form . append ( "user[pet][age]" , "5" ) ;
91+
92+ assertEquals ( reform ( form ) , {
93+ user : {
94+ id : "11" ,
95+ name : "wan2land" ,
96+ pet : { name : "bori" , age : "5" } ,
97+ } ,
98+ } ) ;
99+ } ) ;
100+
101+ Deno . test ( "reform, wrong array, overwrite" , ( ) => {
102+ {
103+ const form = new FormData ( ) ;
104+
105+ form . append ( "user.name.something" , "foo" ) ;
106+ form . append ( "user[]" , "wan2land" ) ;
107+ form . append ( "user.name" , "wan2land" ) ; // overwrite!
108+
109+ assertEquals ( reform ( form ) , {
110+ user : {
111+ name : "wan2land" ,
112+ } ,
113+ } ) ;
114+ }
115+ {
116+ const form = new FormData ( ) ;
117+
118+ form . append ( "user[]" , "wan3land" ) ;
119+ form . append ( "user.name" , "wan2land" ) ;
120+ form . append ( "user[]" , "wan2land" ) ; // overwrite!
121+
122+ assertEquals ( reform ( form ) , {
123+ user : [ "wan2land" ] ,
124+ } ) ;
125+ }
126+ } ) ;
127+
128+ Deno . test ( "reform, wrong object, overwrite" , ( ) => {
129+ {
130+ const form = new FormData ( ) ;
131+
132+ form . append ( "user.name" , "wan2land" ) ;
133+ form . append ( "user" , "wan2land" ) ;
134+ form . append ( "user.name" , "wan2land" ) ; // overwrite!
135+
136+ assertEquals ( reform ( form ) , {
137+ user : {
138+ name : "wan2land" ,
139+ } ,
140+ } ) ;
141+ }
142+ {
143+ const form = new FormData ( ) ;
144+
145+ form . append ( "user" , "wan2land" ) ;
146+ form . append ( "user.name" , "wan2land" ) ;
147+ form . append ( "user" , "wan2land" ) ; // overwrite!
148+
149+ assertEquals ( reform ( form ) , {
150+ user : "wan2land" ,
151+ } ) ;
152+ }
153+ } ) ;
0 commit comments