summaryrefslogtreecommitdiff
path: root/src/main/java/com/stileeducation/markr/service/TestService.java
diff options
context:
space:
mode:
authorSzymon Szukalski <szymon@skas.io>2024-07-26 15:07:54 +1000
committerSzymon Szukalski <szymon@skas.io>2024-07-26 15:07:54 +1000
commit7d4d645eb24a30888825f6cdf50cb3eec6ef59f7 (patch)
tree74ea58ed48b57f44e27e3e52fea7ee1c5f0e8b7c /src/main/java/com/stileeducation/markr/service/TestService.java
parent39e7e3344bf0827fe9563dc1f08d18084316fd6f (diff)
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.
Diffstat (limited to 'src/main/java/com/stileeducation/markr/service/TestService.java')
-rw-r--r--src/main/java/com/stileeducation/markr/service/TestService.java12
1 files changed, 9 insertions, 3 deletions
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<Test> findTest(String testId) {
return testRepository.findByTestId(testId);
}
+ @Transactional
public Test findOrCreateTest(String testId, Integer marksAvailable) {
Optional<Test> 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);