From 67cf4230ac3bfbe4355539c34ad0f5aa9df8e2a9 Mon Sep 17 00:00:00 2001
From: David Baker <dave@matrix.org>
Date: Fri, 9 Dec 2016 14:27:41 +0000
Subject: [PATCH] Fix broken tests

Promises are now not being resolved within the same tick, so give
another tick for the UI to update after all the HTTP calls have
flushed through. This is fairly terrible, but I can't immediately
see a better way of doing this.
---
 test/app-tests/loading.js | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/test/app-tests/loading.js b/test/app-tests/loading.js
index 1c6211d4..03a4d11e 100644
--- a/test/app-tests/loading.js
+++ b/test/app-tests/loading.js
@@ -154,6 +154,9 @@ describe('loading:', function () {
                 }).respond(403, "Guest access is disabled");
 
                 return httpBackend.flush();
+            }).then(() => {
+                // Wait for another trip around the event loop for the UI to update
+                return q.delay(1);
             }).then(() => {
                 // we expect a single <Login> component
                 ReactTestUtils.findRenderedComponentWithType(
@@ -177,6 +180,9 @@ describe('loading:', function () {
                 }).respond(403, "Guest access is disabled");
 
                 return httpBackend.flush();
+            }).then(() => {
+                // Wait for another trip around the event loop for the UI to update
+                return q.delay(1);
             }).then(() => {
                 // we expect a single <Login> component
                 let login = ReactTestUtils.findRenderedComponentWithType(
@@ -191,6 +197,9 @@ describe('loading:', function () {
                 });
                 login.onPasswordLogin("user", "pass")
                 return httpBackend.flush();
+            }).then(() => {
+                // Wait for another trip around the event loop for the UI to update
+                return q.delay(1);
             }).then(() => {
                 // we expect a spinner
                 ReactTestUtils.findRenderedComponentWithType(
@@ -200,6 +209,9 @@ describe('loading:', function () {
                 httpBackend.when('POST', '/filter').respond(200, { filter_id: 'fid' });
                 httpBackend.when('GET', '/sync').respond(200, {});
                 return httpBackend.flush();
+            }).then(() => {
+                // Wait for another trip around the event loop for the UI to update
+                return q.delay(1);
             }).then(() => {
                 // once the sync completes, we should have a room view
                 httpBackend.verifyNoOutstandingExpectation();
@@ -287,6 +299,9 @@ describe('loading:', function () {
                 });
 
                 return httpBackend.flush();
+            }).then(() => {
+                // Wait for another trip around the event loop for the UI to update
+                return q.delay(1);
             }).then(() => {
                 // now we should have a spinner with a logout link
                 assertAtSyncingSpinner(matrixChat);
@@ -322,6 +337,9 @@ describe('loading:', function () {
                 });
 
                 return httpBackend.flush();
+            }).then(() => {
+                // Wait for another trip around the event loop for the UI to update
+                return q.delay(1);
             }).then(() => {
                 // now we should have a spinner with a logout link
                 assertAtSyncingSpinner(matrixChat);
@@ -358,12 +376,18 @@ describe('loading:', function () {
                 });
 
                 return httpBackend.flush();
+            }).then(() => {
+                // Wait for another trip around the event loop for the UI to update
+                return q.delay(1);
             }).then(() => {
                 // now we should have a spinner with a logout link
                 assertAtSyncingSpinner(matrixChat);
 
                 httpBackend.when('GET', '/sync').respond(200, {});
                 return httpBackend.flush();
+            }).then(() => {
+                // Wait for another trip around the event loop for the UI to update
+                return q.delay(1);
             }).then(() => {
                 // once the sync completes, we should have a room view
                 httpBackend.verifyNoOutstandingExpectation();