@@ -77,6 +77,29 @@ test('radio onClick & onChange', async () => {
7777 wrapper . unmount ( )
7878} )
7979
80+ test ( 'radio emits update before change' , async ( ) => {
81+ const calls = [ ]
82+ const onUpdateModelValue = vi . fn ( ( value ) => {
83+ calls . push ( 'update' )
84+ wrapper . setProps ( { modelValue : value } )
85+ } )
86+ const onChange = vi . fn ( ( ) => calls . push ( 'change' ) )
87+
88+ const wrapper = mount ( VarRadio , {
89+ props : {
90+ modelValue : false ,
91+ onChange,
92+ 'onUpdate:modelValue' : onUpdateModelValue ,
93+ } ,
94+ } )
95+
96+ await wrapper . find ( '.var-radio' ) . trigger ( 'click' )
97+
98+ expect ( calls ) . toStrictEqual ( [ 'update' , 'change' ] )
99+
100+ wrapper . unmount ( )
101+ } )
102+
80103test ( 'radio toggle method' , async ( ) => {
81104 const onUpdateModelValue = vi . fn ( ( value ) => wrapper . setProps ( { modelValue : value } ) )
82105
@@ -172,6 +195,40 @@ test('radio with radio group', async () => {
172195 wrapper . unmount ( )
173196} )
174197
198+ test ( 'radio group emits update before child change' , async ( ) => {
199+ const wrapper = mount ( {
200+ components : {
201+ [ VarRadioGroup . name ] : VarRadioGroup ,
202+ [ VarRadio . name ] : VarRadio ,
203+ } ,
204+ data : ( ) => ( {
205+ value : 2 ,
206+ calls : [ ] ,
207+ } ) ,
208+ methods : {
209+ handleUpdate ( value ) {
210+ this . value = value
211+ this . calls . push ( 'update' )
212+ } ,
213+ handleChange ( ) {
214+ this . calls . push ( 'change' )
215+ } ,
216+ } ,
217+ template : `
218+ <var-radio-group :model-value="value" @update:model-value="handleUpdate">
219+ <var-radio :checked-value="1" @change="handleChange" />
220+ <var-radio :checked-value="2" />
221+ </var-radio-group>
222+ ` ,
223+ } )
224+
225+ await wrapper . find ( '.var-radio' ) . trigger ( 'click' )
226+
227+ expect ( wrapper . vm . calls ) . toStrictEqual ( [ 'update' , 'change' ] )
228+
229+ wrapper . unmount ( )
230+ } )
231+
175232test ( 'radio validation' , async ( ) => {
176233 const onUpdateModelValue = vi . fn ( ( value ) => wrapper . setProps ( { modelValue : value } ) )
177234
0 commit comments