mirror of
https://github.com/element-hq/element-web
synced 2024-11-27 03:36:07 +03:00
sliding sync: Add test to verify we send unsubscribe_rooms
for every room switch (#9784)
This adds a test to verify that we send unsubscribe_rooms for every room switch.
This commit is contained in:
parent
b07bd4d102
commit
d073b3b47c
1 changed files with 52 additions and 0 deletions
|
@ -18,6 +18,7 @@ limitations under the License.
|
||||||
|
|
||||||
import _ from "lodash";
|
import _ from "lodash";
|
||||||
import { MatrixClient } from "matrix-js-sdk/src/matrix";
|
import { MatrixClient } from "matrix-js-sdk/src/matrix";
|
||||||
|
import { Interception } from "cypress/types/net-stubbing";
|
||||||
|
|
||||||
import { SynapseInstance } from "../../plugins/synapsedocker";
|
import { SynapseInstance } from "../../plugins/synapsedocker";
|
||||||
import { SettingLevel } from "../../../src/settings/SettingLevel";
|
import { SettingLevel } from "../../../src/settings/SettingLevel";
|
||||||
|
@ -407,4 +408,55 @@ describe("Sliding Sync", () => {
|
||||||
// ensure the reply-to does not disappear
|
// ensure the reply-to does not disappear
|
||||||
cy.get(".mx_ReplyPreview").should("exist");
|
cy.get(".mx_ReplyPreview").should("exist");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("should send unsubscribe_rooms for every room switch", () => {
|
||||||
|
let roomAId: string;
|
||||||
|
let roomPId: string;
|
||||||
|
// create rooms and check room names are correct
|
||||||
|
cy.createRoom({ name: "Apple" })
|
||||||
|
.as("roomA")
|
||||||
|
.then((roomId) => (roomAId = roomId))
|
||||||
|
.then(() => cy.contains(".mx_RoomSublist", "Apple"));
|
||||||
|
|
||||||
|
cy.createRoom({ name: "Pineapple" })
|
||||||
|
.as("roomP")
|
||||||
|
.then((roomId) => (roomPId = roomId))
|
||||||
|
.then(() => cy.contains(".mx_RoomSublist", "Pineapple"));
|
||||||
|
cy.createRoom({ name: "Orange" })
|
||||||
|
.as("roomO")
|
||||||
|
.then(() => cy.contains(".mx_RoomSublist", "Orange"));
|
||||||
|
|
||||||
|
// Intercept all calls to /sync
|
||||||
|
cy.intercept({ method: "POST", url: "**/sync*" }).as("syncRequest");
|
||||||
|
|
||||||
|
const assertUnsubExists = (interception: Interception, subRoomId: string, unsubRoomId: string) => {
|
||||||
|
const body = interception.request.body;
|
||||||
|
// There may be a request without a txn_id, ignore it, as there won't be any subscription changes
|
||||||
|
if (body.txn_id === undefined) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
expect(body.unsubscribe_rooms).eql([unsubRoomId]);
|
||||||
|
expect(body.room_subscriptions).to.not.have.property(unsubRoomId);
|
||||||
|
expect(body.room_subscriptions).to.have.property(subRoomId);
|
||||||
|
};
|
||||||
|
|
||||||
|
// Select the Test Room
|
||||||
|
cy.contains(".mx_RoomTile", "Apple").click();
|
||||||
|
|
||||||
|
// and wait for cypress to get the result as alias
|
||||||
|
cy.wait("@syncRequest").then((interception) => {
|
||||||
|
// This is the first switch, so no unsubscriptions yet.
|
||||||
|
assert.isObject(interception.request.body.room_subscriptions, "room_subscriptions is object");
|
||||||
|
});
|
||||||
|
|
||||||
|
// Switch to another room
|
||||||
|
cy.contains(".mx_RoomTile", "Pineapple").click();
|
||||||
|
cy.wait("@syncRequest").then((interception) => assertUnsubExists(interception, roomPId, roomAId));
|
||||||
|
|
||||||
|
// And switch to even another room
|
||||||
|
cy.contains(".mx_RoomTile", "Apple").click();
|
||||||
|
cy.wait("@syncRequest").then((interception) => assertUnsubExists(interception, roomPId, roomAId));
|
||||||
|
|
||||||
|
// TODO: Add tests for encrypted rooms
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in a new issue