element-web/test/events/location/getShareableLocationEvent-test.ts

76 lines
2.6 KiB
TypeScript
Raw Normal View History

/*
Copyright 2024 New Vector Ltd.
Copyright 2022 The Matrix.org Foundation C.I.C.
SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only
Please see LICENSE files in the repository root for full details.
*/
2022-12-12 11:24:14 +00:00
import { EventType, MatrixEvent, MsgType } from "matrix-js-sdk/src/matrix";
import { getShareableLocationEvent } from "../../../src/events";
import {
getMockClientWithEventEmitter,
makeBeaconEvent,
makeBeaconInfoEvent,
makeLocationEvent,
makeRoomWithBeacons,
} from "../../test-utils";
2022-12-12 11:24:14 +00:00
describe("getShareableLocationEvent()", () => {
const userId = "@alice:server.org";
const roomId = "!room:server.org";
const client = getMockClientWithEventEmitter({
getRoom: jest.fn(),
});
2022-12-12 11:24:14 +00:00
it("returns null for a non-location event", () => {
const alicesMessageEvent = new MatrixEvent({
type: EventType.RoomMessage,
sender: userId,
room_id: roomId,
content: {
msgtype: MsgType.Text,
2022-12-12 11:24:14 +00:00
body: "Hello",
},
});
expect(getShareableLocationEvent(alicesMessageEvent, client)).toBe(null);
});
2022-12-12 11:24:14 +00:00
it("returns the event for a location event", () => {
const locationEvent = makeLocationEvent("geo:52,42");
expect(getShareableLocationEvent(locationEvent, client)).toBe(locationEvent);
});
2022-12-12 11:24:14 +00:00
describe("beacons", () => {
it("returns null for a beacon that is not live", () => {
const notLiveBeacon = makeBeaconInfoEvent(userId, roomId, { isLive: false });
makeRoomWithBeacons(roomId, client, [notLiveBeacon]);
expect(getShareableLocationEvent(notLiveBeacon, client)).toBe(null);
});
2022-12-12 11:24:14 +00:00
it("returns null for a live beacon that does not have a location", () => {
const liveBeacon = makeBeaconInfoEvent(userId, roomId, { isLive: true });
makeRoomWithBeacons(roomId, client, [liveBeacon]);
expect(getShareableLocationEvent(liveBeacon, client)).toBe(null);
});
2022-12-12 11:24:14 +00:00
it("returns the latest location event for a live beacon with location", () => {
const liveBeacon = makeBeaconInfoEvent(userId, roomId, { isLive: true }, "id");
const locationEvent = makeBeaconEvent(userId, {
beaconInfoId: liveBeacon.getId(),
2022-12-12 11:24:14 +00:00
geoUri: "geo:52,42",
// make sure its in live period
timestamp: Date.now() + 1,
});
makeRoomWithBeacons(roomId, client, [liveBeacon], [locationEvent]);
expect(getShareableLocationEvent(liveBeacon, client)).toBe(locationEvent);
});
});
});