0
0
Fork 0
mirror of https://github.com/renovatebot/renovate.git synced 2025-02-28 18:44:03 +00:00
renovatebot_renovate/lib/modules/manager/bazel-module/parser/fragments.spec.ts

105 lines
3.6 KiB
TypeScript

import {
ArrayFragmentSchema,
AttributeFragmentSchema,
BooleanFragmentSchema,
ExtensionTagFragmentSchema,
PreparedExtensionTagFragmentSchema,
RuleFragmentSchema,
StringFragmentSchema,
} from './fragments';
import * as fragments from './fragments';
describe('modules/manager/bazel-module/parser/fragments', () => {
it('.string()', () => {
const result = fragments.string('hello');
expect(() => StringFragmentSchema.parse(result)).not.toThrow();
expect(result.value).toBe('hello');
});
it('.boolean()', () => {
const result = fragments.boolean(true);
expect(() => BooleanFragmentSchema.parse(result)).not.toThrow();
expect(result.value).toBe(true);
});
it('.rule()', () => {
const result = fragments.rule(
'foo',
{ name: fragments.string('bar') },
true,
);
expect(() => RuleFragmentSchema.parse(result)).not.toThrow();
expect(result.rule).toBe('foo');
expect(result.children).toEqual({ name: fragments.string('bar') });
expect(result.isComplete).toBe(true);
});
it('.extensionTag()', () => {
const result = fragments.extensionTag(
'ext',
'ext_01',
'tag',
0,
{ name: fragments.string('bar') },
undefined,
true,
);
expect(() => ExtensionTagFragmentSchema.parse(result)).not.toThrow();
expect(result.extension).toBe('ext');
expect(result.rawExtension).toBe('ext_01');
expect(result.tag).toBe('tag');
expect(result.children).toEqual({ name: fragments.string('bar') });
expect(result.isComplete).toBe(true);
});
it('.preparedExtensionTag()', () => {
const result = fragments.preparedExtensionTag('ext', 'ext_01', 0);
expect(() =>
PreparedExtensionTagFragmentSchema.parse(result),
).not.toThrow();
expect(result.extension).toBe('ext');
expect(result.rawExtension).toBe('ext_01');
expect(result.isComplete).toBe(false);
});
it('.attribute()', () => {
const result = fragments.attribute('name', fragments.string('foo'), true);
expect(() => AttributeFragmentSchema.parse(result)).not.toThrow();
expect(result.name).toBe('name');
expect(result.value).toEqual(fragments.string('foo'));
expect(result.isComplete).toBe(true);
});
it('.array()', () => {
const result = fragments.array([fragments.string('foo')], true);
expect(() => ArrayFragmentSchema.parse(result)).not.toThrow();
expect(result.items).toEqual([fragments.string('foo')]);
expect(result.isComplete).toBe(true);
});
it.each`
a | exp
${fragments.string('hello')} | ${true}
${fragments.boolean(true)} | ${true}
${fragments.array()} | ${true}
${fragments.rule('dummy')} | ${false}
${fragments.extensionTag('ext', 'ext_01', 'tag', 0)} | ${false}
${fragments.preparedExtensionTag('ext', 'ext_01', 0)} | ${false}
`('.isValue($a)', ({ a, exp }) => {
expect(fragments.isValue(a)).toBe(exp);
});
it.each`
a | exp
${fragments.string('hello')} | ${true}
${fragments.boolean(true)} | ${true}
${fragments.array()} | ${false}
${fragments.rule('dummy')} | ${false}
${fragments.extensionTag('ext', 'ext_01', 'tag', 0)} | ${false}
${fragments.preparedExtensionTag('ext', 'ext_01', 0)} | ${false}
`('.isPrimitive($a)', ({ a, exp }) => {
expect(fragments.isPrimitive(a)).toBe(exp);
});
});