Search in sources :

Example 6 with DeleteRuleFlatB

use of org.apache.cayenne.testdo.relationships_delete_rules.DeleteRuleFlatB in project cayenne by apache.

the class DeleteRulesIT method testNoActionFlattened.

@Test
public void testNoActionFlattened() {
    // temporarily set delete rule to NOACTION...
    int oldRule = changeDeleteRule(DeleteRule.NO_ACTION);
    try {
        DeleteRuleFlatA a = context.newObject(DeleteRuleFlatA.class);
        DeleteRuleFlatB b = context.newObject(DeleteRuleFlatB.class);
        a.addToFlatB(b);
        context.commitChanges();
        // must go on without exceptions...
        context.deleteObjects(a);
        // assert that join is deleted
        assertJoinDeleted(a, b);
        assertEquals(PersistenceState.DELETED, a.getPersistenceState());
        assertEquals(PersistenceState.COMMITTED, b.getPersistenceState());
        assertTrue(b.getUntitledRel().contains(a));
        context.commitChanges();
    } finally {
        changeDeleteRule(oldRule);
    }
}
Also used : DeleteRuleFlatA(org.apache.cayenne.testdo.relationships_delete_rules.DeleteRuleFlatA) DeleteRuleFlatB(org.apache.cayenne.testdo.relationships_delete_rules.DeleteRuleFlatB) Test(org.junit.Test)

Example 7 with DeleteRuleFlatB

use of org.apache.cayenne.testdo.relationships_delete_rules.DeleteRuleFlatB in project cayenne by apache.

the class DeleteRulesIT method testCascadeFlattenedNoReverse.

@Test
public void testCascadeFlattenedNoReverse() {
    // temporarily set delete rule to CASCADE...
    int oldRule = changeDeleteRule(DeleteRule.CASCADE);
    ObjRelationship reverse = unsetReverse();
    try {
        DeleteRuleFlatA a = context.newObject(DeleteRuleFlatA.class);
        DeleteRuleFlatB b = context.newObject(DeleteRuleFlatB.class);
        a.addToFlatB(b);
        context.commitChanges();
        // must go on without exceptions...
        context.deleteObjects(a);
        // assert that join is deleted
        assertJoinDeleted(a, b);
        context.commitChanges();
        assertEquals(PersistenceState.TRANSIENT, a.getPersistenceState());
        assertEquals(PersistenceState.TRANSIENT, b.getPersistenceState());
    } finally {
        changeDeleteRule(oldRule);
        restoreReverse(reverse);
    }
}
Also used : ObjRelationship(org.apache.cayenne.map.ObjRelationship) DeleteRuleFlatA(org.apache.cayenne.testdo.relationships_delete_rules.DeleteRuleFlatA) DeleteRuleFlatB(org.apache.cayenne.testdo.relationships_delete_rules.DeleteRuleFlatB) Test(org.junit.Test)

Example 8 with DeleteRuleFlatB

use of org.apache.cayenne.testdo.relationships_delete_rules.DeleteRuleFlatB in project cayenne by apache.

the class DeleteRulesIT method testDenyFlattened.

@Test
public void testDenyFlattened() {
    // temporarily set delete rule to DENY...
    int oldRule = changeDeleteRule(DeleteRule.DENY);
    try {
        DeleteRuleFlatA a = context.newObject(DeleteRuleFlatA.class);
        DeleteRuleFlatB b = context.newObject(DeleteRuleFlatB.class);
        a.addToFlatB(b);
        context.commitChanges();
        try {
            context.deleteObjects(a);
            fail("Must have thrown a deny exception..");
        } catch (DeleteDenyException ex) {
            // expected... but check further
            assertJoinNotDeleted(a, b);
        }
    } finally {
        changeDeleteRule(oldRule);
    }
}
Also used : DeleteDenyException(org.apache.cayenne.DeleteDenyException) DeleteRuleFlatA(org.apache.cayenne.testdo.relationships_delete_rules.DeleteRuleFlatA) DeleteRuleFlatB(org.apache.cayenne.testdo.relationships_delete_rules.DeleteRuleFlatB) Test(org.junit.Test)

Aggregations

DeleteRuleFlatA (org.apache.cayenne.testdo.relationships_delete_rules.DeleteRuleFlatA)8 DeleteRuleFlatB (org.apache.cayenne.testdo.relationships_delete_rules.DeleteRuleFlatB)8 Test (org.junit.Test)8 ObjRelationship (org.apache.cayenne.map.ObjRelationship)4 DeleteDenyException (org.apache.cayenne.DeleteDenyException)2