@@ -14,12 +14,14 @@ See the License for the specific language governing permissions and
1414limitations under the License.
1515*/
1616
17+ import { EventEmitter } from "events" ;
1718import { mocked } from 'jest-mock' ;
1819import { EventType } from "matrix-js-sdk/src/@types/event" ;
1920import { RoomMember } from "matrix-js-sdk/src/models/room-member" ;
2021import { RoomStateEvent } from "matrix-js-sdk/src/models/room-state" ;
2122import { defer } from "matrix-js-sdk/src/utils" ;
2223import { ClientEvent , RoomEvent , MatrixEvent } from 'matrix-js-sdk/src/matrix' ;
24+ import { useEventEmitterState } from "../../src/hooks/useEventEmitter" ;
2325
2426import SpaceStore from "../../src/stores/spaces/SpaceStore" ;
2527import {
@@ -1221,4 +1223,26 @@ describe("SpaceStore", () => {
12211223 expect ( SpaceStore . instance . spacePanelSpaces . map ( r => r . roomId ) ) . toStrictEqual ( [ rootSpace . roomId ] ) ;
12221224 await prom ;
12231225 } ) ;
1226+
1227+ it ( "correctly emits events for metaspace changes during onReady" , async ( ) => {
1228+ // similar to useEventEmitterState, but for use inside of tests
1229+ function testEventEmitterState (
1230+ emitter : EventEmitter | undefined ,
1231+ eventName : string | symbol ,
1232+ callback : ( ...args : any [ ] ) => void ,
1233+ ) : ( ) => void {
1234+ callback ( ) ;
1235+ emitter . addListener ( eventName , callback ) ;
1236+ return ( ) => emitter . removeListener ( eventName , callback ) ;
1237+ }
1238+
1239+ let metaSpaces ;
1240+ const removeListener = testEventEmitterState ( store , UPDATE_TOP_LEVEL_SPACES , ( ) => {
1241+ metaSpaces = store . enabledMetaSpaces ;
1242+ } ) ;
1243+ expect ( metaSpaces ) . toEqual ( store . enabledMetaSpaces ) ;
1244+ await run ( ) ;
1245+ expect ( metaSpaces ) . toEqual ( store . enabledMetaSpaces ) ;
1246+ removeListener ( ) ;
1247+ } ) ;
12241248} ) ;
0 commit comments