91 lines
2.4 KiB
TypeScript
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;
|
|
}
|
|
}
|