diff --git a/pom.xml b/pom.xml index d5e071f9..cf9d3292 100644 --- a/pom.xml +++ b/pom.xml @@ -1,96 +1,153 @@ - - - 4.0.0 - - org.springframework.boot - spring-boot-starter-parent - 3.0.6 - - - com.medeiros - SPRINGProject - 0.0.1-SNAPSHOT - SPRINGProject - Demo project for Spring Boot - - 20 - - 6.0.3 - - - - org.springframework.boot - spring-boot-starter-data-jpa - - - org.springframework.boot - spring-boot-starter-web - - - - org.springframework.boot - spring-boot-devtools - runtime - true - - - com.mysql - mysql-connector-j - runtime - - - org.springframework.boot - spring-boot-starter-test - test - - - - org.springframework.boot - spring-boot-starter-thymeleaf - 3.0.6 - - - - org.springframework.boot - spring-boot-starter-security - - - - io.jsonwebtoken - jjwt-api - 0.11.5 - - - - - - - org.springframework.security - spring-security-core - 6.0.3 - - - - - - - io.jsonwebtoken - jjwt-impl - 0.11.5 - runtime - - - - - - - - - org.springframework.boot - spring-boot-maven-plugin - - - - - + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 3.0.6 + + + + com.medeiros + SPRINGProject + 0.0.1-SNAPSHOT + SPRINGProject + Demo project for Spring Boot + + 20 + + 6.0.3 + + + + org.springframework.boot + spring-boot-starter-data-jpa + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-devtools + runtime + true + + + com.mysql + mysql-connector-j + runtime + + + org.springframework.boot + spring-boot-starter-test + test + + + org.springframework.boot + spring-boot-starter-thymeleaf + 3.0.6 + + + org.springframework.boot + spring-boot-starter-security + + + + io.jsonwebtoken + jjwt-api + 0.11.5 + + + + org.springframework.security + spring-security-core + 6.0.3 + + + + + io.jsonwebtoken + jjwt-impl + 0.11.5 + runtime + + + org.mockito + mockito-junit-jupiter + 2.23.4 + test + + + + io.spring.javaformat + spring-javaformat-formatter + 0.0.40 + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + org.jacoco + jacoco-maven-plugin + 0.8.11 + + + + prepare-agent + + + + report + test + + report + + + coverageReport + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + 3.2.5 + + + + org.apache.maven.plugins + maven-surefire-report-plugin + 3.2.5 + + testReport + + + + + org.apache.maven.plugins + maven-site-plugin + 2.1 + + testReport + + + + + io.spring.javaformat + spring-javaformat-maven-plugin + 0.0.40 + + + + + + + + \ No newline at end of file diff --git a/src/test/java/com/medeiros/SPRINGProject/Controllers/LogControllerShowAllLogTest.java b/src/test/java/com/medeiros/SPRINGProject/Controllers/LogControllerShowAllLogTest.java new file mode 100644 index 00000000..2ef52846 --- /dev/null +++ b/src/test/java/com/medeiros/SPRINGProject/Controllers/LogControllerShowAllLogTest.java @@ -0,0 +1,111 @@ + +// ********RoostGPT******** +/* +Test generated by RoostGPT for test maven-music-github using AI Type Azure Open AI and AI Model gpt-5 + +ROOST_METHOD_HASH=showAllLog_66d6a0e563 +ROOST_METHOD_SIG_HASH=showAllLog_dafc374432 + +Scenario 1: Returns the same non-empty Iterable provided by the repository + +Details: + TestName: returnsIterableFromRepositoryWhenNonEmpty + Description: Verify that showAllLog returns exactly the Iterable instance supplied by LogRepository.findAll when the repository contains one or more LogModel entries. This ensures the method is a direct pass-through without transformation. + +Execution: + Arrange: Create a mock LogRepository whose findAll returns a non-empty Iterable (e.g., a List with a few LogModel instances). Inject this mock into a LogController instance. + Act: Invoke showAllLog on the LogController. + Assert: Use JUnit assertions to check that the returned object is the same reference as the Iterable returned by the repository and that the elements match the expected models. + +Validation: + The assertion verifies identity equality (same reference) and content equality to confirm that the controller does not copy, wrap, or alter the Iterable. This is significant because it validates the method’s simplicity and performance characteristics (no unnecessary allocations). + +*/ + +// ********RoostGPT******** + +package com.medeiros.SPRINGProject.Controllers; + +import com.medeiros.SPRINGProject.Models.LogModel; +import com.medeiros.SPRINGProject.Models.LogRepository; +import org.junit.jupiter.api.Tag; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import java.util.Arrays; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; +import java.util.ArrayList; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertIterableEquals; +import static org.junit.jupiter.api.Assertions.assertSame; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.Mockito.when; +import org.junit.jupiter.api.*; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@ExtendWith(MockitoExtension.class) +public class LogControllerShowAllLogTest { + + @Mock + private LogRepository logRepository; + + @InjectMocks + private LogController logController; + + @Test + @Tag("valid") + public void returnsIterableFromRepositoryWhenNonEmpty() { + LogModel entry1 = new LogModel(); + LogModel entry2 = new LogModel(); + List expectedIterable = Arrays.asList(entry1, entry2); + when(logRepository.findAll()).thenReturn(expectedIterable); + Iterable actualIterable = logController.showAllLog(); + assertSame((Object) expectedIterable, (Object) actualIterable); + List actualList = new ArrayList<>(); + for (LogModel m : actualIterable) { + actualList.add(m); + } + assertEquals((int) expectedIterable.size(), (int) actualList.size()); + for (int i = 0; i < expectedIterable.size(); i++) { + assertSame((Object) expectedIterable.get(i), (Object) actualList.get(i)); + } + } + + @Test + @Tag("boundary") + public void returnsSameIterableWhenEmptyRepository() { + Iterable expectedIterable = Collections.emptyList(); + when(logRepository.findAll()).thenReturn(expectedIterable); + Iterable actualIterable = logController.showAllLog(); + assertSame((Object) expectedIterable, (Object) actualIterable); + assertNotNull((Object) actualIterable); + Iterator iterator = actualIterable.iterator(); + assertFalse((boolean) iterator.hasNext()); + } + + @Test + @Tag("invalid") + public void returnsNullWhenRepositoryReturnsNull() { + when(logRepository.findAll()).thenReturn(null); + Iterable actualIterable = logController.showAllLog(); + assertNull((Object) actualIterable); + } + + @Test + @Tag("invalid") + public void propagatesExceptionFromRepository() { + when(logRepository.findAll()).thenThrow(new RuntimeException()); + assertThrows((Class) (Class) RuntimeException.class, () -> logController.showAllLog()); + } + +} \ No newline at end of file