Skip to content

Commit 4150e9a

Browse files
MAT-8732 refactored code to adopt measurelocking
1 parent f33467c commit 4150e9a

2 files changed

Lines changed: 103 additions & 6 deletions

File tree

src/main/java/cms/gov/madie/measure/resources/AdminController.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -148,20 +148,21 @@ public void resetTestCaseValidationQueue(
148148
.getTestCases()
149149
.forEach(
150150
testCase -> {
151-
if (TestCaseValidationStatus.VALIDATING
151+
if (TestCaseValidationStatus.PENDING
152152
.toString()
153153
.equalsIgnoreCase(testCase.getValidationStatus())) {
154-
testCase.setValidationStatus(TestCaseValidationStatus.PENDING.toString());
155-
// submit the test case after updating its status
154+
// Submit test case already in PENDING status
156155
testCaseValidationService.submitOnSaveValidationTask(
157156
measure.getId(),
158157
testCase,
159158
accessToken,
160159
ModelType.valueOfName(measure.getModel()));
161-
} else if (TestCaseValidationStatus.PENDING
160+
} else if (TestCaseValidationStatus.VALIDATING
162161
.toString()
163162
.equalsIgnoreCase(testCase.getValidationStatus())) {
164-
// Submit test cases already in PENDING status
163+
measureRepository.setValidationStatusToPending(
164+
testCase.getId(), measure.getId());
165+
// submit the test case after updating its status
165166
testCaseValidationService.submitOnSaveValidationTask(
166167
measure.getId(),
167168
testCase,
@@ -174,7 +175,6 @@ public void resetTestCaseValidationQueue(
174175
log.info(
175176
"User [{}] - Successfully placed QI Core v6 test cases back on the validation queue",
176177
principal.getName());
177-
measureRepository.saveAll(measureList);
178178
}
179179
}
180180

src/test/java/cms/gov/madie/measure/resources/AdminControllerMvcTest.java

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -741,6 +741,22 @@ public void updateTestCaseValidationStatusProcessesValidatingTestCases() throws
741741
when(measureRepository.findAllByModel(ModelType.QI_CORE_6_0_0.getValue()))
742742
.thenReturn(List.of(measure));
743743

744+
// Mock the repository behavior to update the validation status to PENDING
745+
doAnswer(
746+
invocation -> {
747+
String testCaseId = invocation.getArgument(0, String.class);
748+
String measureId = invocation.getArgument(1, String.class);
749+
if ("TC1".equals(testCaseId) && "M1".equals(measureId)) {
750+
measure
751+
.getTestCases()
752+
.get(0)
753+
.setValidationStatus(TestCaseValidationStatus.PENDING.toString());
754+
}
755+
return null;
756+
})
757+
.when(measureRepository)
758+
.setValidationStatusToPending(anyString(), anyString());
759+
744760
mockMvc
745761
.perform(
746762
MockMvcRequestBuilders.put("/admin/measures/test-cases/restart-validation")
@@ -861,4 +877,85 @@ public void updateTestCaseValidationStatusHandlesMeasuresWithoutTestCases() thro
861877

862878
verifyNoInteractions(testCaseValidationService);
863879
}
880+
881+
@Test
882+
public void updateTestCaseValidationStatusProcessesMultipleTestCasesWithDifferentStatuses()
883+
throws Exception {
884+
Measure measure =
885+
Measure.builder()
886+
.id("M1")
887+
.model(ModelType.QI_CORE_6_0_0.getValue())
888+
.testCases(
889+
List.of(
890+
TestCase.builder()
891+
.id("TC1")
892+
.validationStatus(TestCaseValidationStatus.VALIDATING.toString())
893+
.build(),
894+
TestCase.builder()
895+
.id("TC2")
896+
.validationStatus(TestCaseValidationStatus.PENDING.toString())
897+
.build(),
898+
TestCase.builder()
899+
.id("TC3")
900+
.validationStatus(TestCaseValidationStatus.INVALID.toString())
901+
.build()))
902+
.build();
903+
904+
when(measureRepository.findAllByModel(ModelType.QI_CORE_6_0_0.getValue()))
905+
.thenReturn(List.of(measure));
906+
907+
// Mock the repository behavior to update the validation status to PENDING
908+
doAnswer(
909+
invocation -> {
910+
String testCaseId = invocation.getArgument(0, String.class);
911+
String measureId = invocation.getArgument(1, String.class);
912+
if ("TC1".equals(testCaseId) && "M1".equals(measureId)) {
913+
measure
914+
.getTestCases()
915+
.get(0)
916+
.setValidationStatus(TestCaseValidationStatus.PENDING.toString());
917+
}
918+
return null;
919+
})
920+
.when(measureRepository)
921+
.setValidationStatusToPending(anyString(), anyString());
922+
923+
mockMvc
924+
.perform(
925+
MockMvcRequestBuilders.put("/admin/measures/test-cases/restart-validation")
926+
.with(csrf())
927+
.with(user(TEST_USER_ID))
928+
.header(ADMIN_TEST_API_KEY_HEADER, ADMIN_TEST_API_KEY_HEADER_VALUE)
929+
.header("Authorization", "test-okta"))
930+
.andExpect(status().isOk());
931+
932+
verify(testCaseValidationService, times(1))
933+
.submitOnSaveValidationTask(
934+
eq("M1"),
935+
eq(measure.getTestCases().get(0)),
936+
eq("test-okta"),
937+
eq(ModelType.QI_CORE_6_0_0));
938+
verify(testCaseValidationService, times(1))
939+
.submitOnSaveValidationTask(
940+
eq("M1"),
941+
eq(measure.getTestCases().get(1)),
942+
eq("test-okta"),
943+
eq(ModelType.QI_CORE_6_0_0));
944+
verify(testCaseValidationService, never())
945+
.submitOnSaveValidationTask(
946+
eq("M1"),
947+
eq(measure.getTestCases().get(2)),
948+
eq("test-okta"),
949+
eq(ModelType.QI_CORE_6_0_0));
950+
951+
assertEquals(
952+
TestCaseValidationStatus.PENDING.toString(),
953+
measure.getTestCases().get(0).getValidationStatus());
954+
assertEquals(
955+
TestCaseValidationStatus.PENDING.toString(),
956+
measure.getTestCases().get(1).getValidationStatus());
957+
assertEquals(
958+
TestCaseValidationStatus.INVALID.toString(),
959+
measure.getTestCases().get(2).getValidationStatus());
960+
}
864961
}

0 commit comments

Comments
 (0)