UNPKG

@aaronshaf/ger

Version:

Gerrit CLI and SDK - A modern CLI tool and TypeScript SDK for Gerrit Code Review, built with Effect-TS

139 lines (130 loc) 3.75 kB
import type { Schema } from '@effect/schema' import type { ChangeInfo, FileDiffContent, FileInfo, RevisionInfoType } from '@/schemas/gerrit' export const generateMockChange = ( overrides?: Partial<Schema.Schema.Type<typeof ChangeInfo>>, ): Schema.Schema.Type<typeof ChangeInfo> => { const base: Schema.Schema.Type<typeof ChangeInfo> = { id: 'myProject~master~I8473b95934b5732ac55d26311a706c9c2bde9940', project: 'myProject', branch: 'master', change_id: 'I8473b95934b5732ac55d26311a706c9c2bde9940', subject: 'Implementing new feature', status: 'NEW' as const, created: '2023-12-01 10:00:00.000000000', updated: '2023-12-01 15:30:00.000000000', insertions: 25, deletions: 3, _number: 12345, owner: { _account_id: 1000096, name: 'John Developer', email: 'john@example.com', username: 'jdeveloper', }, } return { ...base, ...overrides } } export const generateMockFiles = (): Record<string, Schema.Schema.Type<typeof FileInfo>> => { return { 'src/main.ts': { status: 'M' as const, lines_inserted: 15, lines_deleted: 3, size_delta: 120, size: 1200, }, 'tests/main.test.ts': { status: 'A' as const, lines_inserted: 45, lines_deleted: 0, size_delta: 450, size: 450, }, } } export const generateMockFileDiff = (): Schema.Schema.Type<typeof FileDiffContent> => { return { content: [ { ab: ['function main() {', ' console.log("Hello, world!")'], }, { a: [' return 0'], b: [' return process.exit(0)'], }, { ab: ['}'], }, ], change_type: 'MODIFIED' as const, diff_header: ['--- a/src/main.ts', '+++ b/src/main.ts'], } } export const generateMockAccount = () => ({ _account_id: 1000096, name: 'Test User', email: 'test@example.com', username: 'testuser', }) /** * Generate mock revision data to be included in ChangeInfo * Used when simulating API responses with CURRENT_REVISION option */ export const generateMockRevision = ( patchsetNumber = 1, sha = '54795ce71b351480c887e92aa0e5b9a57aef58ab', ): RevisionInfoType => ({ kind: 'REWORK', _number: patchsetNumber, created: '2023-12-01 10:00:00.000000000', uploader: { _account_id: 1000096, name: 'John Developer', email: 'john@example.com', }, ref: `refs/changes/${String(Math.floor(12345 % 100)).padStart(2, '0')}/12345/${patchsetNumber}`, fetch: { http: { url: 'https://gerrit.example.com/myProject', ref: `refs/changes/${String(Math.floor(12345 % 100)).padStart(2, '0')}/12345/${patchsetNumber}`, }, }, commit: { commit: sha, parents: [ { commit: 'parent-sha-1234567890abcdef', subject: 'Parent commit', }, ] as const, author: { name: 'John Developer', email: 'john@example.com', date: '2023-12-01 10:00:00.000000000', }, committer: { name: 'John Developer', email: 'john@example.com', date: '2023-12-01 10:00:00.000000000', }, subject: 'Implementing new feature', message: 'Implementing new feature\n\nThis is the full commit message.', }, }) /** * Generate mock change with revision data (simulates API response with CURRENT_REVISION option) */ export const generateMockChangeWithRevision = ( overrides?: Partial<Schema.Schema.Type<typeof ChangeInfo>>, patchsetNumber = 1, ): Schema.Schema.Type<typeof ChangeInfo> => { const sha = '54795ce71b351480c887e92aa0e5b9a57aef58ab' const revision = generateMockRevision(patchsetNumber, sha) return generateMockChange({ current_revision: sha, revisions: { [sha]: revision, }, ...overrides, }) }