mirror of
https://github.com/element-hq/element-web
synced 2024-11-25 02:35:48 +03:00
Merge pull request #1938 from vector-im/rav/more_loading_tests
More app-loading tests
This commit is contained in:
commit
b742342062
1 changed files with 97 additions and 16 deletions
|
@ -50,6 +50,8 @@ describe('loading:', function () {
|
|||
// document.body.appendChild(parentDiv);
|
||||
|
||||
windowLocation = null;
|
||||
|
||||
window.localStorage.clear();
|
||||
});
|
||||
|
||||
afterEach(function() {
|
||||
|
@ -131,8 +133,7 @@ describe('loading:', function () {
|
|||
q.delay(1).then(() => {
|
||||
// at this point, we're trying to do a guest registration;
|
||||
// we expect a spinner
|
||||
ReactTestUtils.findRenderedComponentWithType(
|
||||
matrixChat, sdk.getComponent('elements.Spinner'));
|
||||
assertAtLoadingSpinner(matrixChat);
|
||||
|
||||
httpBackend.when('POST', '/register').check(function(req) {
|
||||
expect(req.queryParams.kind).toEqual('guest');
|
||||
|
@ -153,8 +154,7 @@ describe('loading:', function () {
|
|||
q.delay(1).then(() => {
|
||||
// at this point, we're trying to do a guest registration;
|
||||
// we expect a spinner
|
||||
ReactTestUtils.findRenderedComponentWithType(
|
||||
matrixChat, sdk.getComponent('elements.Spinner'));
|
||||
assertAtLoadingSpinner(matrixChat);
|
||||
|
||||
httpBackend.when('POST', '/register').check(function(req) {
|
||||
expect(req.queryParams.kind).toEqual('guest');
|
||||
|
@ -193,14 +193,10 @@ describe('loading:', function () {
|
|||
|
||||
describe("MatrixClient rehydrated from stored credentials:", function() {
|
||||
beforeEach(function() {
|
||||
// start with a logged-in client
|
||||
MatrixClientPeg.replaceUsingCreds({
|
||||
homeserverUrl: 'http://localhost',
|
||||
identityServerUrl: 'http://localhost',
|
||||
userId: '@me:localhost',
|
||||
accessToken: 'access_token',
|
||||
guest: false,
|
||||
});
|
||||
localStorage.setItem("mx_hs_url", "http://localhost" );
|
||||
localStorage.setItem("mx_is_url", "http://localhost" );
|
||||
localStorage.setItem("mx_access_token", "access_token");
|
||||
localStorage.setItem("mx_user_id", "@me:localhost");
|
||||
});
|
||||
|
||||
it('shows a directory by default if we have no joined rooms', function(done) {
|
||||
|
@ -212,8 +208,8 @@ describe('loading:', function () {
|
|||
|
||||
q.delay(1).then(() => {
|
||||
// we expect a spinner
|
||||
ReactTestUtils.findRenderedComponentWithType(
|
||||
matrixChat, sdk.getComponent('elements.Spinner'));
|
||||
assertAtSyncingSpinner(matrixChat);
|
||||
|
||||
return httpBackend.flush();
|
||||
}).then(() => {
|
||||
// once the sync completes, we should have a directory
|
||||
|
@ -233,8 +229,8 @@ describe('loading:', function () {
|
|||
|
||||
q.delay(1).then(() => {
|
||||
// we expect a spinner
|
||||
ReactTestUtils.findRenderedComponentWithType(
|
||||
matrixChat, sdk.getComponent('elements.Spinner'));
|
||||
assertAtSyncingSpinner(matrixChat);
|
||||
|
||||
return httpBackend.flush();
|
||||
}).then(() => {
|
||||
// once the sync completes, we should have a room view
|
||||
|
@ -246,4 +242,89 @@ describe('loading:', function () {
|
|||
|
||||
});
|
||||
});
|
||||
|
||||
describe('Guest auto-registration:', function() {
|
||||
it('shows a directory by default', function (done) {
|
||||
let matrixChat = loadApp("");
|
||||
|
||||
q.delay(1).then(() => {
|
||||
// at this point, we're trying to do a guest registration;
|
||||
// we expect a spinner
|
||||
assertAtLoadingSpinner(matrixChat);
|
||||
|
||||
httpBackend.when('POST', '/register').check(function(req) {
|
||||
expect(req.queryParams.kind).toEqual('guest');
|
||||
}).respond(200, {
|
||||
user_id: "@guest:localhost",
|
||||
access_token: "secret_token",
|
||||
});
|
||||
|
||||
return httpBackend.flush();
|
||||
}).then(() => {
|
||||
// now we should have a spinner with a logout link
|
||||
assertAtSyncingSpinner(matrixChat);
|
||||
|
||||
httpBackend.when('GET', '/sync').respond(200, {});
|
||||
return httpBackend.flush();
|
||||
}).then(() => {
|
||||
// once the sync completes, we should have a directory
|
||||
httpBackend.verifyNoOutstandingExpectation();
|
||||
ReactTestUtils.findRenderedComponentWithType(
|
||||
matrixChat, sdk.getComponent('structures.RoomDirectory'));
|
||||
expect(windowLocation.hash).toEqual("#/directory");
|
||||
}).done(done, done);
|
||||
});
|
||||
|
||||
it('shows a room view if we followed a room link', function(done) {
|
||||
let matrixChat = loadApp("#/room/!room:id");
|
||||
q.delay(10).then(() => {
|
||||
// at this point, we're trying to do a guest registration;
|
||||
// we expect a spinner
|
||||
assertAtLoadingSpinner(matrixChat);
|
||||
|
||||
httpBackend.when('POST', '/register').check(function(req) {
|
||||
expect(req.queryParams.kind).toEqual('guest');
|
||||
}).respond(200, {
|
||||
user_id: "@guest:localhost",
|
||||
access_token: "secret_token",
|
||||
});
|
||||
|
||||
return httpBackend.flush();
|
||||
}).then(() => {
|
||||
// now we should have a spinner with a logout link
|
||||
assertAtSyncingSpinner(matrixChat);
|
||||
|
||||
httpBackend.when('GET', '/sync').respond(200, {});
|
||||
return httpBackend.flush();
|
||||
}).then(() => {
|
||||
// once the sync completes, we should have a room view
|
||||
httpBackend.verifyNoOutstandingExpectation();
|
||||
ReactTestUtils.findRenderedComponentWithType(
|
||||
matrixChat, sdk.getComponent('structures.RoomView'));
|
||||
expect(windowLocation.hash).toEqual("#/room/!room:id");
|
||||
}).done(done, done);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
// assert that we are on the loading page
|
||||
function assertAtLoadingSpinner(matrixChat) {
|
||||
var domComponent = ReactDOM.findDOMNode(matrixChat);
|
||||
expect(domComponent.className).toEqual("mx_MatrixChat_splash");
|
||||
|
||||
// just the spinner
|
||||
expect(domComponent.children.length).toEqual(1);
|
||||
}
|
||||
|
||||
// we've got login creds, and are waiting for the sync to finish.
|
||||
// the page includes a logout link.
|
||||
function assertAtSyncingSpinner(matrixChat) {
|
||||
var domComponent = ReactDOM.findDOMNode(matrixChat);
|
||||
expect(domComponent.className).toEqual("mx_MatrixChat_splash");
|
||||
|
||||
ReactTestUtils.findRenderedComponentWithType(
|
||||
matrixChat, sdk.getComponent('elements.Spinner'));
|
||||
var logoutLink = ReactTestUtils.findRenderedDOMComponentWithTag(
|
||||
matrixChat, 'a');
|
||||
expect(logoutLink.text).toEqual("Logout");
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue