mirror of
https://github.com/renovatebot/renovate.git
synced 2026-10-26 15:31:53 +00:00
e59b10a17c
* chore: add zod schema for gitlab getProjectMembers * chore: swap getRoleAccessLevel regex for startsWith and slice * chore: drop unnecessary as const
49 lines
1.4 KiB
TypeScript
49 lines
1.4 KiB
TypeScript
import { GitLabProjectMembers } from './schema.ts';
|
|
|
|
describe('modules/platform/gitlab/schema', () => {
|
|
describe('GitLabProjectMembers', () => {
|
|
it('parses members with an access level', () => {
|
|
expect(
|
|
GitLabProjectMembers.parse([
|
|
{ username: 'dev', access_level: 30 },
|
|
{ username: 'maintainer', access_level: 40 },
|
|
]),
|
|
).toEqual([
|
|
{ username: 'dev', access_level: 30 },
|
|
{ username: 'maintainer', access_level: 40 },
|
|
]);
|
|
});
|
|
|
|
it('treats access_level as optional', () => {
|
|
expect(GitLabProjectMembers.parse([{ username: 'dev' }])).toEqual([
|
|
{ username: 'dev' },
|
|
]);
|
|
});
|
|
|
|
it('ignores unspecified fields', () => {
|
|
expect(
|
|
GitLabProjectMembers.parse([
|
|
{ id: 1, username: 'dev', access_level: 30, extra: 'ignored' },
|
|
]),
|
|
).toEqual([{ username: 'dev', access_level: 30 }]);
|
|
});
|
|
|
|
it('filters out malformed entries', () => {
|
|
expect(
|
|
GitLabProjectMembers.parse([
|
|
{ username: 'dev', access_level: 30 },
|
|
{ access_level: 40 },
|
|
{ username: 42 },
|
|
null,
|
|
]),
|
|
).toEqual([{ username: 'dev', access_level: 30 }]);
|
|
});
|
|
|
|
it('rejects a non-array input', () => {
|
|
expect(GitLabProjectMembers.safeParse('not an array').success).toBe(
|
|
false,
|
|
);
|
|
});
|
|
});
|
|
});
|