// The records the signed-in visitor writes, built from what the page has in // hand. The writes themselves go through OAuth and a live PDS, which the // browser exercises; the shapes are what a unit can hold still. import { describe, expect, it } from 'vitest'; import { buildPull, buildReview } from '../src/lib/publish.js'; const SUBJECT = { uri: 'at://did:plc:owner/dev.pdsjs.git.repo/project', cid: 'bafysubject', }; describe('buildReview', () => { it('names the record version, the version read and the pull request', () => { const record = buildReview({ subject: SUBJECT, sha: 'a'.repeat(40), author: 'did:plc:bob', ref: 'refs/heads/fix', verdict: 'approve', note: 'Reads well.', }); expect(record.$type).toBe('dev.pdsjs.git.review'); expect(record.subject).toEqual(SUBJECT); expect(record.author).toBe('did:plc:bob'); expect(record.ref).toBe('refs/heads/fix'); expect(record.verdict).toBe('approve'); expect(record.note).toBe('Reads well.'); expect(typeof record.reviewedAt).toBe('string'); }); it('leaves out what there is none of', () => { const record = buildReview({ subject: SUBJECT, sha: 'a'.repeat(40), author: null, ref: null, verdict: 'comment', note: '', }); expect('author' in record).toBe(false); expect('ref' in record).toBe(false); expect('note' in record).toBe(false); }); }); describe('buildPull', () => { it('names the branch in the author’s own copy', () => { const record = buildPull({ subject: SUBJECT, repo: 'project', ref: 'refs/heads/fix', sha: 'b'.repeat(40), title: 'Fix the reader', status: 'draft', note: 'Half done.', }); expect(record.$type).toBe('dev.pdsjs.git.pull'); expect(record.repo).toBe('project'); expect(record.ref).toBe('refs/heads/fix'); expect(record.title).toBe('Fix the reader'); expect(record.status).toBe('draft'); expect(typeof record.createdAt).toBe('string'); }); });