@@ -792,6 +792,70 @@ describe('VSelect', () => {
792792 expect ( screen . getAllByCSS ( '.v-checkbox-btn input:checked' ) ) . toHaveLength ( 1 )
793793 } )
794794
795+ describe ( 'native form submission' , ( ) => {
796+ const items = [
797+ { title : 'Item 1' , value : 1 } ,
798+ { title : 'Item 2' , value : 2 } ,
799+ { title : 'Item 3' , value : 3 } ,
800+ ]
801+
802+ it ( 'should include selected value in form data for single selection' , async ( ) => {
803+ let submittedData : FormData | null = null
804+
805+ render ( ( ) => (
806+ < form
807+ onSubmit = { e => {
808+ e . preventDefault ( )
809+ submittedData = new FormData ( e . target as HTMLFormElement )
810+ } }
811+ >
812+ < VSelect
813+ name = "select"
814+ items = { items }
815+ modelValue = { items [ 0 ] }
816+ />
817+ < button type = "submit" > Submit</ button >
818+ </ form >
819+ ) )
820+
821+ const submitButton = screen . getByRole ( 'button' , { name : 'Submit' } )
822+ await userEvent . click ( submitButton )
823+
824+ expect ( submittedData ) . not . toBeNull ( )
825+ expect ( submittedData ! . get ( 'select' ) ) . toBe ( '1' )
826+ } )
827+
828+ it ( 'should include selected values in form data for multiple selection' , async ( ) => {
829+ let submittedData : FormData | null = null
830+
831+ render ( ( ) => (
832+ < form
833+ onSubmit = { e => {
834+ e . preventDefault ( )
835+ submittedData = new FormData ( e . target as HTMLFormElement )
836+ } }
837+ >
838+ < VSelect
839+ multiple
840+ name = "select"
841+ items = { items }
842+ modelValue = { [ items [ 0 ] , items [ 1 ] ] }
843+ />
844+ < button type = "submit" > Submit</ button >
845+ </ form >
846+ ) )
847+
848+ const submitButton = screen . getByRole ( 'button' , { name : 'Submit' } )
849+ await userEvent . click ( submitButton )
850+
851+ expect ( submittedData ) . not . toBeNull ( )
852+ const select = submittedData ! . getAll ( 'select' )
853+ expect ( select ) . toHaveLength ( 2 )
854+ expect ( select ) . toContain ( '1' )
855+ expect ( select ) . toContain ( '2' )
856+ } )
857+ } )
858+
795859 describe ( 'Showcase' , ( ) => {
796860 generate ( { stories } )
797861 } )
0 commit comments