11import { describe , it , expect , vi } from 'vitest'
22import { mount } from '@vue/test-utils'
33import NewOrganization from '@/components/organizations/NewOrganization.vue'
4+ import waitFor from 'wait-for-expect'
45
56const createWrapper = ( props ) => {
67 return mount ( NewOrganization , {
@@ -15,13 +16,12 @@ const createWrapper = (props) => {
1516 } )
1617}
1718
18- const triggerFormButton = ( wrapper ) => {
19+ const triggerFormButton = async ( wrapper ) => {
1920 const button = wrapper . findComponent ( { name : 'CsgButton' } )
20- button . trigger ( 'click' )
21- // here in the true component button click will trigger an async request and will take some time
22- // but the test code will not wait for the async function end and will go to next step to do the check
23- // if we do not wait some time here, the test will failed
24- return new Promise ( ( resolve ) => { setTimeout ( resolve , 1000 ) } )
21+ await button . trigger ( 'click' )
22+
23+ // deprecate this, as we can use waitFor to wait for the async operation to complete
24+ // return new Promise((resolve) => { setTimeout(resolve, 2000) })
2525}
2626
2727vi . mock ( '../../../stores/UserStore' , ( ) => ( {
@@ -55,8 +55,11 @@ describe('NewOrganization', () => {
5555 it ( 'validates required fields' , async ( ) => {
5656 const wrapper = createWrapper ( )
5757 await triggerFormButton ( wrapper )
58- const formErrors = wrapper . findAll ( '.el-form-item__error' )
59- expect ( formErrors . length ) . toBeGreaterThan ( 0 )
58+
59+ await waitFor ( ( ) => {
60+ const formErrors = wrapper . findAll ( '.el-form-item__error' )
61+ expect ( formErrors . length ) . toBeGreaterThan ( 0 )
62+ } )
6063 } )
6164 } )
6265
@@ -71,9 +74,13 @@ describe('NewOrganization', () => {
7174 nickname : 'valid-org' ,
7275 org_type : '企业' ,
7376 }
77+ // after reactive attr chnage, better to wait for next tick to maker sure the change apply to Dom
7478 await wrapper . vm . $nextTick ( )
7579 await triggerFormButton ( wrapper )
76- expect ( window . location . href ) . toBe ( '/organizations/testorg' )
80+
81+ await waitFor ( ( ) => {
82+ expect ( window . location . href ) . toBe ( '/organizations/testorg' )
83+ } )
7784 } )
7885 } )
7986} )
0 commit comments