From 7d4d645eb24a30888825f6cdf50cb3eec6ef59f7 Mon Sep 17 00:00:00 2001 From: Szymon Szukalski Date: Fri, 26 Jul 2024 15:07:54 +1000 Subject: Add test cases for multiple submissions Add test cases which exercise the logic for updating the marks available and marks obtained. Update the service method so that they are transactional and reset the transient 'updated' and 'created' flags after reloading entites to ensure accurate update/create reporting. --- .../java/com/stileeducation/markr/service/TestService.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'src/main/java/com/stileeducation/markr/service/TestService.java') diff --git a/src/main/java/com/stileeducation/markr/service/TestService.java b/src/main/java/com/stileeducation/markr/service/TestService.java index 0e109ac..f42da1a 100644 --- a/src/main/java/com/stileeducation/markr/service/TestService.java +++ b/src/main/java/com/stileeducation/markr/service/TestService.java @@ -2,6 +2,7 @@ package com.stileeducation.markr.service; import com.stileeducation.markr.entity.Test; import com.stileeducation.markr.repository.TestRepository; +import jakarta.transaction.Transactional; import org.springframework.stereotype.Service; import java.util.Optional; @@ -16,22 +17,27 @@ public class TestService { this.testRepository = testRepository; } + @Transactional public Optional findTest(String testId) { return testRepository.findByTestId(testId); } + @Transactional public Test findOrCreateTest(String testId, Integer marksAvailable) { Optional optionalTest = testRepository.findByTestId(testId); + if (optionalTest.isPresent()) { Test test = optionalTest.get(); - if (test.getMarksAvailable() < marksAvailable) { + if (marksAvailable > test.getMarksAvailable()) { test.setMarksAvailable(marksAvailable); + test.setCreated(false); test.setUpdated(true); - testRepository.save(test); + return testRepository.save(test); } else { + test.setCreated(false); test.setUpdated(false); + return test; } - return test; } else { Test test = new Test(); test.setTestId(testId); -- cgit v1.2.3