This repository has been archived by the owner on Jul 16, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 258
/
unused_code_console_reporter_test.dart
82 lines (64 loc) · 2.64 KB
/
unused_code_console_reporter_test.dart
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
81
82
import 'dart:io';
import 'package:ansicolor/ansicolor.dart';
import 'package:dart_code_metrics/src/analyzers/unused_code_analyzer/models/unused_code_file_report.dart';
import 'package:dart_code_metrics/src/analyzers/unused_code_analyzer/models/unused_code_issue.dart';
import 'package:dart_code_metrics/src/analyzers/unused_code_analyzer/reporters/reporters_list/console/unused_code_console_reporter.dart';
import 'package:dart_code_metrics/src/analyzers/unused_code_analyzer/reporters/unused_code_report_params.dart';
import 'package:mocktail/mocktail.dart';
import 'package:source_span/source_span.dart';
import 'package:test/test.dart';
class IOSinkMock extends Mock implements IOSink {}
void main() {
group('UnusedCodeConsoleReporter reports in plain text format', () {
const fullPath = '/home/developer/work/project/example.dart';
late IOSinkMock output; // ignore: close_sinks
late UnusedCodeConsoleReporter reporter;
setUp(() {
output = IOSinkMock();
ansiColorDisabled = false;
reporter = UnusedCodeConsoleReporter(output);
});
group('empty report', () {
test('with congratulate param', () async {
const congratulate = UnusedCodeReportParams(congratulate: true);
await reporter.report([], additionalParams: congratulate);
final captured =
verify(() => output.writeln(captureAny())).captured.cast<String>();
expect(captured, ['\x1B[38;5;20m✔\x1B[0m no unused code found!']);
});
test('without congratulate param', () async {
const noCongratulate = UnusedCodeReportParams(congratulate: false);
await reporter.report([], additionalParams: noCongratulate);
verifyNever(() => output.writeln(any()));
});
});
test('complex report', () async {
final testReport = [
UnusedCodeFileReport(
path: fullPath,
relativePath: 'example.dart',
issues: [
UnusedCodeIssue(
declarationName: 'SomeClass',
declarationType: 'class',
location: SourceLocation(10, line: 5, column: 3),
),
],
),
];
await reporter.report(testReport);
final captured =
verify(() => output.writeln(captureAny())).captured.cast<String>();
expect(
captured,
equals([
'example.dart:',
' \x1B[38;5;180m⚠\x1B[0m unused class SomeClass',
' at $fullPath:5:3',
'',
'\x1B[38;5;167m✖\x1B[0m total unused code (classes, functions, variables, extensions, enums, mixins and type aliases) - \x1B[38;5;167m1\x1B[0m',
]),
);
});
});
}