@@ -9,6 +9,7 @@ import com.intellij.openapi.application.ApplicationManager
99import com.intellij.openapi.components.serviceIfCreated
1010import com.intellij.openapi.editor.Document
1111import com.intellij.openapi.fileEditor.FileDocumentManager
12+ import com.intellij.openapi.fileEditor.FileEditorManager
1213import com.intellij.openapi.project.Project
1314import com.intellij.openapi.vfs.VirtualFile
1415import com.intellij.openapi.vfs.newvfs.events.VFileContentChangeEvent
@@ -24,13 +25,13 @@ import io.mockk.runs
2425import io.mockk.slot
2526import io.mockk.verify
2627import kotlinx.coroutines.test.runTest
28+ import org.assertj.core.api.Assertions.assertThat
2729import org.eclipse.lsp4j.DidChangeTextDocumentParams
2830import org.eclipse.lsp4j.DidCloseTextDocumentParams
2931import org.eclipse.lsp4j.DidOpenTextDocumentParams
3032import org.eclipse.lsp4j.DidSaveTextDocumentParams
3133import org.eclipse.lsp4j.jsonrpc.messages.ResponseMessage
3234import org.eclipse.lsp4j.services.TextDocumentService
33- import org.junit.Assert.assertEquals
3435import org.junit.Before
3536import org.junit.Test
3637import software.aws.toolkits.jetbrains.services.amazonq.lsp.AmazonQLanguageServer
@@ -43,6 +44,7 @@ import java.util.concurrent.CompletableFuture
4344
4445class TextDocumentServiceHandlerTest {
4546 private lateinit var project: Project
47+ private lateinit var mockFileEditorManager: FileEditorManager
4648 private lateinit var mockLanguageServer: AmazonQLanguageServer
4749 private lateinit var mockTextDocumentService: TextDocumentService
4850 private lateinit var sut: TextDocumentServiceHandler
@@ -90,6 +92,11 @@ class TextDocumentServiceHandlerTest {
9092 every { messageBus.connect(any<Disposable >()) } returns mockConnection
9193 every { mockConnection.subscribe(any(), any()) } just runs
9294
95+ // Mock FileEditorManager
96+ mockFileEditorManager = mockk<FileEditorManager >()
97+ every { mockFileEditorManager.openFiles } returns emptyArray()
98+ every { project.getService(FileEditorManager ::class .java) } returns mockFileEditorManager
99+
93100 sut = TextDocumentServiceHandler (project, mockk())
94101 }
95102
@@ -120,12 +127,31 @@ class TextDocumentServiceHandlerTest {
120127 verify { mockTextDocumentService.didSave(capture(paramsSlot)) }
121128
122129 with (paramsSlot.captured) {
123- assertEquals( normalizeFileUri(uri.toString()), textDocument.uri )
124- assertEquals( " test content" , text )
130+ assertThat(textDocument.uri).isEqualTo( normalizeFileUri(uri.toString()))
131+ assertThat(text).isEqualTo( " test content" )
125132 }
126133 }
127134 }
128135
136+ @Test
137+ fun `didOpen runs on service init` () = runTest {
138+ val uri = URI .create(" file:///test/path/file.txt" )
139+ val content = " test content"
140+ val file = createMockVirtualFile(uri, content)
141+
142+ every { mockFileEditorManager.openFiles } returns arrayOf(file)
143+
144+ sut = TextDocumentServiceHandler (project, mockk())
145+
146+ val paramsSlot = slot<DidOpenTextDocumentParams >()
147+ verify { mockTextDocumentService.didOpen(capture(paramsSlot)) }
148+
149+ with (paramsSlot.captured.textDocument) {
150+ assertThat(this .uri).isEqualTo(normalizeFileUri(uri.toString()))
151+ assertThat(text).isEqualTo(content)
152+ }
153+ }
154+
129155 @Test
130156 fun `didOpen runs on fileOpened` () = runTest {
131157 // Create test file
@@ -142,8 +168,8 @@ class TextDocumentServiceHandlerTest {
142168 verify { mockTextDocumentService.didOpen(capture(paramsSlot)) }
143169
144170 with (paramsSlot.captured.textDocument) {
145- assertEquals( normalizeFileUri(uri.toString()), this .uri )
146- assertEquals(content, text)
171+ assertThat( this .uri).isEqualTo( normalizeFileUri(uri.toString()))
172+ assertThat( text).isEqualTo(content )
147173 }
148174 }
149175
@@ -157,7 +183,7 @@ class TextDocumentServiceHandlerTest {
157183 val paramsSlot = slot<DidCloseTextDocumentParams >()
158184 verify { mockTextDocumentService.didClose(capture(paramsSlot)) }
159185
160- assertEquals( normalizeFileUri(uri.toString()), paramsSlot.captured.textDocument.uri )
186+ assertThat(paramsSlot.captured.textDocument.uri).isEqualTo( normalizeFileUri(uri.toString()))
161187 }
162188
163189 @Test
@@ -191,9 +217,9 @@ class TextDocumentServiceHandlerTest {
191217 verify { mockTextDocumentService.didChange(capture(paramsSlot)) }
192218
193219 with (paramsSlot.captured) {
194- assertEquals( normalizeFileUri(uri.toString()), textDocument.uri )
195- assertEquals( 123 , textDocument.version)
196- assertEquals( " changed content " , contentChanges[0 ].text)
220+ assertThat(textDocument.uri).isEqualTo( normalizeFileUri(uri.toString()))
221+ assertThat( textDocument.version).isEqualTo( 123 )
222+ assertThat( contentChanges[0 ].text).isEqualTo( " changed content " )
197223 }
198224 }
199225
0 commit comments