mirror of
https://github.com/Stirling-Tools/Stirling-PDF.git
synced 2025-05-15 02:35:54 +00:00

# Description of Changes Please provide a summary of the changes, including: - What was changed - Why the change was made - Any challenges encountered Closes #(issue_number) --- ## Checklist ### General - [x] I have read the [Contribution Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md) - [x] I have read the [Stirling-PDF Developer Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md) (if applicable) - [ ] I have read the [How to add new languages to Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md) (if applicable) - [x] I have performed a self-review of my own code - [x] My changes generate no new warnings ### Documentation - [ ] I have updated relevant docs on [Stirling-PDF's doc repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/) (if functionality has heavily changed) - [ ] I have read the section [Add New Translation Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags) (for new translation tags only) ### UI Changes (if applicable) - [ ] Screenshots or videos demonstrating the UI changes are attached (e.g., as comments or direct attachments in the PR) ### Testing (if applicable) - [x] I have tested my changes locally. Refer to the [Testing Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing) for more details.
75 lines
2.9 KiB
Java
75 lines
2.9 KiB
Java
package stirling.software.SPDF.controller.api;
|
|
|
|
import org.apache.pdfbox.pdmodel.PDDocument;
|
|
import org.apache.pdfbox.pdmodel.PDPage;
|
|
import java.io.IOException;
|
|
import org.apache.pdfbox.pdmodel.PDPageTree;
|
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
|
import org.junit.jupiter.api.Test;
|
|
import org.junit.jupiter.api.extension.ExtendWith;
|
|
import org.mockito.InjectMocks;
|
|
import org.mockito.Mock;
|
|
import static org.mockito.Mockito.mock;
|
|
import static org.mockito.Mockito.verify;
|
|
import static org.mockito.Mockito.when;
|
|
import org.mockito.junit.jupiter.MockitoExtension;
|
|
import org.springframework.http.ResponseEntity;
|
|
import org.springframework.mock.web.MockMultipartFile;
|
|
import stirling.software.SPDF.service.CustomPDFDocumentFactory;
|
|
import stirling.software.SPDF.model.api.general.RotatePDFRequest;
|
|
|
|
@ExtendWith(MockitoExtension.class)
|
|
public class RotationControllerTest {
|
|
|
|
@Mock private CustomPDFDocumentFactory pdfDocumentFactory;
|
|
|
|
@InjectMocks private RotationController rotationController;
|
|
|
|
@Test
|
|
public void testRotatePDF() throws IOException {
|
|
// Create a mock file
|
|
MockMultipartFile mockFile =
|
|
new MockMultipartFile("file", "test.pdf", "application/pdf", new byte[] {1, 2, 3});
|
|
RotatePDFRequest request = new RotatePDFRequest();
|
|
request.setFileInput(mockFile);
|
|
request.setAngle(90);
|
|
|
|
PDDocument mockDocument = mock(PDDocument.class);
|
|
PDPageTree mockPages = mock(PDPageTree.class);
|
|
PDPage mockPage = mock(PDPage.class);
|
|
|
|
when(pdfDocumentFactory.load(request)).thenReturn(mockDocument);
|
|
when(mockDocument.getPages()).thenReturn(mockPages);
|
|
when(mockPages.iterator())
|
|
.thenReturn(java.util.Collections.singletonList(mockPage).iterator());
|
|
when(mockPage.getRotation()).thenReturn(0);
|
|
|
|
// Act
|
|
ResponseEntity<byte[]> response = rotationController.rotatePDF(request);
|
|
|
|
// Assert
|
|
verify(mockPage).setRotation(90);
|
|
assertNotNull(response);
|
|
assertEquals(200, response.getStatusCode().value());
|
|
}
|
|
|
|
@Test
|
|
public void testRotatePDFInvalidAngle() throws IOException {
|
|
// Create a mock file
|
|
MockMultipartFile mockFile =
|
|
new MockMultipartFile("file", "test.pdf", "application/pdf", new byte[] {1, 2, 3});
|
|
RotatePDFRequest request = new RotatePDFRequest();
|
|
request.setFileInput(mockFile);
|
|
request.setAngle(45); // Invalid angle
|
|
|
|
// Act & Assert: Controller direkt aufrufen und Exception erwarten
|
|
IllegalArgumentException exception =
|
|
assertThrows(
|
|
IllegalArgumentException.class,
|
|
() -> rotationController.rotatePDF(request));
|
|
assertEquals("Angle must be a multiple of 90", exception.getMessage());
|
|
}
|
|
}
|