|
16 | 16 |
|
17 | 17 | package io.spring.format.formatter.intellij.formatting; |
18 | 18 |
|
| 19 | +import java.nio.file.Files; |
| 20 | +import java.nio.file.Path; |
19 | 21 | import java.util.Collections; |
20 | 22 |
|
21 | 23 | import com.intellij.formatting.FormattingContext; |
|
25 | 27 | import com.intellij.openapi.fileTypes.FileTypeManager; |
26 | 28 | import com.intellij.openapi.fileTypes.PlainTextFileType; |
27 | 29 | import com.intellij.openapi.project.Project; |
| 30 | +import com.intellij.openapi.vfs.VirtualFile; |
| 31 | +import com.intellij.openapi.vfs.VirtualFileSystem; |
28 | 32 | import com.intellij.psi.PsiFile; |
29 | 33 | import org.junit.jupiter.api.Test; |
| 34 | +import org.junit.jupiter.api.io.TempDir; |
30 | 35 |
|
31 | 36 | import io.spring.format.formatter.intellij.state.State; |
32 | 37 |
|
33 | 38 | import static org.assertj.core.api.Assertions.assertThat; |
34 | 39 | import static org.mockito.ArgumentMatchers.any; |
35 | 40 | import static org.mockito.BDDMockito.given; |
| 41 | +import static org.mockito.BDDMockito.willAnswer; |
36 | 42 | import static org.mockito.Mockito.mock; |
37 | | -import static org.mockito.Mockito.verify; |
38 | 43 |
|
39 | 44 | /** |
40 | 45 | * Tests for {@link SpringJavaFormatFormattingService}. |
@@ -73,13 +78,31 @@ void canFormatWhenJavaFileAndActiveReturnsTrue() { |
73 | 78 | } |
74 | 79 |
|
75 | 80 | @Test |
76 | | - void formatDocumentAppliesFormatting() { |
| 81 | + void formatDocumentAppliesFormatting(@TempDir Path tempDir) throws Exception { |
| 82 | + Files.writeString(tempDir.resolve(".springjavaformatconfig"), "indentation-style=spaces"); |
77 | 83 | Document document = mock(Document.class); |
78 | | - String text = "public class Hello {}"; |
79 | | - given(document.getText()).willReturn(text); |
| 84 | + StringBuilder text = new StringBuilder("public class Hello{" |
| 85 | + + "\tpublic void hello() {" |
| 86 | + + "\tString value =\t\"Hello World\";}}"); |
| 87 | + willAnswer((invocation) -> { |
| 88 | + text.replace(invocation.getArgument(0), invocation.getArgument(1), invocation.getArgument(2)); |
| 89 | + return null; |
| 90 | + }).given(document).replaceString(any(Integer.class), any(Integer.class), any(CharSequence.class)); |
| 91 | + given(document.getText()).willAnswer((invocation) -> text.toString()); |
80 | 92 | FormattingContext formattingContext = mock(FormattingContext.class); |
| 93 | + VirtualFile virtualFile = mock(VirtualFile.class); |
| 94 | + VirtualFileSystem virtualFileSystem = mock(VirtualFileSystem.class); |
| 95 | + given(virtualFile.getFileSystem()).willReturn(virtualFileSystem); |
| 96 | + given(formattingContext.getVirtualFile()).willReturn(virtualFile); |
| 97 | + given(virtualFileSystem.getNioPath(virtualFile)).willReturn(tempDir.resolve("Hello.java")); |
81 | 98 | this.service.formatDocument(document, Collections.emptyList(), formattingContext, false, false); |
82 | | - verify(document).replaceString(20, 20, "\n\n"); |
| 99 | + assertThat(text.toString()).isEqualTo("public class Hello {" |
| 100 | + + "\n\n" |
| 101 | + + " public void hello() {\n" |
| 102 | + + " String value = \"Hello World\";\n" |
| 103 | + + " }\n" |
| 104 | + + "\n" |
| 105 | + + "}"); |
83 | 106 | } |
84 | 107 |
|
85 | 108 | private PsiFile mockFile(FileType fileType, State state) { |
|
0 commit comments