@@ -14,12 +14,14 @@ See the License for the specific language governing permissions and
14
14
limitations under the License.
15
15
*/
16
16
17
+ import { EventEmitter } from "events" ;
17
18
import { mocked } from 'jest-mock' ;
18
19
import { EventType } from "matrix-js-sdk/src/@types/event" ;
19
20
import { RoomMember } from "matrix-js-sdk/src/models/room-member" ;
20
21
import { RoomStateEvent } from "matrix-js-sdk/src/models/room-state" ;
21
22
import { defer } from "matrix-js-sdk/src/utils" ;
22
23
import { ClientEvent , RoomEvent , MatrixEvent } from 'matrix-js-sdk/src/matrix' ;
24
+ import { useEventEmitterState } from "../../src/hooks/useEventEmitter" ;
23
25
24
26
import SpaceStore from "../../src/stores/spaces/SpaceStore" ;
25
27
import {
@@ -1221,4 +1223,26 @@ describe("SpaceStore", () => {
1221
1223
expect ( SpaceStore . instance . spacePanelSpaces . map ( r => r . roomId ) ) . toStrictEqual ( [ rootSpace . roomId ] ) ;
1222
1224
await prom ;
1223
1225
} ) ;
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
+ } ) ;
1224
1248
} ) ;
0 commit comments