Modify RVS test to wait until room loaded

This allows for the alias resolution to occur before a join is attempted. In theory, join_room could in future do an optional view_room-esque thing before attemping a join which would be less fragile than dispatching things in the right order.

Also, make sure the store indicates that it is not loading when a room ID has been used - no alias resolution need take place.
pull/21833/head
Luke Barnard 2017-06-02 09:22:48 +01:00
parent 16c4c14a16
commit 7808994b71
2 changed files with 12 additions and 9 deletions

View File

@ -87,10 +87,10 @@ class RoomViewStore extends Store {
if (payload.room_id) { if (payload.room_id) {
this._setState({ this._setState({
roomId: payload.room_id, roomId: payload.room_id,
roomLoading: false,
roomLoadError: null,
}); });
} } else if (payload.room_alias) {
if (payload.room_alias && !payload.room_id) {
this._setState({ this._setState({
roomId: null, roomId: null,
roomAlias: payload.room_alias, roomAlias: payload.room_alias,

View File

@ -45,12 +45,15 @@ describe('RoomViewStore', function() {
done(); done();
}; };
dispatch({ action: 'view_room', room_alias: '#somealias2:aser.ver' }); RoomViewStore.addListener(() => {
// Wait until the room alias has resolved and the room ID is
if (!RoomViewStore.isRoomLoading()) {
expect(RoomViewStore.getRoomId()).toBe("!randomcharacters:aser.ver");
dispatch({ action: 'join_room' });
expect(RoomViewStore.isJoining()).toBe(true);
}
});
// Wait for the next event loop to allow for room alias resolution dispatch({ action: 'view_room', room_alias: '#somealias2:aser.ver' });
setTimeout(() => {
dispatch({ action: 'join_room' });
expect(RoomViewStore.isJoining()).toBe(true);
}, 0);
}); });
}); });