use of eu.bcvsolutions.idm.core.api.dto.IdmContractSliceDto in project CzechIdMng by bcvsolutions.
the class ContractSliceManagerTest method selectCurrentSliceAsContractLrtTest.
@Test
public void selectCurrentSliceAsContractLrtTest() {
IdmIdentityDto identity = helper.createIdentity();
String contractCode = "contract-one";
IdmContractSliceDto sliceFuture = helper.createContractSlice(identity, null, LocalDate.now().plusDays(10), null, LocalDate.now().plusDays(100));
sliceFuture.setContractCode(contractCode);
contractSliceService.save(sliceFuture);
IdmContractSliceDto sliceCurrent = helper.createContractSlice(identity, null, LocalDate.now(), null, LocalDate.now().plusDays(50));
sliceCurrent.setContractCode(contractCode);
contractSliceService.save(sliceCurrent);
IdmContractSliceDto slicePast = helper.createContractSlice(identity, null, LocalDate.now().minusDays(10), null, LocalDate.now().plusDays(200));
slicePast.setContractCode(contractCode);
contractSliceService.save(slicePast);
IdmContractSliceFilter filter = new IdmContractSliceFilter();
filter.setIdentity(identity.getId());
List<IdmContractSliceDto> results = contractSliceService.find(filter, null).getContent();
assertEquals(3, results.size());
UUID parentContract = results.get(0).getParentContract();
List<IdmContractSliceDto> slices = contractSliceManager.findAllSlices(parentContract);
assertEquals(3, slices.size());
IdmContractSliceDto validSlice = contractSliceManager.findValidSlice(parentContract);
// Valid slice should be currentSlice
assertEquals(sliceCurrent, validSlice);
// Check created contract by that slice
IdmIdentityContractFilter contractFilter = new IdmIdentityContractFilter();
contractFilter.setIdentity(identity.getId());
List<IdmIdentityContractDto> resultsContract = //
contractService.find(filter, null).getContent().stream().filter(//
c -> contractService.get(c.getId()).getControlledBySlices()).collect(Collectors.toList());
assertEquals(1, resultsContract.size());
// Current slice should be contract
IdmIdentityContractDto contract = resultsContract.get(0);
assertTrue(contract.isValid());
assertEquals(sliceCurrent.getContractValidFrom(), contract.getValidFrom());
// None invalid slices
List<IdmContractSliceDto> unvalidSlices = contractSliceManager.findUnvalidSlices(null).getContent();
assertEquals(0, unvalidSlices.size());
// Set current slice as not currently using
sliceCurrent = contractSliceService.get(sliceCurrent.getId());
sliceCurrent.setUsingAsContract(false);
// Save without recalculation
contractSliceService.publish(new ContractSliceEvent(ContractSliceEventType.UPDATE, sliceCurrent, ImmutableMap.of(IdmContractSliceService.SKIP_RECALCULATE_CONTRACT_SLICE, Boolean.TRUE)));
// One invalid slice
unvalidSlices = contractSliceManager.findUnvalidSlices(null).getContent();
assertEquals(1, unvalidSlices.size());
SelectCurrentContractSliceTaskExecutor lrt = new SelectCurrentContractSliceTaskExecutor();
AutowireHelper.autowire(lrt);
OperationResult result = lrt.process();
assertEquals(OperationState.EXECUTED, result.getState());
}
use of eu.bcvsolutions.idm.core.api.dto.IdmContractSliceDto in project CzechIdMng by bcvsolutions.
the class ContractSliceManagerTest method changeSlicesForTwoContractTest.
@Test
public void changeSlicesForTwoContractTest() {
IdmIdentityDto identity = helper.createIdentity();
String contractCodeOne = "contract-one";
String contractCodeTwo = "contract-two";
IdmContractSliceDto sliceFuture = helper.createContractSlice(identity, null, LocalDate.now().plusDays(10), null, LocalDate.now().plusDays(100));
sliceFuture.setContractCode(contractCodeOne);
contractSliceService.save(sliceFuture);
IdmContractSliceDto sliceCurrentTwo = helper.createContractSlice(identity, null, LocalDate.now(), null, LocalDate.now().plusDays(50));
sliceCurrentTwo.setContractCode(contractCodeTwo);
contractSliceService.save(sliceCurrentTwo);
IdmContractSliceDto slicePastTwo = helper.createContractSlice(identity, null, LocalDate.now().minusDays(10), null, LocalDate.now().plusDays(200));
slicePastTwo.setContractCode(contractCodeTwo);
contractSliceService.save(slicePastTwo);
IdmContractSliceDto slicePast = helper.createContractSlice(identity, null, LocalDate.now().minusDays(10), null, LocalDate.now().plusDays(200));
slicePast.setContractCode(contractCodeOne);
contractSliceService.save(slicePast);
IdmContractSliceFilter filter = new IdmContractSliceFilter();
filter.setIdentity(identity.getId());
List<IdmContractSliceDto> results = contractSliceService.find(filter, null).getContent();
assertEquals(4, results.size());
// Get contract for contractCodeOne
UUID parentContractOne = results.stream().filter(s -> s.getContractCode().equals(contractCodeOne)).findFirst().get().getParentContract();
List<IdmContractSliceDto> slices = contractSliceManager.findAllSlices(parentContractOne);
assertEquals(2, slices.size());
IdmContractSliceDto validSlice = contractSliceManager.findValidSlice(parentContractOne);
// Valid slice should be slicePast now
assertEquals(slicePast, validSlice);
IdmContractSliceDto nextSlice = contractSliceManager.findNextSlice(validSlice, slices);
// Next slice should be futureSlice
assertEquals(sliceFuture, nextSlice);
IdmContractSliceDto previousSlice = contractSliceManager.findPreviousSlice(validSlice, slices);
// Previous slice should be null
assertNull(previousSlice);
List<IdmContractSliceDto> unvalidSlices = contractSliceManager.findUnvalidSlices(null).getContent();
assertEquals(0, unvalidSlices.size());
// Get contract for contractCodeTwo
UUID parentContractTwo = results.stream().filter(s -> s.getContractCode().equals(contractCodeTwo)).findFirst().get().getParentContract();
List<IdmContractSliceDto> slicesTwo = contractSliceManager.findAllSlices(parentContractTwo);
assertEquals(2, slicesTwo.size());
IdmContractSliceDto validSliceTwo = contractSliceManager.findValidSlice(parentContractTwo);
// Valid slice should be sliceCurrentTwo now
assertEquals(sliceCurrentTwo, validSliceTwo);
// Check created contract by that slice
IdmIdentityContractFilter contractFilter = new IdmIdentityContractFilter();
contractFilter.setIdentity(identity.getId());
List<IdmIdentityContractDto> resultsContract = //
contractService.find(filter, null).getContent().stream().filter(//
c -> contractService.get(c.getId()).getControlledBySlices()).collect(Collectors.toList());
// Two contract controlled by slices must exists now
assertEquals(2, resultsContract.size());
// Past slice should be contract
IdmIdentityContractDto contract = resultsContract.stream().filter(c -> c.getId().equals(parentContractOne)).findFirst().get();
assertTrue(contract.isValid());
assertEquals(slicePast.getContractValidFrom(), contract.getValidFrom());
// Change parent contract from Two to One
sliceCurrentTwo.setContractCode(contractCodeOne);
contractSliceService.save(sliceCurrentTwo);
// Check slice for contractCodeTwo
slicesTwo = contractSliceManager.findAllSlices(parentContractTwo);
assertEquals(1, slicesTwo.size());
validSliceTwo = contractSliceManager.findValidSlice(parentContractTwo);
// Valid slice should be sliceCurrentTwo now
assertEquals(slicePastTwo, validSliceTwo);
assertTrue(validSliceTwo.isUsingAsContract());
// Check slice for contractCodeOne
slices = contractSliceManager.findAllSlices(parentContractOne);
assertEquals(3, slices.size());
validSlice = contractSliceManager.findValidSlice(parentContractOne);
// Valid slice should be currentSliceTwo now
assertEquals(sliceCurrentTwo, validSlice);
nextSlice = contractSliceManager.findNextSlice(validSlice, slices);
// Next slice should be futureSlice
assertEquals(sliceFuture, nextSlice);
previousSlice = contractSliceManager.findPreviousSlice(validSlice, slices);
// Previous slice should be pastSlice
assertEquals(slicePast, previousSlice);
unvalidSlices = contractSliceManager.findUnvalidSlices(null).getContent();
assertEquals(0, unvalidSlices.size());
// Check created contract by that slice
resultsContract = //
contractService.find(filter, null).getContent().stream().filter(//
c -> contractService.get(c.getId()).getControlledBySlices()).collect(Collectors.toList());
assertEquals(2, resultsContract.size());
// Change parent contract from Two to One (slicePastTwo)
slicePastTwo.setContractCode(contractCodeOne);
contractSliceService.save(slicePastTwo);
// Contract TWO was deleted
resultsContract = //
contractService.find(filter, null).getContent().stream().filter(//
c -> contractService.get(c.getId()).getControlledBySlices()).collect(Collectors.toList());
assertEquals(1, resultsContract.size());
// Past slice should be contract
contract = resultsContract.get(0);
assertTrue(contract.isValid());
assertEquals(sliceCurrentTwo.getContractValidFrom(), contract.getValidFrom());
}
use of eu.bcvsolutions.idm.core.api.dto.IdmContractSliceDto in project CzechIdMng by bcvsolutions.
the class ContractSliceManagerTest method testModifiedEAVOnSlice.
@Test
public void testModifiedEAVOnSlice() {
IdmIdentityDto identity = helper.createIdentity();
String contractCode = "contract-one";
IdmContractSliceDto slice = helper.createContractSlice(identity, null, null, null, null);
slice.setContractCode(contractCode);
slice = contractSliceService.save(slice);
// Init form definition for identity-contract
IdmFormDefinitionDto definition = this.initIdentityContractFormDefinition();
// Create slice with EAV values
IdmFormInstanceDto formInstanceDto = formService.getFormInstance(slice, definition);
Assert.assertNotNull(formInstanceDto);
Assert.assertNotNull(formInstanceDto.getFormDefinition());
Assert.assertEquals(0, formInstanceDto.getValues().size());
IdmFormAttributeDto attribute = formInstanceDto.getMappedAttributeByCode(NUMBER_OF_FINGERS);
formService.saveValues(slice, attribute, Lists.newArrayList(BigDecimal.TEN));
// We need to save slice for invoke save slice to the contract
slice = contractSliceService.save(slice);
formInstanceDto = formService.getFormInstance(slice, definition);
Assert.assertNotNull(formInstanceDto);
Assert.assertNotNull(formInstanceDto.getFormDefinition());
Assert.assertEquals(1, formInstanceDto.getValues().size());
Assert.assertEquals(BigDecimal.TEN.longValue(), ((BigDecimal) formInstanceDto.getValues().get(0).getValue()).longValue());
formService.saveValues(slice, attribute, Lists.newArrayList(BigDecimal.ONE));
// We need to save slice for invoke save slice to the contract
slice = contractSliceService.save(slice);
IdmContractSliceFilter filter = new IdmContractSliceFilter();
filter.setIdentity(identity.getId());
List<IdmContractSliceDto> results = contractSliceService.find(filter, null).getContent();
assertEquals(1, results.size());
IdmContractSliceDto createdSlice = results.get(0);
assertTrue(createdSlice.isValid());
assertEquals(null, createdSlice.getValidTill());
// Check created contract by that slice
IdmIdentityContractFilter contractFilter = new IdmIdentityContractFilter();
contractFilter.setIdentity(identity.getId());
List<IdmIdentityContractDto> resultsContract = //
contractService.find(filter, null).getContent().stream().filter(//
c -> contractService.get(c.getId()).getControlledBySlices()).collect(Collectors.toList());
//
assertEquals(1, resultsContract.size());
IdmIdentityContractDto contract = resultsContract.get(0);
assertEquals(slice.getContractValidFrom(), contract.getValidFrom());
assertEquals(slice.getContractValidTill(), contract.getValidTill());
assertTrue(contract.isValidNowOrInFuture());
IdmFormInstanceDto contractFormInstanceDto = formService.getFormInstance(contract);
Assert.assertNotNull(contractFormInstanceDto);
Assert.assertNotNull(contractFormInstanceDto.getFormDefinition());
Assert.assertEquals(1, contractFormInstanceDto.getValues().size());
Assert.assertEquals(BigDecimal.ONE.longValue(), ((BigDecimal) contractFormInstanceDto.getValues().get(0).getValue()).longValue());
}
use of eu.bcvsolutions.idm.core.api.dto.IdmContractSliceDto in project CzechIdMng by bcvsolutions.
the class ContractSliceManagerTest method testReferentialIntegrityOnContractDelete.
@Test
public void testReferentialIntegrityOnContractDelete() {
// prepare data
IdmIdentityDto identity = helper.createIdentity();
IdmIdentityDto identityWithContract = helper.createIdentity();
IdmContractSliceDto slice = helper.createContractSlice(identityWithContract);
helper.createContractSliceGuarantee(slice.getId(), identity.getId());
//
IdmContractSliceGuaranteeFilter filter = new IdmContractSliceGuaranteeFilter();
filter.setGuaranteeId(identity.getId());
List<IdmContractSliceGuaranteeDto> guarantees = contractGuaranteeService.find(filter, null).getContent();
assertEquals(1, guarantees.size());
//
contractSliceService.deleteById(slice.getId());
//
guarantees = contractGuaranteeService.find(filter, null).getContent();
assertEquals(0, guarantees.size());
}
use of eu.bcvsolutions.idm.core.api.dto.IdmContractSliceDto in project CzechIdMng by bcvsolutions.
the class ContractSliceManagerTest method contractValidityProtectionModeEnabledNegativeGapTest.
@Test
public void contractValidityProtectionModeEnabledNegativeGapTest() {
// Enable protection mode (4 days, gap is -10 days)
configurationService.setValue(ContractSliceConfiguration.PROPERTY_PROTECTION_INTERVAL, "4");
IdmIdentityDto identity = helper.createIdentity();
IdmContractSliceDto sliceOne = helper.createContractSlice(identity, "11", null, LocalDate.now().minusDays(100), LocalDate.now().minusDays(100), LocalDate.now().plusDays(5));
IdmContractSliceDto sliceTwo = helper.createContractSlice(identity, "11", null, LocalDate.now().plusDays(10), LocalDate.now().minusDays(100).minusDays(10), LocalDate.now().plusDays(5));
assertNotNull(sliceOne.getParentContract());
assertNotNull(sliceTwo.getParentContract());
assertEquals(sliceOne.getParentContract(), sliceTwo.getParentContract());
assertTrue(sliceOne.isUsingAsContract());
assertFalse(sliceTwo.isUsingAsContract());
IdmIdentityContractDto contract = contractService.get(sliceOne.getParentContract());
// Protection mode is enabled, but gap was too small
assertEquals(sliceOne.getContractValidFrom(), contract.getValidFrom());
assertEquals(sliceOne.getContractValidTill(), contract.getValidTill());
}
Aggregations