1
+
2
+ var describe = require ( 'mocha' ) . describe ;
3
+ var it = require ( 'mocha' ) . it ;
4
+ var os = require ( 'os' ) ;
5
+ var beforeEach = require ( 'mocha' ) . beforeEach ;
6
+ var afterEach = require ( 'mocha' ) . afterEach ;
7
+ var expect = require ( 'chai' ) . expect ;
8
+ var mockFs = require ( 'mock-fs' ) ;
9
+ var NormalizedMessage = require ( '../../lib/NormalizedMessage' ) ;
10
+ var createCodeframeFormatter = require ( '../../lib/formatter/codeframeFormatter' ) ;
11
+
12
+ describe ( '[UNIT] formatter/codeframeFormatter' , function ( ) {
13
+
14
+ beforeEach ( function ( ) {
15
+ mockFs ( {
16
+ some : {
17
+ 'file.ts' : [
18
+ 'class SomeClass {' ,
19
+ ' private someProperty: boolean;' ,
20
+ ' constructor() {' ,
21
+ ' console.log(\'anything special\');' ,
22
+ ' }' ,
23
+ '}'
24
+ ] . join ( '\n' )
25
+ }
26
+ } ) ;
27
+ } ) ;
28
+
29
+ afterEach ( function ( ) {
30
+ mockFs . restore ( ) ;
31
+ } ) ;
32
+
33
+ it ( 'should format normalized diagnostic message' , function ( ) {
34
+ var message = new NormalizedMessage ( {
35
+ type : NormalizedMessage . TYPE_DIAGNOSTIC ,
36
+ code : 123 ,
37
+ severity : NormalizedMessage . SEVERITY_ERROR ,
38
+ content : 'Some diagnostic content' ,
39
+ file : 'some/file.ts' ,
40
+ line : 1 ,
41
+ character : 7
42
+ } ) ;
43
+ var formatter = createCodeframeFormatter ( {
44
+ linesAbove : 1 ,
45
+ linesBelow : 1
46
+ } ) ;
47
+ var formattedMessage = formatter ( message , false ) ;
48
+
49
+ expect ( formattedMessage ) . to . be . equal (
50
+ 'ERROR at some/file.ts' + os . EOL +
51
+ '1:7 Some diagnostic content' + os . EOL +
52
+ ' > 1 | class SomeClass {' + os . EOL +
53
+ ' | ^' + os . EOL +
54
+ ' 2 | private someProperty: boolean;'
55
+ ) ;
56
+ } ) ;
57
+
58
+ it ( 'should format normalized lint message' , function ( ) {
59
+ var message = new NormalizedMessage ( {
60
+ type : NormalizedMessage . TYPE_LINT ,
61
+ code : 'some-lint-rule' ,
62
+ severity : NormalizedMessage . SEVERITY_WARNING ,
63
+ content : 'Some lint content' ,
64
+ file : 'some/file.ts' ,
65
+ line : 2 ,
66
+ character : 11
67
+ } ) ;
68
+ var formatter = createCodeframeFormatter ( {
69
+ linesAbove : 1 ,
70
+ linesBelow : 1
71
+ } ) ;
72
+ var formattedMessage = formatter ( message , false ) ;
73
+
74
+ expect ( formattedMessage ) . to . be . equal (
75
+ 'WARNING at some/file.ts' + os . EOL +
76
+ '2:11 Some lint content' + os . EOL +
77
+ ' 1 | class SomeClass {' + os . EOL +
78
+ ' > 2 | private someProperty: boolean;' + os . EOL +
79
+ ' | ^' + os . EOL +
80
+ ' 3 | constructor() {'
81
+ ) ;
82
+ } ) ;
83
+
84
+ it ( 'should format normalized message without file' , function ( ) {
85
+ var message = new NormalizedMessage ( {
86
+ type : NormalizedMessage . TYPE_LINT ,
87
+ code : 'some-lint-rule' ,
88
+ severity : NormalizedMessage . SEVERITY_WARNING ,
89
+ content : 'Some lint content' ,
90
+ file : 'some/unknown-file.ts' ,
91
+ line : 2 ,
92
+ character : 11
93
+ } ) ;
94
+ var formatter = createCodeframeFormatter ( {
95
+ linesAbove : 1 ,
96
+ linesBelow : 1
97
+ } ) ;
98
+ var formattedMessage = formatter ( message , false ) ;
99
+
100
+ expect ( formattedMessage ) . to . be . equal (
101
+ 'WARNING at some/unknown-file.ts' + os . EOL +
102
+ '2:11 Some lint content'
103
+ ) ;
104
+ } ) ;
105
+ } ) ;
0 commit comments