|
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