/
version-checkers.spec.ts
80 lines (70 loc) · 2.74 KB
/
version-checkers.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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
// tslint:disable:max-line-length
import { mocked } from '../..'
import { logTargetMock } from '../__helpers__/mocks'
import * as _pv from './get-package-version'
import { VersionChecker, VersionCheckers } from './version-checkers'
const logTarget = logTargetMock()
beforeEach(() => {
logTarget.clear()
})
jest.mock('./get-package-version')
const pv = mocked(_pv)
describeChecker(VersionCheckers.jest, 'jest', ['22.1.3', '23.4.5'], [undefined, '21.0.0', '24.0.0'])
describeChecker(VersionCheckers.babelJest, 'babel-jest', ['22.1.3', '23.4.5'], [undefined, '21.0.0', '24.0.0'])
describeChecker(
VersionCheckers.babelCoreLegacy,
'babel-core',
['6.1.3', '7.0.0-bridge.0'],
[undefined, '5.0.0', '7.0.0'],
)
describeChecker(VersionCheckers.babelCore, '@babel/core', ['7.1.3', '7.0.0-beta.56'], [undefined, '6.0.0', '8.0.0'])
describeChecker(VersionCheckers.typescript, 'typescript', ['2.7.0', '3.0.1'], [undefined, '2.6.99', '4.0.1'])
function describeChecker(
checker: VersionChecker,
moduleName: string,
supportedVersions: string[],
unsupportedVersions: any[],
) {
describe(moduleName, () => {
beforeEach(() => {
checker.forget()
})
unsupportedVersions.forEach(testVersion => {
describe(`unsupported version (${testVersion})`, () => {
beforeEach(() => {
pv.getPackageVersion.mockImplementation(name => (name === moduleName ? testVersion : undefined))
})
it(`should log with warn()`, () => {
checker.warn()
const warnings = logTarget.messages.warn
expect(warnings).toHaveLength(1)
expect(warnings[0].message).toMatch(testVersion ? 'has not been tested with ts-jest' : 'is not installed')
})
it(`should log only once with warn()`, () => {
checker.warn()
checker.warn()
expect(logTarget.messages.warn).toHaveLength(1)
})
it(`should throw with raise()`, () => {
expect(checker.raise).toThrow()
// adds another time as it should throw all the time even if already called
expect(checker.raise).toThrow()
})
}) // describe unsupported version
}) // unsupported versions loop
supportedVersions.forEach(testVersion => {
describe(`supported version (${testVersion})`, () => {
beforeEach(() => {
pv.getPackageVersion.mockImplementation(name => (name === moduleName ? testVersion : undefined))
})
it(`should not log with warn()`, () => {
checker.warn()
expect(logTarget.messages.warn).toHaveLength(0)
})
it(`should not throw with raise()`, () => {
expect(checker.raise).not.toThrow()
})
}) // describe supported version
}) // supported versions loop
}) // describe module
}