From e8a446562db9bf782bf6f01dc68826aeb1802673 Mon Sep 17 00:00:00 2001 From: "Brian S. O'Neill" Date: Sun, 16 Sep 2007 19:02:43 +0000 Subject: Ensure that non-destructive update doesn't invoke load trigger. --- .../java/com/amazon/carbonado/TestStorables.java | 44 ++++++++++++++++++++++ 1 file changed, 44 insertions(+) (limited to 'src') diff --git a/src/test/java/com/amazon/carbonado/TestStorables.java b/src/test/java/com/amazon/carbonado/TestStorables.java index de0bba4..8883481 100644 --- a/src/test/java/com/amazon/carbonado/TestStorables.java +++ b/src/test/java/com/amazon/carbonado/TestStorables.java @@ -2141,6 +2141,50 @@ public class TestStorables extends TestCase { assertTrue(s2 == lt.mStorable); } + public void test_triggerUpdateNoLoad() throws Exception { + // Verify that calling update does not call load trigger. This test is + // needed because master storable generator does an intermediate load + // in order to support "update full" mode. + + Storage storage = getRepository().storageFor(StorableVersioned.class); + + class TheTrigger extends Trigger { + int mUpdateCount; + int mLoadCount; + + @Override + public Object beforeUpdate(StorableVersioned s) { + mUpdateCount++; + return null; + } + + @Override + public void afterLoad(StorableVersioned s) { + mLoadCount++; + } + }; + + TheTrigger the = new TheTrigger(); + + assertTrue(storage.addTrigger(the)); + + StorableVersioned s = storage.prepare(); + s.setID(1); + s.setValue("value"); + s.insert(); + + s.setValue("foo"); + s.update(); + + assertEquals(1, the.mUpdateCount); + assertEquals(0, the.mLoadCount); + + s.load(); + + assertEquals(1, the.mUpdateCount); + assertEquals(1, the.mLoadCount); + } + public void test_hashCode() throws Exception { Storage storage = getRepository().storageFor(StorableTestBasic.class); -- cgit v1.2.3