package org.castor.cpa.test.test2858;
import java.util.Date;
import junit.framework.Test;
import junit.framework.TestSuite;
import org.castor.cpa.test.framework.CPATestCase;
import org.castor.cpa.test.framework.xml.types.DatabaseEngineType;
import org.exolab.castor.jdo.Database;
public final class TestDeleteWithThreeLevelExtends extends CPATestCase {
private static final String DBNAME = "test2858";
private static final String MAPPING = "/org/castor/cpa/test/test2858/mapping.xml";
public static Test suite() throws Exception {
TestSuite suite = new TestSuite(TestDeleteWithThreeLevelExtends.class.getName());
suite.addTest(new TestDeleteWithThreeLevelExtends("createObjects"));
suite.addTest(new TestDeleteWithThreeLevelExtends("testDeleteMoney"));
return suite;
}
public TestDeleteWithThreeLevelExtends(final String name) {
super(name);
}
// Test are only included/excluded for engines that have been tested with this test suite.
public boolean include(final DatabaseEngineType engine) {
// return false;
return (engine == DatabaseEngineType.DERBY)
|| (engine == DatabaseEngineType.MYSQL)
|| (engine == DatabaseEngineType.POSTGRESQL)
|| (engine == DatabaseEngineType.SAPDB);
}
public void createObjects() throws Exception {
//InvoiceParcel
InvoiceParcel invoiceParcel = new InvoiceParcel();
invoiceParcel.setOid("AAAAIP01");
invoiceParcel.setValue(new Double(100));
invoiceParcel.setParcelNumber(new Integer(1));
//TradeNote
TradeNote tradeNote = new TradeNote();
tradeNote.setOid("AAAATN01");
tradeNote.setDate(new Date());
tradeNote.setValue(new Double(100));
tradeNote.setNoteNumber(new Integer(1));
tradeNote.setBillCollectionType("DUPL");
//Money that pay TradeNote
Money money = new Money();
money.setOid("AAAAMN01");
money.setDate(tradeNote.getDate());
money.setBankNoteValue(new Double(50));
money.setQuantity(new Integer(2));
money.calculate();
money.setPaymentType("MONEY_US");
//Create the Payment relation between TradeNote and Money
Payment payment = new Payment();
payment.setOid("AAAAPM01");
tradeNote.addPayment(payment);
money.addTitlePaid(payment);
//Create the Relation that started the TradeNote
FinanceTitleRelation financeTitleRelation = new FinanceTitleRelation();
financeTitleRelation.setOid("AAAAFR01");
financeTitleRelation.setMyFinanceTitle(tradeNote);
invoiceParcel.addFinanceTitleRelation(financeTitleRelation);
Database db = getJDOManager(DBNAME, MAPPING).getDatabase();
db.begin();
db.create(invoiceParcel);
db.create(tradeNote);
db.create(money);
db.create(payment);
db.create(financeTitleRelation);
db.commit();
db.close();
}
public void testDeleteMoney() throws Exception {
Database db = getJDOManager(DBNAME, MAPPING).getDatabase();
db.begin();
InvoiceParcel invoiceParcel = db.load(InvoiceParcel.class, "AAAAIP01");
FinanceTitleRelation relation = invoiceParcel.getMyFinanceTitleRelation().elementAt(0);
TradeNote tradeNote = (TradeNote) relation.getMyFinanceTitle();
Payment payment = tradeNote.getMyPayments().firstElement();
Money money = (Money) payment.getMyFinanceTitle();
tradeNote.getMyPayments().clear();
money.getMyTitlesPaid().clear();
db.remove(invoiceParcel);
db.remove(tradeNote);
db.remove(relation);
db.remove(payment);
db.remove(money);
db.commit();
db.close();
}
}