/
extract.spec.ts
58 lines (53 loc) · 1.9 KB
/
extract.spec.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import { codeBlock } from 'common-tags';
import { BazelDatasource } from '../../datasource/bazel';
import { RecordFragment, ValueFragment } from './fragments';
import * as parser from './parser';
import { extractPackageFile } from '.';
describe('modules/manager/bazel-module/extract', () => {
describe('extractPackageFile()', () => {
it('returns null if fails to parse', () => {
const result = extractPackageFile('blahhhhh:foo:@what\n', 'MODULE.bazel');
expect(result).toBeNull();
});
it('returns null if file is empty', () => {
const result = extractPackageFile('', 'MODULE.bazel');
expect(result).toBeNull();
});
it('returns null if file has not recognized declarations', () => {
const input = codeBlock`
ignore_me(name = "rules_foo", version = "1.2.3")
`;
const result = extractPackageFile(input, 'MODULE.bazel');
expect(result).toBeNull();
});
it('gracefully handles unexpected fragments', () => {
const fragments: ValueFragment[] = [new RecordFragment()];
const mockParse = jest.spyOn(parser, 'parse');
mockParse.mockReturnValueOnce(fragments);
expect(extractPackageFile('', 'MODULE.bazel')).toBeNull();
});
it('returns dependencies', () => {
const input = codeBlock`
bazel_dep(name = "rules_foo", version = "1.2.3")
bazel_dep(name = "rules_bar", version = "1.0.0", dev_dependency = True)
`;
const result = extractPackageFile(input, 'MODULE.bazel');
expect(result).toEqual({
deps: [
{
datasource: BazelDatasource.id,
depType: 'bazel_dep',
depName: 'rules_foo',
currentValue: '1.2.3',
},
{
datasource: BazelDatasource.id,
depType: 'bazel_dep',
depName: 'rules_bar',
currentValue: '1.0.0',
},
],
});
});
});
});