Files
renovate/lib/modules/platform/forgejo/schema.spec.ts

76 lines
2.2 KiB
TypeScript

import { ContentsListResponse, Issue, Repo, User } from './schema.ts';
describe('modules/platform/forgejo/schema', () => {
it('ContentsListResponse', () => {
expect(ContentsListResponse.parse([])).toBeEmptyArray();
});
it('ContentsListResponse accepts symlink and submodule entries', () => {
const entries = [
{ name: 'file.md', path: 'file.md', type: 'file', content: '' },
{ name: 'docs', path: 'docs', type: 'dir', content: null },
{ name: 'link', path: 'link', type: 'symlink', content: null },
{ name: 'sub', path: 'sub', type: 'submodule', content: null },
];
const result = ContentsListResponse.parse(entries);
expect(result).toHaveLength(4);
expect(result.map((e) => e.type)).toEqual([
'file',
'dir',
'symlink',
'submodule',
]);
});
it('Issue tolerates null assignees and labels', () => {
const issue = Issue.parse({
number: 1,
title: 't',
body: 'b',
assignees: null,
labels: null,
});
expect(issue.assignees).toBeUndefined();
expect(issue.labels).toBeUndefined();
});
it('User degrades empty email string to undefined', () => {
const user = User.parse({
id: 1,
email: '',
login: 'user',
});
expect(user.email).toBeUndefined();
});
it('User forwards GitHub app style email addresses', () => {
const user = User.parse({
id: 1,
email: '211370388+foo[bot]@users.noreply.github.com',
login: 'user',
});
expect(user.email).toBe('211370388+foo[bot]@users.noreply.github.com');
});
it('User keeps a valid email address', () => {
const user = User.parse({
id: 1,
email: 'user@example.com',
login: 'user',
});
expect(user.email).toBe('user@example.com');
});
it('Repo degrades unrecognized default_merge_style to undefined', () => {
const repo = Repo.parse({
id: 1,
full_name: 'some/repo',
default_branch: 'main',
default_merge_style: 'manually-merged',
owner: { id: 1, full_name: '', login: 'user' },
permissions: { admin: false, pull: true, push: true },
});
expect(repo.default_merge_style).toBeUndefined();
});
});