@@ -146,6 +146,114 @@ public async Task Handle_RazorBlockStart_ReturnsResult()
146146 Mock . Get ( clientConnection ) . Verify ( ) ;
147147 }
148148
149+ [ Fact ]
150+ public async Task Handle_HtmlInCSharp ( )
151+ {
152+ // Arrange
153+ var input = new TestCode ( """
154+ @if (true)
155+ {
156+ [|<p></p>|]
157+ }
158+ """ ) ;
159+ var codeDocument = CreateCodeDocument ( input . Text ) ;
160+ var uri = new Uri ( "file://path/test.razor" ) ;
161+ var documentContext = CreateDocumentContext ( uri , codeDocument ) ;
162+ var response = new WrapWithTagResponse ( ) ;
163+
164+ var clientConnection = TestMocks . CreateClientConnection ( builder =>
165+ {
166+ builder . SetupSendRequest < WrapWithTagParams , WrapWithTagResponse > ( LanguageServerConstants . RazorWrapWithTagEndpoint , response : new ( ) , verifiable : true ) ;
167+ } ) ;
168+
169+ var endpoint = new WrapWithTagEndpoint ( clientConnection , LoggerFactory ) ;
170+
171+ var range = codeDocument . Source . Text . GetRange ( input . Span ) ;
172+ var wrapWithDivParams = new WrapWithTagParams ( new TextDocumentIdentifier { Uri = uri } )
173+ {
174+ Range = range
175+ } ;
176+ var requestContext = CreateRazorRequestContext ( documentContext ) ;
177+
178+ // Act
179+ var result = await endpoint . HandleRequestAsync ( wrapWithDivParams , requestContext , DisposalToken ) ;
180+
181+ // Assert
182+ Assert . NotNull ( result ) ;
183+ Mock . Get ( clientConnection ) . Verify ( ) ;
184+ }
185+
186+ [ Fact ]
187+ public async Task Handle_HtmlInCSharp_WithWhitespace ( )
188+ {
189+ // Arrange
190+ var input = new TestCode ( """
191+ @if (true)
192+ {
193+ [| <p></p>|]
194+ }
195+ """ ) ;
196+ var codeDocument = CreateCodeDocument ( input . Text ) ;
197+ var uri = new Uri ( "file://path/test.razor" ) ;
198+ var documentContext = CreateDocumentContext ( uri , codeDocument ) ;
199+ var response = new WrapWithTagResponse ( ) ;
200+
201+ var clientConnection = TestMocks . CreateClientConnection ( builder =>
202+ {
203+ builder . SetupSendRequest < WrapWithTagParams , WrapWithTagResponse > ( LanguageServerConstants . RazorWrapWithTagEndpoint , response : new ( ) , verifiable : true ) ;
204+ } ) ;
205+
206+ var endpoint = new WrapWithTagEndpoint ( clientConnection , LoggerFactory ) ;
207+
208+ var range = codeDocument . Source . Text . GetRange ( input . Span ) ;
209+ var wrapWithDivParams = new WrapWithTagParams ( new TextDocumentIdentifier { Uri = uri } )
210+ {
211+ Range = range
212+ } ;
213+ var requestContext = CreateRazorRequestContext ( documentContext ) ;
214+
215+ // Act
216+ var result = await endpoint . HandleRequestAsync ( wrapWithDivParams , requestContext , DisposalToken ) ;
217+
218+ // Assert
219+ Assert . NotNull ( result ) ;
220+ Mock . Get ( clientConnection ) . Verify ( ) ;
221+ }
222+
223+ [ Fact ]
224+ public async Task Handle_HtmlInCSharp_WithNewline ( )
225+ {
226+ // Arrange
227+ var input = new TestCode ( """
228+ @if (true)
229+ {[|
230+ <p></p>|]
231+ }
232+ """ ) ;
233+ var codeDocument = CreateCodeDocument ( input . Text ) ;
234+ var uri = new Uri ( "file://path/test.razor" ) ;
235+ var documentContext = CreateDocumentContext ( uri , codeDocument ) ;
236+ var response = new WrapWithTagResponse ( ) ;
237+
238+ var clientConnection = TestMocks . CreateClientConnection ( builder => { } ) ;
239+
240+ var endpoint = new WrapWithTagEndpoint ( clientConnection , LoggerFactory ) ;
241+
242+ var range = codeDocument . Source . Text . GetRange ( input . Span ) ;
243+ var wrapWithDivParams = new WrapWithTagParams ( new TextDocumentIdentifier { Uri = uri } )
244+ {
245+ Range = range
246+ } ;
247+ var requestContext = CreateRazorRequestContext ( documentContext ) ;
248+
249+ // Act
250+ var result = await endpoint . HandleRequestAsync ( wrapWithDivParams , requestContext , DisposalToken ) ;
251+
252+ // Assert
253+ Assert . Null ( result ) ;
254+ Mock . Get ( clientConnection ) . Verify ( ) ;
255+ }
256+
149257 [ Fact ]
150258 public async Task Handle_CSharp_PartOfImplicitStatement_ReturnsNull ( )
151259 {
0 commit comments