You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
241 lines
6.9 KiB
241 lines
6.9 KiB
|
3 years ago
|
import { describe, expect, test } from '@jest/globals';
|
||
|
4 years ago
|
import { UserStatus } from '@rocket.chat/core-typings';
|
||
|
4 years ago
|
|
||
|
3 years ago
|
import { processConnectionStatus, processStatus, processPresenceAndStatus } from '../../src/lib/processConnectionStatus';
|
||
|
4 years ago
|
|
||
|
|
describe('Presence micro service', () => {
|
||
|
3 years ago
|
test('should return connection as online when there is a connection online', () => {
|
||
|
|
expect(processConnectionStatus(UserStatus.OFFLINE, UserStatus.ONLINE)).toBe(UserStatus.ONLINE);
|
||
|
|
expect(processConnectionStatus(UserStatus.ONLINE, UserStatus.ONLINE)).toBe(UserStatus.ONLINE);
|
||
|
|
expect(processConnectionStatus(UserStatus.BUSY, UserStatus.ONLINE)).toBe(UserStatus.ONLINE);
|
||
|
|
expect(processConnectionStatus(UserStatus.AWAY, UserStatus.ONLINE)).toBe(UserStatus.ONLINE);
|
||
|
4 years ago
|
});
|
||
|
|
|
||
|
3 years ago
|
test('should return the connections status if the other connection is offline', () => {
|
||
|
|
expect(processConnectionStatus(UserStatus.OFFLINE, UserStatus.OFFLINE)).toBe(UserStatus.OFFLINE);
|
||
|
|
expect(processConnectionStatus(UserStatus.ONLINE, UserStatus.OFFLINE)).toBe(UserStatus.ONLINE);
|
||
|
|
expect(processConnectionStatus(UserStatus.AWAY, UserStatus.OFFLINE)).toBe(UserStatus.AWAY);
|
||
|
4 years ago
|
});
|
||
|
|
|
||
|
3 years ago
|
test('should return the connection status when the default status is online', () => {
|
||
|
|
expect(processStatus(UserStatus.ONLINE, UserStatus.ONLINE)).toBe(UserStatus.ONLINE);
|
||
|
|
expect(processStatus(UserStatus.AWAY, UserStatus.ONLINE)).toBe(UserStatus.AWAY);
|
||
|
|
expect(processStatus(UserStatus.OFFLINE, UserStatus.ONLINE)).toBe(UserStatus.OFFLINE);
|
||
|
4 years ago
|
});
|
||
|
|
|
||
|
3 years ago
|
test('should return status busy when the default status is busy', () => {
|
||
|
|
expect(processStatus(UserStatus.ONLINE, UserStatus.BUSY)).toBe(UserStatus.BUSY);
|
||
|
|
expect(processStatus(UserStatus.AWAY, UserStatus.BUSY)).toBe(UserStatus.BUSY);
|
||
|
|
expect(processStatus(UserStatus.OFFLINE, UserStatus.BUSY)).toBe(UserStatus.OFFLINE);
|
||
|
4 years ago
|
});
|
||
|
|
|
||
|
3 years ago
|
test('should return status away when the default status is away', () => {
|
||
|
|
expect(processStatus(UserStatus.ONLINE, UserStatus.AWAY)).toBe(UserStatus.AWAY);
|
||
|
|
expect(processStatus(UserStatus.AWAY, UserStatus.AWAY)).toBe(UserStatus.AWAY);
|
||
|
|
expect(processStatus(UserStatus.OFFLINE, UserStatus.AWAY)).toBe(UserStatus.OFFLINE);
|
||
|
4 years ago
|
});
|
||
|
|
|
||
|
3 years ago
|
test('should return status offline when the default status is offline', () => {
|
||
|
|
expect(processStatus(UserStatus.ONLINE, UserStatus.OFFLINE)).toBe(UserStatus.OFFLINE);
|
||
|
|
expect(processStatus(UserStatus.AWAY, UserStatus.OFFLINE)).toBe(UserStatus.OFFLINE);
|
||
|
|
expect(processStatus(UserStatus.OFFLINE, UserStatus.OFFLINE)).toBe(UserStatus.OFFLINE);
|
||
|
4 years ago
|
});
|
||
|
|
|
||
|
3 years ago
|
test('should return correct status and statusConnection when connected once', () => {
|
||
|
4 years ago
|
expect(
|
||
|
|
processPresenceAndStatus(
|
||
|
|
[
|
||
|
|
{
|
||
|
|
id: 'random',
|
||
|
|
instanceId: 'random',
|
||
|
|
status: UserStatus.ONLINE,
|
||
|
|
_createdAt: new Date(),
|
||
|
|
_updatedAt: new Date(),
|
||
|
|
},
|
||
|
|
],
|
||
|
|
UserStatus.ONLINE,
|
||
|
|
),
|
||
|
3 years ago
|
).toStrictEqual({ status: UserStatus.ONLINE, statusConnection: UserStatus.ONLINE });
|
||
|
4 years ago
|
|
||
|
|
expect(
|
||
|
|
processPresenceAndStatus(
|
||
|
|
[
|
||
|
|
{
|
||
|
|
id: 'random',
|
||
|
|
instanceId: 'random',
|
||
|
|
status: UserStatus.AWAY,
|
||
|
|
_createdAt: new Date(),
|
||
|
|
_updatedAt: new Date(),
|
||
|
|
},
|
||
|
|
],
|
||
|
|
UserStatus.ONLINE,
|
||
|
|
),
|
||
|
3 years ago
|
).toStrictEqual({ status: UserStatus.AWAY, statusConnection: UserStatus.AWAY });
|
||
|
4 years ago
|
|
||
|
|
expect(
|
||
|
|
processPresenceAndStatus(
|
||
|
|
[
|
||
|
|
{
|
||
|
|
id: 'random',
|
||
|
|
instanceId: 'random',
|
||
|
|
status: UserStatus.ONLINE,
|
||
|
|
_createdAt: new Date(),
|
||
|
|
_updatedAt: new Date(),
|
||
|
|
},
|
||
|
|
],
|
||
|
|
UserStatus.BUSY,
|
||
|
|
),
|
||
|
3 years ago
|
).toStrictEqual({ status: UserStatus.BUSY, statusConnection: UserStatus.ONLINE });
|
||
|
4 years ago
|
|
||
|
|
expect(
|
||
|
|
processPresenceAndStatus(
|
||
|
|
[
|
||
|
|
{
|
||
|
|
id: 'random',
|
||
|
|
instanceId: 'random',
|
||
|
|
status: UserStatus.ONLINE,
|
||
|
|
_createdAt: new Date(),
|
||
|
|
_updatedAt: new Date(),
|
||
|
|
},
|
||
|
|
],
|
||
|
|
UserStatus.AWAY,
|
||
|
|
),
|
||
|
3 years ago
|
).toStrictEqual({ status: UserStatus.AWAY, statusConnection: UserStatus.ONLINE });
|
||
|
4 years ago
|
|
||
|
|
expect(
|
||
|
|
processPresenceAndStatus(
|
||
|
|
[
|
||
|
|
{
|
||
|
|
id: 'random',
|
||
|
|
instanceId: 'random',
|
||
|
|
status: UserStatus.AWAY,
|
||
|
|
_createdAt: new Date(),
|
||
|
|
_updatedAt: new Date(),
|
||
|
|
},
|
||
|
|
],
|
||
|
|
UserStatus.BUSY,
|
||
|
|
),
|
||
|
3 years ago
|
).toStrictEqual({ status: UserStatus.BUSY, statusConnection: UserStatus.AWAY });
|
||
|
4 years ago
|
|
||
|
|
expect(
|
||
|
|
processPresenceAndStatus(
|
||
|
|
[
|
||
|
|
{
|
||
|
|
id: 'random',
|
||
|
|
instanceId: 'random',
|
||
|
|
status: UserStatus.ONLINE,
|
||
|
|
_createdAt: new Date(),
|
||
|
|
_updatedAt: new Date(),
|
||
|
|
},
|
||
|
|
],
|
||
|
|
UserStatus.OFFLINE,
|
||
|
|
),
|
||
|
3 years ago
|
).toStrictEqual({ status: UserStatus.OFFLINE, statusConnection: UserStatus.ONLINE });
|
||
|
4 years ago
|
|
||
|
|
expect(
|
||
|
|
processPresenceAndStatus(
|
||
|
|
[
|
||
|
|
{
|
||
|
|
id: 'random',
|
||
|
|
instanceId: 'random',
|
||
|
|
status: UserStatus.AWAY,
|
||
|
|
_createdAt: new Date(),
|
||
|
|
_updatedAt: new Date(),
|
||
|
|
},
|
||
|
|
],
|
||
|
|
UserStatus.OFFLINE,
|
||
|
|
),
|
||
|
3 years ago
|
).toStrictEqual({ status: UserStatus.OFFLINE, statusConnection: UserStatus.AWAY });
|
||
|
4 years ago
|
});
|
||
|
|
|
||
|
3 years ago
|
test('should return correct status and statusConnection when connected twice', () => {
|
||
|
4 years ago
|
expect(
|
||
|
|
processPresenceAndStatus(
|
||
|
|
[
|
||
|
|
{
|
||
|
|
id: 'random',
|
||
|
|
instanceId: 'random',
|
||
|
|
status: UserStatus.ONLINE,
|
||
|
|
_createdAt: new Date(),
|
||
|
|
_updatedAt: new Date(),
|
||
|
|
},
|
||
|
|
{
|
||
|
|
id: 'random',
|
||
|
|
instanceId: 'random',
|
||
|
|
status: UserStatus.AWAY,
|
||
|
|
_createdAt: new Date(),
|
||
|
|
_updatedAt: new Date(),
|
||
|
|
},
|
||
|
|
],
|
||
|
|
UserStatus.ONLINE,
|
||
|
|
),
|
||
|
3 years ago
|
).toStrictEqual({ status: UserStatus.ONLINE, statusConnection: UserStatus.ONLINE });
|
||
|
4 years ago
|
|
||
|
|
expect(
|
||
|
|
processPresenceAndStatus(
|
||
|
|
[
|
||
|
|
{
|
||
|
|
id: 'random',
|
||
|
|
instanceId: 'random',
|
||
|
|
status: UserStatus.AWAY,
|
||
|
|
_createdAt: new Date(),
|
||
|
|
_updatedAt: new Date(),
|
||
|
|
},
|
||
|
|
{
|
||
|
|
id: 'random',
|
||
|
|
instanceId: 'random',
|
||
|
|
status: UserStatus.ONLINE,
|
||
|
|
_createdAt: new Date(),
|
||
|
|
_updatedAt: new Date(),
|
||
|
|
},
|
||
|
|
],
|
||
|
|
UserStatus.ONLINE,
|
||
|
|
),
|
||
|
3 years ago
|
).toStrictEqual({ status: UserStatus.ONLINE, statusConnection: UserStatus.ONLINE });
|
||
|
4 years ago
|
|
||
|
|
expect(
|
||
|
|
processPresenceAndStatus(
|
||
|
|
[
|
||
|
|
{
|
||
|
|
id: 'random',
|
||
|
|
instanceId: 'random',
|
||
|
|
status: UserStatus.AWAY,
|
||
|
|
_createdAt: new Date(),
|
||
|
|
_updatedAt: new Date(),
|
||
|
|
},
|
||
|
|
{
|
||
|
|
id: 'random',
|
||
|
|
instanceId: 'random',
|
||
|
|
status: UserStatus.AWAY,
|
||
|
|
_createdAt: new Date(),
|
||
|
|
_updatedAt: new Date(),
|
||
|
|
},
|
||
|
|
],
|
||
|
|
UserStatus.ONLINE,
|
||
|
|
),
|
||
|
3 years ago
|
).toStrictEqual({ status: UserStatus.AWAY, statusConnection: UserStatus.AWAY });
|
||
|
4 years ago
|
});
|
||
|
|
|
||
|
3 years ago
|
test('should return correct status and statusConnection when not connected', () => {
|
||
|
|
expect(processPresenceAndStatus([], UserStatus.ONLINE)).toStrictEqual({
|
||
|
4 years ago
|
status: UserStatus.OFFLINE,
|
||
|
|
statusConnection: UserStatus.OFFLINE,
|
||
|
|
});
|
||
|
|
|
||
|
3 years ago
|
expect(processPresenceAndStatus([], UserStatus.BUSY)).toStrictEqual({
|
||
|
4 years ago
|
status: UserStatus.OFFLINE,
|
||
|
|
statusConnection: UserStatus.OFFLINE,
|
||
|
|
});
|
||
|
|
|
||
|
3 years ago
|
expect(processPresenceAndStatus([], UserStatus.AWAY)).toStrictEqual({
|
||
|
4 years ago
|
status: UserStatus.OFFLINE,
|
||
|
|
statusConnection: UserStatus.OFFLINE,
|
||
|
|
});
|
||
|
|
|
||
|
3 years ago
|
expect(processPresenceAndStatus([], UserStatus.OFFLINE)).toStrictEqual({
|
||
|
4 years ago
|
status: UserStatus.OFFLINE,
|
||
|
|
statusConnection: UserStatus.OFFLINE,
|
||
|
|
});
|
||
|
|
});
|
||
|
|
});
|