use of org.qi4j.dci.moneytransfer.domain.data.BalanceData in project qi4j-sdk by Qi4j.
the class TransferMoneyTest method transferHalfOfMoneyFromSavingsToChecking.
@Test
public void transferHalfOfMoneyFromSavingsToChecking() throws Exception {
UnitOfWork uow = assembler.module().newUnitOfWork(UsecaseBuilder.newUsecase("Transfer from savings to checking"));
try {
// Select source and destination
BalanceData source = uow.get(BalanceData.class, SAVINGS_ACCOUNT_ID);
BalanceData destination = uow.get(BalanceData.class, CHECKING_ACCOUNT_ID);
// Instantiate context and execute enactments with that context
TransferMoneyContext context = new TransferMoneyContext();
context.bind(source, destination);
// Query for half the balance
final Integer amountToTransfer = context.availableFunds() / 2;
// Transfer from savings to checking
context.transfer(amountToTransfer);
} finally {
uow.discard();
}
}
use of org.qi4j.dci.moneytransfer.domain.data.BalanceData in project qi4j-sdk by Qi4j.
the class TransferMoneyTest method transferTwiceOfMoneyFromSavingsToChecking.
@Test(expected = IllegalArgumentException.class)
public void transferTwiceOfMoneyFromSavingsToChecking() throws Exception {
UnitOfWork uow = assembler.module().newUnitOfWork(UsecaseBuilder.newUsecase("Transfer from savings to checking"));
try {
// Select source and destination
BalanceData source = uow.get(BalanceData.class, SAVINGS_ACCOUNT_ID);
BalanceData destination = uow.get(BalanceData.class, CHECKING_ACCOUNT_ID);
// Instantiate context and execute enactments with that context
TransferMoneyContext context = new TransferMoneyContext();
context.bind(source, destination);
// Query for double the balance
final Integer amountToTransfer = context.availableFunds() * 2;
// Transfer from savings to checking
context.transfer(amountToTransfer);
} finally {
uow.discard();
}
}
use of org.qi4j.dci.moneytransfer.domain.data.BalanceData in project qi4j-sdk by Qi4j.
the class TransferMoneyTest2 method payAllBills.
@Test
public void payAllBills() throws Exception {
UnitOfWork uow = module.newUnitOfWork(newUsecase("Pay all bills from checking to creditors"));
try {
BalanceData source = uow.get(BalanceData.class, CHECKING_ACCOUNT_ID);
PayBillsContext2 context = module.newObject(PayBillsContext2.class);
context.bind(source).payBills();
} finally {
uow.discard();
}
}
use of org.qi4j.dci.moneytransfer.domain.data.BalanceData in project qi4j-sdk by Qi4j.
the class TransferMoneyTest method bootstrapData.
private static void bootstrapData(SingletonAssembler assembler) throws Exception {
UnitOfWork uow = assembler.module().newUnitOfWork(newUsecase("Bootstrap data"));
try {
SavingsAccountEntity savingsAccount = uow.newEntity(SavingsAccountEntity.class, SAVINGS_ACCOUNT_ID);
savingsAccount.increasedBalance(1000);
CheckingAccountEntity checkingAccount = uow.newEntity(CheckingAccountEntity.class, CHECKING_ACCOUNT_ID);
checkingAccount.increasedBalance(200);
// Create some creditor debt
BalanceData bakerAccount = uow.newEntity(CreditorRolemap.class, CREDITOR_ID1);
bakerAccount.decreasedBalance(50);
BalanceData butcherAccount = uow.newEntity(CreditorRolemap.class, CREDITOR_ID2);
butcherAccount.decreasedBalance(90);
// Save
uow.complete();
} finally {
uow.discard();
}
}
use of org.qi4j.dci.moneytransfer.domain.data.BalanceData in project qi4j-sdk by Qi4j.
the class TransferMoneyTest method payAllBills.
@Test
public void payAllBills() throws Exception {
UnitOfWork uow = assembler.module().newUnitOfWork(newUsecase("Pay all bills from checking to creditors"));
try {
BalanceData source = uow.get(BalanceData.class, CHECKING_ACCOUNT_ID);
PayBillsContext context = new PayBillsContext();
context.bind(source).payBills();
} finally {
uow.discard();
}
}
Aggregations