public void testFlushToParent_Commit() {
DataContext context = createDataContext();
// commit new object
Artist a = context.newObject(Artist.class);
a.setArtistName("Test");
assertTrue(context.hasChanges());
GraphDiff diff = context.flushToParent(true);
assertNotNull(diff);
assertFalse(context.hasChanges());
final Object[] newIds = new Object[1];
MockGraphChangeHandler diffChecker = new MockGraphChangeHandler() {
@Override
public void nodeIdChanged(Object nodeId, Object newId) {
super.nodeIdChanged(nodeId, newId);
newIds[0] = newId;
}
};
diff.apply(diffChecker);
assertEquals(1, diffChecker.getCallbackCount());
assertSame(a.getObjectId(), newIds[0]);
// commit a mix of new and modified
Painting p = context.newObject(Painting.class);
p.setPaintingTitle("PT");
p.setToArtist(a);
a.setArtistName(a.getArtistName() + "_");
GraphDiff diff2 = context.flushToParent(true);
assertNotNull(diff2);
assertFalse(context.hasChanges());