Files
workavia-drive/twake/backend/node/test/e2e/channels/utils.ts
T
montaghanmy 10fe6f78d1 feat: init
2023-03-23 11:03:16 +01:00

91 lines
2.4 KiB
TypeScript

import { v1 as uuidv1 } from "uuid";
import { ChannelMember } from "../../../src/services/channels/entities";
import { Channel } from "../../../src/services/channels/entities/channel";
import {
ChannelExecutionContext,
ChannelVisibility,
WorkspaceExecutionContext,
} from "../../../src/services/channels/types";
import { User } from "../../../src/utils/types";
import { TestPlatform } from "../setup";
export interface ChannelUtils {
getContext(user?: User): WorkspaceExecutionContext;
getChannel(owner?: string): Channel;
getDirectChannel(owner?: string): Channel;
getChannelContext(channel: Channel, user: User): ChannelExecutionContext;
}
export interface ChannelMemberUtils {
getMember(channel: Channel, user: User): ChannelMember;
}
export function getMemberUtils(platform: TestPlatform): ChannelMemberUtils {
return {
getMember,
};
function getMember(channel: Channel, user: User): ChannelMember {
const member = new ChannelMember();
member.company_id = platform.workspace.company_id;
member.workspace_id = platform.workspace.workspace_id;
member.channel_id = channel?.id;
member.user_id = user?.id;
return member;
}
}
export function get(platform: TestPlatform): ChannelUtils {
return {
getContext,
getChannel,
getDirectChannel,
getChannelContext,
};
function getContext(user?: User): WorkspaceExecutionContext {
return {
workspace: platform.workspace,
user: user || platform.currentUser,
};
}
function getChannelContext(channel: Channel, user?: User): ChannelExecutionContext {
return {
channel,
user,
};
}
/**
* Get a new channel instance
*
* @param owner will be a random uuidv4 if not defined
*/
function getChannel(owner: string = uuidv1()): Channel {
const channel = new Channel();
channel.name = "Test Channel";
channel.company_id = platform.workspace.company_id;
channel.workspace_id = platform.workspace.workspace_id;
channel.is_default = false;
channel.visibility = ChannelVisibility.PUBLIC;
channel.archived = false;
channel.owner = owner;
return channel;
}
function getDirectChannel(owner: string = uuidv1()): Channel {
const channel = getChannel(owner);
channel.visibility = ChannelVisibility.DIRECT;
channel.workspace_id = ChannelVisibility.DIRECT;
channel.name = "A direct channel";
return channel;
}
}