use of org.motechproject.mots.repository.DistrictAssignmentLogRepository in project mots by motech-implementations.
the class ModuleAssignmentServiceTest method shouldAssignModulesToDistrict.
@Test
public void shouldAssignModulesToDistrict() throws Exception {
when(userService.getUserByUserName(eq(user.getUsername()))).thenReturn(user);
when(communityHealthWorkerRepository.findByCommunityFacilityChiefdomDistrictIdAndSelected(any(), any())).thenReturn(Collections.singletonList(CHW));
moduleAssignmentService.assignModulesToDistrict(districtAssignmentDto);
ArgumentCaptor<DistrictAssignmentLog> districtAssignmentLogCaptor = ArgumentCaptor.forClass(DistrictAssignmentLog.class);
verify(districtAssignmentLogRepository, times(2)).save(districtAssignmentLogCaptor.capture());
List<DistrictAssignmentLog> districtAssignmentLogs = districtAssignmentLogCaptor.getAllValues();
final Set<Module> passedModules = new HashSet<>(Arrays.asList(MODULE_2, MODULE_3));
assertTrue(districtAssignmentLogs.stream().allMatch(l -> passedModules.contains(l.getModule())));
for (DistrictAssignmentLog log : districtAssignmentLogs) {
assertEquals(DISTRICT, log.getDistrict());
assertEquals(districtAssignmentDto.getStartDate(), log.getStartDate().toString());
assertEquals(districtAssignmentDto.getEndDate(), log.getEndDate().toString());
assertEquals(user, log.getOwner());
}
ArgumentCaptor<AssignedModules> assignedModulesCaptor = ArgumentCaptor.forClass(AssignedModules.class);
verify(assignedModulesRepository).save(assignedModulesCaptor.capture());
final Set<Module> allModules = new HashSet<>(Arrays.asList(MODULE_1, MODULE_2, MODULE_3));
assertEquals(allModules, assignedModulesCaptor.getValue().getModules());
verify(ivrService).addSubscriberToGroups(eq(CHW.getIvrId()), eq(Collections.singletonList(IVR_GROUP)));
verify(moduleProgressService).createModuleProgresses(any(), eq(Collections.singleton(MODULE_3)));
}
Aggregations