Files
aryx/tests/main/gitCommitMessageSuggestion.test.ts
T

101 lines
2.4 KiB
TypeScript

import { describe, expect, test } from 'bun:test';
import type { ProjectGitRunChangeSummary } from '@shared/domain/project';
import { buildProjectGitCommitMessageSuggestion } from '@main/git/gitCommitMessageSuggestion';
const baseSummary: ProjectGitRunChangeSummary = {
generatedAt: '2026-03-31T00:00:00.000Z',
branchAtStart: 'main',
branchAtEnd: 'main',
fileCount: 1,
additions: 5,
deletions: 2,
counts: {
added: 0,
modified: 1,
deleted: 0,
renamed: 0,
copied: 0,
typeChanged: 0,
unmerged: 0,
untracked: 0,
cleaned: 0,
},
files: [
{
path: 'src\\auth.ts',
kind: 'modified',
origin: 'run-created',
additions: 5,
deletions: 2,
canRevert: true,
},
],
};
describe('buildProjectGitCommitMessageSuggestion', () => {
test('infers a fix commit from the triggering user prompt', () => {
const suggestion = buildProjectGitCommitMessageSuggestion({
session: {
title: 'Auth hardening',
messages: [
{
id: 'msg-user-1',
role: 'user',
authorName: 'You',
content: 'Fix auth hardening for git integration.',
createdAt: '2026-03-31T00:00:00.000Z',
},
],
},
run: {
triggerMessageId: 'msg-user-1',
},
summary: baseSummary,
});
expect(suggestion).toEqual({
type: 'fix',
subject: 'auth hardening for git integration',
message: 'fix: auth hardening for git integration',
});
});
test('infers docs commits from documentation-only changes', () => {
const suggestion = buildProjectGitCommitMessageSuggestion({
session: {
title: 'Docs touch-up',
messages: [
{
id: 'msg-user-1',
role: 'user',
authorName: 'You',
content: '',
createdAt: '2026-03-31T00:00:00.000Z',
},
],
},
run: {
triggerMessageId: 'msg-user-1',
},
summary: {
...baseSummary,
files: [
{
path: 'README.md',
kind: 'modified',
origin: 'run-created',
additions: 1,
deletions: 0,
canRevert: true,
},
],
},
});
expect(suggestion.type).toBe('docs');
expect(suggestion.message).toBe('docs: update readme');
});
});