* Add handlePaste function and integrate it with options fields * Prevents function running if user does not paste a list, allows list items to be pasted without deleting following items * Subs useState for rhf useWatch to fix issues with multiple form fields * Sets options array as optional property in zod schema * Assigns default value to options array to fix possibly undefined type errors * Sets placedholder property as optional * maps selectText to options on mount * Removes comma & semicolon delimiting for pasted lists (new line only) & defines regex as a constant * Sets default value of placeholder to empty string, provides default fallback for component text field if placeholder is omitted. * Fix type error on placeholder * Extracts handlePaste to service function & tests thoroughly * Some improvements and tests arent needed * More fixes * Fix reporting as well * TS fixes * Do transforms to and fro from label * Add unit tests * Unit test reporting * Test Improvements * Self review feedback addressed --------- Co-authored-by: Hariom Balhara <hariombalhara@gmail.com> Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com>
66 lines
1.4 KiB
TypeScript
66 lines
1.4 KiB
TypeScript
import { v4 as uuidv4 } from "uuid";
|
|
|
|
import { prisma } from "@calcom/prisma";
|
|
|
|
type Route = {
|
|
id: string;
|
|
action: {
|
|
type: string;
|
|
value: string;
|
|
};
|
|
isFallback: boolean;
|
|
queryValue: {
|
|
id: string;
|
|
type: string;
|
|
};
|
|
};
|
|
|
|
export const createRoutingFormsFixture = () => {
|
|
return {
|
|
async create({
|
|
userId,
|
|
teamId,
|
|
name,
|
|
fields,
|
|
routes = [],
|
|
}: {
|
|
name: string;
|
|
userId: number;
|
|
teamId: number | null;
|
|
routes?: Route[];
|
|
fields: {
|
|
type: string;
|
|
label: string;
|
|
identifier?: string;
|
|
required: boolean;
|
|
options?: {
|
|
label: string;
|
|
id: string | null;
|
|
}[];
|
|
}[];
|
|
}) {
|
|
return await prisma.app_RoutingForms_Form.create({
|
|
data: {
|
|
name,
|
|
userId,
|
|
teamId,
|
|
routes: [
|
|
...routes,
|
|
// Add a fallback route always, this is taken care of tRPC route normally but do it manually while running the query directly.
|
|
{
|
|
id: "898899aa-4567-489a-bcde-f1823f708646",
|
|
action: { type: "customPageMessage", value: "Fallback Message" },
|
|
isFallback: true,
|
|
queryValue: { id: "898899aa-4567-489a-bcde-f1823f708646", type: "group" },
|
|
},
|
|
],
|
|
fields: fields.map((f) => ({
|
|
id: uuidv4(),
|
|
...f,
|
|
})),
|
|
},
|
|
});
|
|
},
|
|
};
|
|
};
|