in component-test/src/main/java/org/apache/fineract/cn/accounting/TestJournalEntry.java [47:89]
public void shouldCreateJournalEntry() throws Exception {
final Ledger assetLedger = LedgerGenerator.createRandomLedger();
assetLedger.setType(AccountType.ASSET.name());
this.testSubject.createLedger(assetLedger);
this.eventRecorder.wait(EventConstants.POST_LEDGER, assetLedger.getIdentifier());
final Account debtorAccount = AccountGenerator.createRandomAccount(assetLedger.getIdentifier());
debtorAccount.setType(AccountType.ASSET.name());
debtorAccount.setBalance(100.00D);
this.testSubject.createAccount(debtorAccount);
this.eventRecorder.wait(EventConstants.POST_ACCOUNT, debtorAccount.getIdentifier());
final Ledger liabilityLedger = LedgerGenerator.createRandomLedger();
liabilityLedger.setType(AccountType.LIABILITY.name());
this.testSubject.createLedger(liabilityLedger);
this.eventRecorder.wait(EventConstants.POST_LEDGER, liabilityLedger.getIdentifier());
final Account creditorAccount = AccountGenerator.createRandomAccount(liabilityLedger.getIdentifier());
creditorAccount.setType(AccountType.LIABILITY.name());
creditorAccount.setBalance(100.00D);
this.testSubject.createAccount(creditorAccount);
this.eventRecorder.wait(EventConstants.POST_ACCOUNT, creditorAccount.getIdentifier());
final JournalEntry journalEntry = JournalEntryGenerator.createRandomJournalEntry(debtorAccount, "50.00",
creditorAccount, "50.00");
this.testSubject.createJournalEntry(journalEntry);
this.eventRecorder.wait(EventConstants.POST_JOURNAL_ENTRY, journalEntry.getTransactionIdentifier());
this.eventRecorder.wait(EventConstants.RELEASE_JOURNAL_ENTRY, journalEntry.getTransactionIdentifier());
final JournalEntry foundJournalEntry = this.testSubject.findJournalEntry(journalEntry.getTransactionIdentifier());
Assert.assertNotNull(foundJournalEntry);
Assert.assertEquals(JournalEntry.State.PROCESSED.name(), foundJournalEntry.getState());
Assert.assertEquals(journalEntry.getTransactionType(), foundJournalEntry.getTransactionType());
final Account modifiedDebtorAccount = this.testSubject.findAccount(debtorAccount.getIdentifier());
Assert.assertNotNull(modifiedDebtorAccount);
Assert.assertEquals(150.0D, modifiedDebtorAccount.getBalance(), 0.0D);
final Account modifiedCreditorAccount = this.testSubject.findAccount(creditorAccount.getIdentifier());
Assert.assertNotNull(modifiedCreditorAccount);
Assert.assertEquals(150.0d, modifiedCreditorAccount.getBalance(), 0.0D);
}