Skip to content

Commit 84857f7

Browse files
author
roman.vasilev
committed
Update: Added unit tests
1 parent 7f31a56 commit 84857f7

File tree

10 files changed

+116
-0
lines changed

10 files changed

+116
-0
lines changed

src/index.spec.ts

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
import * as assert from 'assert';
2+
import * as lib from './index';
3+
4+
let service: ReturnType<typeof lib.createService>;
5+
6+
it('smoke', () => {
7+
assert(lib);
8+
});
9+
10+
describe('create service', () => {
11+
12+
before(() => {
13+
const configFile = `${__dirname}/test-project/tsconfig.json`;
14+
service = lib.createService({ configFile });
15+
assert(service);
16+
});
17+
18+
it('errors', () => {
19+
const testFile = `${__dirname}/test-project/errors.ts`;
20+
service.update({ fileName: testFile });
21+
const sourceFile = service.getProgram().getSourceFile(testFile);
22+
assert(sourceFile);
23+
const diagnostics = service.getDiagnostics(testFile);
24+
assert.equal(diagnostics.length, 2);
25+
assert.equal(diagnostics[0].messageText, `Type '1' is not assignable to type 'string'.`);
26+
assert.equal(diagnostics[1].messageText, `Type '"foo"' is not assignable to type 'number'.`);
27+
});
28+
29+
it('number', () => {
30+
const testFile = `${__dirname}/test-project/number.ts`;
31+
service.update({ fileName: testFile });
32+
const sourceFile = service.getProgram().getSourceFile(testFile);
33+
assert(sourceFile);
34+
const diagnostics = service.getDiagnostics(testFile);
35+
assert.equal(diagnostics.length, 0);
36+
});
37+
38+
it('built in', () => {
39+
const testFile = `${__dirname}/test-project/builtin.ts`;
40+
service.update({ fileName: testFile });
41+
const sourceFile = service.getProgram().getSourceFile(testFile);
42+
assert(sourceFile);
43+
const diagnostics = service.getDiagnostics(testFile);
44+
assert.equal(diagnostics.length, 0);
45+
});
46+
47+
it('types', () => {
48+
const testFile = `${__dirname}/test-project/types.ts`;
49+
service.update({ fileName: testFile });
50+
const sourceFile = service.getProgram().getSourceFile(testFile);
51+
assert(sourceFile);
52+
const diagnostics = service.getDiagnostics(testFile);
53+
assert.equal(diagnostics.length, 0);
54+
});
55+
56+
it('decorator', () => {
57+
const testFile = `${__dirname}/test-project/decorator.ts`;
58+
service.update({ fileName: testFile });
59+
const sourceFile = service.getProgram().getSourceFile(testFile);
60+
assert(sourceFile);
61+
const diagnostics = service.getDiagnostics(testFile);
62+
assert.equal(diagnostics.length, 0);
63+
});
64+
65+
it('global types', () => {
66+
const testFile = `${__dirname}/test-project/global-types.ts`;
67+
service.update({ fileName: testFile });
68+
const sourceFile = service.getProgram().getSourceFile(testFile);
69+
assert(sourceFile);
70+
const diagnostics = service.getDiagnostics(testFile);
71+
assert.equal(diagnostics.length, 0);
72+
});
73+
74+
it('date', () => {
75+
const testFile = `${__dirname}/test-project/date.ts`;
76+
service.update({ fileName: testFile });
77+
const sourceFile = service.getProgram().getSourceFile(testFile);
78+
assert(sourceFile);
79+
const diagnostics = service.getDiagnostics(testFile);
80+
assert.equal(diagnostics.length, 0);
81+
});
82+
83+
});
84+
85+
it('create service no libs', () => {
86+
const configFile = `${__dirname}/test-project/tsconfig-nolibs.json`;
87+
service = lib.createService({ configFile });
88+
assert(service);
89+
});

src/test-project/builtin.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
console.log(window, Promise, Date, Function);

src/test-project/date.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
console.log(Date);

src/test-project/decorator.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
declare const deco: any;
2+
@deco() class Target {}

src/test-project/errors.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import * as number from './number';
2+
const a: string = 1;
3+
const foo: number = 'foo';

src/test-project/global-types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
typeof process.env

src/test-project/number.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export const n: number = 1;

src/test-project/tsconfig-nolibs.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"compilerOptions": {
3+
"moduleResolution": "node",
4+
"strict": true,
5+
}
6+
}

src/test-project/tsconfig.json

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"compilerOptions": {
3+
"target": "es5",
4+
"importHelpers": true,
5+
"module": "commonjs",
6+
"moduleResolution": "node",
7+
"experimentalDecorators": true,
8+
"strict": true,
9+
"lib": ["es2017", "dom"]
10+
}
11+
}

src/test-project/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
import * as lib from 'mocha';

0 commit comments

Comments
 (0)