From 5b0947915d9a25423b4fd057afc322239fcb02c2 Mon Sep 17 00:00:00 2001 From: nicholas-codecov Date: Fri, 10 May 2024 10:02:48 -0400 Subject: [PATCH] move fragment schema next to gql fragment string --- src/services/pull/fragments.js | 55 +++++++++++++++++++ .../pull/usePrefetchSingleFileComp.tsx | 55 +------------------ 2 files changed, 56 insertions(+), 54 deletions(-) diff --git a/src/services/pull/fragments.js b/src/services/pull/fragments.js index c5fac125c7..89c9f0e7ac 100644 --- a/src/services/pull/fragments.js +++ b/src/services/pull/fragments.js @@ -1,3 +1,5 @@ +import { z } from 'zod' + export const HeaderOnPullFragment = ` fragment HeaderOnPullFragment on Pull { pullId @@ -253,6 +255,59 @@ fragment FileComparisonWithBase on Pull { } }` +const CoverageLineSchema = z.enum(['H', 'M', 'P']) + +export const ComparisonSchema = z.object({ + __typename: z.literal('Comparison'), + impactedFile: z + .object({ + headName: z.string().nullable(), + hashedPath: z.string(), + isNewFile: z.boolean(), + isRenamedFile: z.boolean(), + isDeletedFile: z.boolean(), + isCriticalFile: z.boolean(), + changeCoverage: z.number().nullable(), + baseCoverage: z + .object({ + percentCovered: z.number().nullable(), + }) + .nullable(), + headCoverage: z + .object({ + percentCovered: z.number().nullable(), + }) + .nullable(), + patchCoverage: z + .object({ + percentCovered: z.number().nullable(), + }) + .nullable(), + segments: z.object({ + results: z.array( + z.object({ + header: z.string(), + hasUnintendedChanges: z.boolean(), + lines: z.array( + z.object({ + baseNumber: z.string().nullable(), + headNumber: z.string().nullable(), + baseCoverage: CoverageLineSchema.nullable(), + headCoverage: CoverageLineSchema.nullable(), + content: z.string().nullable(), + coverageInfo: z.object({ + hitCount: z.number().nullable(), + hitUploadIds: z.array(z.number()).nullable(), + }), + }) + ), + }) + ), + }), + }) + .nullable(), +}) + export const PullCompareWithBaseFragment = ` fragment PullCompareWithBaseFragment on Pull { compareWithBase { diff --git a/src/services/pull/usePrefetchSingleFileComp.tsx b/src/services/pull/usePrefetchSingleFileComp.tsx index a583dfb587..876c8eeb8a 100644 --- a/src/services/pull/usePrefetchSingleFileComp.tsx +++ b/src/services/pull/usePrefetchSingleFileComp.tsx @@ -17,62 +17,9 @@ import Api from 'shared/api' import { NetworkErrorObject } from 'shared/api/helpers' import A from 'ui/A' -import { FileComparisonWithBase } from './fragments' +import { ComparisonSchema, FileComparisonWithBase } from './fragments' import { transformImpactedFileData } from './utils' -const CoverageLineSchema = z.enum(['H', 'M', 'P']) - -const ComparisonSchema = z.object({ - __typename: z.literal('Comparison'), - impactedFile: z - .object({ - headName: z.string().nullable(), - hashedPath: z.string(), - isNewFile: z.boolean(), - isRenamedFile: z.boolean(), - isDeletedFile: z.boolean(), - isCriticalFile: z.boolean(), - changeCoverage: z.number().nullable(), - baseCoverage: z - .object({ - percentCovered: z.number().nullable(), - }) - .nullable(), - headCoverage: z - .object({ - percentCovered: z.number().nullable(), - }) - .nullable(), - patchCoverage: z - .object({ - percentCovered: z.number().nullable(), - }) - .nullable(), - segments: z.object({ - results: z.array( - z.object({ - header: z.string(), - hasUnintendedChanges: z.boolean(), - lines: z.array( - z.object({ - baseNumber: z.string().nullable(), - headNumber: z.string().nullable(), - baseCoverage: CoverageLineSchema.nullable(), - headCoverage: CoverageLineSchema.nullable(), - content: z.string().nullable(), - coverageInfo: z.object({ - hitCount: z.number().nullable(), - hitUploadIds: z.array(z.number()).nullable(), - }), - }) - ), - }) - ), - }), - }) - .nullable(), -}) - const FileComparisonWithBaseSchema = z.object({ compareWithBase: z .discriminatedUnion('__typename', [