1
1
// Copyright (c) .NET Foundation. All rights reserved.
2
2
// Licensed under the MIT license. See License.txt in the project root for license information.
3
3
4
- #nullable disable
5
-
6
4
using System ;
7
5
using System . Threading ;
8
6
using System . Threading . Tasks ;
7
+ using Microsoft . AspNetCore . Razor . Test . Common ;
9
8
using Microsoft . CommonLanguageServerProtocol . Framework ;
10
9
using Microsoft . VisualStudio . LanguageServer . Protocol ;
11
10
using Moq ;
12
11
using Xunit ;
12
+ using Xunit . Abstractions ;
13
13
14
14
namespace Microsoft . AspNetCore . Razor . LanguageServer ;
15
15
16
- public class RazorFileChangeDetectorManagerTest
16
+ public class RazorFileChangeDetectorManagerTest ( ITestOutputHelper testOutput ) : ToolingTestBase ( testOutput )
17
17
{
18
18
[ Fact ]
19
19
public async Task InitializedAsync_StartsFileChangeDetectors ( )
@@ -32,30 +32,41 @@ public async Task InitializedAsync_StartsFileChangeDetectors()
32
32
{
33
33
RootUri = uriBuilder . Uri ,
34
34
} ;
35
- var languageServer = new Mock < IInitializeManager < InitializeParams , InitializeResult > > ( MockBehavior . Strict ) ;
36
- languageServer . Setup ( s => s . GetInitializeParams ( ) )
35
+
36
+ var languageServerMock = new StrictMock < IInitializeManager < InitializeParams , InitializeResult > > ( ) ;
37
+ languageServerMock
38
+ . Setup ( s => s . GetInitializeParams ( ) )
37
39
. Returns ( clientSettings ) ;
38
- var detector1 = new Mock < IFileChangeDetector > ( MockBehavior . Strict ) ;
40
+
39
41
var expectedWorkspaceDirectory = $ "\\ \\ { initialWorkspaceDirectory } ";
40
- detector1
42
+
43
+ var detectorMock1 = new StrictMock < IFileChangeDetector > ( ) ;
44
+ detectorMock1
41
45
. Setup ( detector => detector . StartAsync ( expectedWorkspaceDirectory , It . IsAny < CancellationToken > ( ) ) )
42
46
. Returns ( Task . CompletedTask )
43
47
. Verifiable ( ) ;
44
- var detector2 = new Mock < IFileChangeDetector > ( MockBehavior . Strict ) ;
45
- detector2
48
+
49
+ detectorMock1 . Setup ( x => x . Stop ( ) ) ;
50
+
51
+ var detectorMock2 = new StrictMock < IFileChangeDetector > ( ) ;
52
+ detectorMock2
46
53
. Setup ( detector => detector . StartAsync ( expectedWorkspaceDirectory , It . IsAny < CancellationToken > ( ) ) )
47
54
. Returns ( Task . CompletedTask )
48
55
. Verifiable ( ) ;
49
- var workspaceDirectoryPathResolver = new DefaultWorkspaceDirectoryPathResolver ( languageServer . Object ) ;
50
- var detectorManager = new RazorFileChangeDetectorManager ( workspaceDirectoryPathResolver , new [ ] { detector1 . Object , detector2 . Object } ) ;
51
56
52
- // Act
53
- await detectorManager . InitializedAsync ( ) ;
57
+ detectorMock2 . Setup ( x => x . Stop ( ) ) ;
58
+
59
+ var workspaceDirectoryPathResolver = new DefaultWorkspaceDirectoryPathResolver ( languageServerMock . Object ) ;
60
+ using ( var detectorManager = new RazorFileChangeDetectorManager ( workspaceDirectoryPathResolver , [ detectorMock1 . Object , detectorMock2 . Object ] ) )
61
+ {
62
+ // Act
63
+ await detectorManager . InitializedAsync ( DisposalToken ) ;
64
+ }
54
65
55
66
// Assert
56
- detector1 . VerifyAll ( ) ;
57
- detector2 . VerifyAll ( ) ;
58
- languageServer . VerifyAll ( ) ;
67
+ detectorMock1 . VerifyAll ( ) ;
68
+ detectorMock2 . VerifyAll ( ) ;
69
+ languageServerMock . VerifyAll ( ) ;
59
70
}
60
71
61
72
[ Fact ]
@@ -67,22 +78,27 @@ public async Task InitializedAsync_Disposed_ReStopsFileChangeDetectors()
67
78
{
68
79
RootUri = new Uri ( expectedWorkspaceDirectory ) ,
69
80
} ;
70
- var languageServer = new Mock < IInitializeManager < InitializeParams , InitializeResult > > ( MockBehavior . Strict ) ;
71
- languageServer
81
+
82
+ var languageServerMock = new StrictMock < IInitializeManager < InitializeParams , InitializeResult > > ( ) ;
83
+ languageServerMock
72
84
. Setup ( s => s . GetInitializeParams ( ) )
73
85
. Returns ( clientSettings ) ;
74
86
75
- var detector = new Mock < IFileChangeDetector > ( MockBehavior . Strict ) ;
87
+ var detectorMock = new StrictMock < IFileChangeDetector > ( ) ;
76
88
var cts = new TaskCompletionSource < bool > ( ) ;
77
- detector . Setup ( d => d . StartAsync ( It . IsAny < string > ( ) , It . IsAny < CancellationToken > ( ) ) )
89
+ detectorMock
90
+ . Setup ( d => d . StartAsync ( It . IsAny < string > ( ) , It . IsAny < CancellationToken > ( ) ) )
78
91
. Returns ( cts . Task ) ;
79
92
var stopCount = 0 ;
80
- detector . Setup ( d => d . Stop ( ) ) . Callback ( ( ) => stopCount ++ ) ;
81
- var workspaceDirectoryPathResolver = new DefaultWorkspaceDirectoryPathResolver ( languageServer . Object ) ;
82
- var detectorManager = new RazorFileChangeDetectorManager ( workspaceDirectoryPathResolver , new [ ] { detector . Object } ) ;
93
+ detectorMock
94
+ . Setup ( d => d . Stop ( ) )
95
+ . Callback ( ( ) => stopCount ++ ) ;
96
+
97
+ var workspaceDirectoryPathResolver = new DefaultWorkspaceDirectoryPathResolver ( languageServerMock . Object ) ;
98
+ using var detectorManager = new RazorFileChangeDetectorManager ( workspaceDirectoryPathResolver , [ detectorMock . Object ] ) ;
83
99
84
100
// Act
85
- var initializeTask = detectorManager . InitializedAsync ( ) ;
101
+ var initializeTask = detectorManager . InitializedAsync ( DisposalToken ) ;
86
102
detectorManager . Dispose ( ) ;
87
103
88
104
// Unblock the detector start
@@ -92,6 +108,6 @@ public async Task InitializedAsync_Disposed_ReStopsFileChangeDetectors()
92
108
// Assert
93
109
Assert . Equal ( 2 , stopCount ) ;
94
110
95
- languageServer . VerifyAll ( ) ;
111
+ languageServerMock . VerifyAll ( ) ;
96
112
}
97
113
}
0 commit comments