Introduce npx nx mock:generate twenty-front (#18237)

## Add codegen script for frontend test mock data

### Summary

- Adds a new `npx nx mock:generate twenty-front` and
`generate-mock-data.ts` script that fetches object metadata from a
running server's `/metadata` endpoint, authenticates with default seeds,
and writes the result to a generated TypeScript file
(`src/testing/mock-data/generated/mock-metadata-query-result.ts`). This
replaces hand-maintained mock metadata with server-sourced data,
ensuring tests always reflect the real schema.
- Updates all frontend tests to be compatible with the newly generated
metadata, fixing hard-coded GraphQL queries, Zod validation schemas,
snapshot expectations, and Apollo mock mismatches.

### What changed

**New files**
- `scripts/generate-mock-data.ts` — codegen script that authenticates
against the server, queries `/metadata` for all object metadata (with
explicit `__typename` at every level), and writes a typed `.ts` file.
- `project.json` — added `mock:generate` Nx target (`dotenv npx tsx
scripts/generate-mock-data.ts`).

**Schema validation updates**
- `objectMetadataItemSchema.ts` — added `universalIdentifier`, made
`duplicateCriteria` nullable.
- `fieldMetadataItemSchema.ts` — added `universalIdentifier`, `morphId`,
`morphRelations`, restructured relation schema.
- `indexMetadataItemSchema.ts` — added optional `isCustom` field.
This commit is contained in:
Charles Bochet
2026-02-25 21:40:05 +01:00
committed by GitHub
parent 50be97422d
commit e01b641a05
25 changed files with 24997 additions and 18246 deletions
@@ -1,5 +1,11 @@
export const PERSON_FRAGMENT_WITH_DEPTH_ZERO_RELATIONS = `
__typename
avatarFile {
fileId
label
extension
url
}
avatarUrl
city
companyId
@@ -36,6 +42,12 @@ export const PERSON_FRAGMENT_WITH_DEPTH_ZERO_RELATIONS = `
}
position
updatedAt
updatedBy {
source
workspaceMemberId
name
context
}
whatsapp {
primaryPhoneNumber
primaryPhoneCountryCode
@@ -61,6 +73,12 @@ export const PERSON_FRAGMENT_WITH_DEPTH_ONE_RELATIONS = `
}
}
}
avatarFile {
fileId
label
extension
url
}
avatarUrl
calendarEventParticipants {
edges {
@@ -71,6 +89,19 @@ export const PERSON_FRAGMENT_WITH_DEPTH_ONE_RELATIONS = `
}
}
}
caredForPets {
edges {
node {
__typename
id
pet {
__typename
id
name
}
}
}
}
city
company {
__typename
@@ -154,6 +185,24 @@ export const PERSON_FRAGMENT_WITH_DEPTH_ONE_RELATIONS = `
}
}
position
previousCompanies {
edges {
node {
__typename
company {
__typename
domainName {
primaryLinkUrl
primaryLinkLabel
secondaryLinks
}
id
name
}
id
}
}
}
taskTargets {
edges {
node {
@@ -172,10 +221,17 @@ export const PERSON_FRAGMENT_WITH_DEPTH_ONE_RELATIONS = `
node {
__typename
id
name
}
}
}
updatedAt
updatedBy {
source
workspaceMemberId
name
context
}
whatsapp {
primaryPhoneNumber
primaryPhoneCountryCode