use of org.estatio.module.party.dom.role.PartyRoleType in project estatio by estatio.
the class PersonRepository method findByRoleType.
@Programmatic
public List<Person> findByRoleType(final IPartyRoleType iPartyRoleType) {
PartyRoleType partyRoleType = iPartyRoleType.findOrCreateUsing(partyRoleTypeRepository);
final List<Party> parties = partyRepository.findByRoleType(partyRoleType);
return personsFor(parties);
}
use of org.estatio.module.party.dom.role.PartyRoleType in project estatio by estatio.
the class IncomingInvoiceApprovalState_IntegTest method paid_by_credit_card_skips_bank_account_verification_and_creates_check_task_for_treasury.
@Test
public void paid_by_credit_card_skips_bank_account_verification_and_creates_check_task_for_treasury() {
// given
PartyRoleType typeForTreasurer = partyRoleTypeRepository.findByKey(PartyRoleTypeEnum.TREASURER.getKey());
// workaround: clear MeService#me cache
queryResultsCache.resetForNextTransaction();
sudoService.sudo(Person_enum.JonathanPropertyManagerGb.getRef().toLowerCase(), (Runnable) () -> wrap(incomingInvoice).changePaymentMethod(PaymentMethod.CREDIT_CARD));
sudoService.sudo(Person_enum.JonathanPropertyManagerGb.getRef().toLowerCase(), (Runnable) () -> wrap(mixin(IncomingInvoice_complete.class, incomingInvoice)).act("PROPERTY_MANAGER", null, null));
// workaround: clear MeService#me cache
queryResultsCache.resetForNextTransaction();
sudoService.sudo(Person_enum.PeterPanProjectManagerGb.getRef().toLowerCase(), (Runnable) () -> wrap(mixin(IncomingInvoice_approve.class, incomingInvoice)).act("COUNTRY_DIRECTOR", null, null, false));
List<Task> tasksForTreasury = taskRepository.findIncompleteByRole(typeForTreasurer);
assertThat(tasksForTreasury).isEmpty();
BankAccount bankAccount = incomingInvoice.getBankAccount();
assertThat(bankAccount).isNotNull();
BankAccountVerificationState state = stateTransitionService.currentStateOf(bankAccount, BankAccountVerificationStateTransition.class);
assertThat(state).isEqualTo(BankAccountVerificationState.NOT_VERIFIED);
// when
// workaround: clear MeService#me cache
queryResultsCache.resetForNextTransaction();
sudoService.sudo(Person_enum.OscarCountryDirectorGb.getRef().toLowerCase(), (Runnable) () -> wrap(mixin(IncomingInvoice_approveAsCountryDirector.class, incomingInvoice)).act(null, false));
// then
assertThat(incomingInvoice.getApprovalState()).isEqualTo(IncomingInvoiceApprovalState.PAYABLE);
List<IncomingInvoiceApprovalStateTransition> transitions = incomingInvoiceStateTransitionRepository.findByDomainObject(incomingInvoice);
assertThat(transitions.size()).isEqualTo(7);
assertThat(transitions.get(0).getTransitionType()).isEqualTo(IncomingInvoiceApprovalStateTransitionType.CHECK_PAYMENT);
tasksForTreasury = taskRepository.findIncompleteByRole(typeForTreasurer);
assertThat(tasksForTreasury.size()).isEqualTo(1);
assertThat(tasksForTreasury.get(0).getDescription()).isEqualTo("Check Payment");
// and still
state = stateTransitionService.currentStateOf(bankAccount, BankAccountVerificationStateTransition.class);
assertThat(state).isEqualTo(BankAccountVerificationState.NOT_VERIFIED);
// and when
// workaround: clear MeService#me cache
queryResultsCache.resetForNextTransaction();
sudoService.sudo(Person_enum.EmmaTreasurerGb.getRef().toLowerCase(), (Runnable) () -> wrap(mixin(IncomingInvoice_checkPayment.class, incomingInvoice)).act(null, false));
// then
assertThat(incomingInvoice.getApprovalState()).isEqualTo(IncomingInvoiceApprovalState.PAID);
}
use of org.estatio.module.party.dom.role.PartyRoleType in project estatio by estatio.
the class BankAccountVerificationState_IntegTest method reject_then_discard_then_update_proof_works_test.
@Test
public void reject_then_discard_then_update_proof_works_test() {
// given
Person personEmmaTreasurer = Person_enum.EmmaTreasurerGb.findUsing(serviceRegistry);
PartyRoleType typeForTreasurer = partyRoleTypeRepository.findByKey(PartyRoleTypeEnum.TREASURER.getKey());
PartyRoleType typeForPropertyManager = partyRoleTypeRepository.findByKey(FixedAssetRoleTypeEnum.PROPERTY_MANAGER.getKey());
assertThat(taskRepository.findIncompleteByRole(typeForPropertyManager).size()).isEqualTo(2);
// when
// workaround: clear MeService#me cache
queryResultsCache.resetForNextTransaction();
sudoService.sudo(personEmmaTreasurer.getUsername(), (Runnable) () -> wrap(mixin(BankAccount_rejectProof.class, bankAccount)).act("PROPERTY_MANAGER", null, "NO GOOD"));
// then
assertState(bankAccount, BankAccountVerificationState.AWAITING_PROOF);
assertThat(taskRepository.findIncompleteByRole(typeForTreasurer).size()).isEqualTo(0);
assertThat(taskRepository.findIncompleteByRole(typeForPropertyManager).size()).isEqualTo(3);
// and given
Person jonathanPropManager = Person_enum.JonathanPropertyManagerGb.findUsing(serviceRegistry);
// and when
// workaround: clear MeService#me cache
queryResultsCache.resetForNextTransaction();
sudoService.sudo(jonathanPropManager.getUsername(), (Runnable) () -> wrap(mixin(BankAccount_discard.class, bankAccount)).act("DISCARDING"));
// then
assertState(bankAccount, BankAccountVerificationState.DISCARDED);
assertThat(taskRepository.findIncompleteByRole(typeForTreasurer).size()).isEqualTo(0);
assertThat(taskRepository.findIncompleteByRole(typeForPropertyManager).size()).isEqualTo(2);
// and when 'resurrecting'
// workaround: clear MeService#me cache
queryResultsCache.resetForNextTransaction();
sudoService.sudo(jonathanPropManager.getUsername(), (Runnable) () -> wrap(mixin(BankAccount_proofUpdated.class, bankAccount)).act("TREASURER", null, null));
// then
assertState(bankAccount, BankAccountVerificationState.NOT_VERIFIED);
assertThat(taskRepository.findIncompleteByRole(typeForTreasurer).size()).isEqualTo(1);
assertThat(taskRepository.findIncompleteByRole(typeForPropertyManager).size()).isEqualTo(2);
// and when discarding again by treasurer
// workaround: clear MeService#me cache
queryResultsCache.resetForNextTransaction();
sudoService.sudo(personEmmaTreasurer.getUsername(), (Runnable) () -> wrap(mixin(BankAccount_discard.class, bankAccount)).act("DISCARDING"));
assertState(bankAccount, BankAccountVerificationState.DISCARDED);
assertThat(taskRepository.findIncompleteByRole(typeForTreasurer).size()).isEqualTo(0);
}
Aggregations