diff --git a/test/app-tests/joining.js b/test/app-tests/joining.js index c5646732..76d90ce8 100644 --- a/test/app-tests/joining.js +++ b/test/app-tests/joining.js @@ -72,14 +72,13 @@ describe('joining a room', function () { var ROOM_ALIAS = '#alias:localhost'; var ROOM_ID = '!id:localhost'; - httpBackend.when('PUT', '/presence/'+encodeURIComponent(USER_ID)+'/status') - .respond(200, {}); httpBackend.when('GET', '/pushrules').respond(200, {}); httpBackend.when('POST', '/filter').respond(200, { filter_id: 'fid' }); httpBackend.when('GET', '/sync').respond(200, {}); - httpBackend.when('POST', '/publicRooms').respond(200, {chunk: []}); - httpBackend.when('GET', '/thirdparty/protocols').respond(200, {}); - httpBackend.when('GET', '/directory/room/'+encodeURIComponent(ROOM_ALIAS)).respond(200, { room_id: ROOM_ID }); + + // note that we deliberately do *not* set an expectation for a + // presence update - setting one makes the first httpBackend.flush + // return before the first /sync arrives. // start with a logged-in client localStorage.setItem("mx_hs_url", HS_URL ); @@ -94,9 +93,18 @@ describe('joining a room', function () { matrixChat._setPage(PageTypes.RoomDirectory); var roomView; + // wait for /sync to happen return q.delay(1).then(() => { return httpBackend.flush(); + }).then(() => { + // wait for the directory requests + httpBackend.when('POST', '/publicRooms').respond(200, {chunk: []}); + httpBackend.when('GET', '/thirdparty/protocols').respond(200, {}); + return q.all([ + httpBackend.flush('/publicRooms'), + httpBackend.flush('/thirdparty/protocols'), + ]); }).then(() => { var roomDir = ReactTestUtils.findRenderedComponentWithType( matrixChat, RoomDirectory); @@ -110,6 +118,7 @@ describe('joining a room', function () { // that should create a roomview which will start a peek; wait // for the peek. + httpBackend.when('GET', '/directory/room/'+encodeURIComponent(ROOM_ALIAS)).respond(200, { room_id: ROOM_ID }); httpBackend.when('GET', '/rooms/'+encodeURIComponent(ROOM_ID)+"/initialSync") .respond(401, {errcode: 'M_GUEST_ACCESS_FORBIDDEN'}); return httpBackend.flush();