diff --git a/syncbase/src/test/java/io/v/syncbase/core/CollectionTest.java b/syncbase/src/test/java/io/v/syncbase/core/CollectionTest.java
index bebd252..f4c186a 100644
--- a/syncbase/src/test/java/io/v/syncbase/core/CollectionTest.java
+++ b/syncbase/src/test/java/io/v/syncbase/core/CollectionTest.java
@@ -90,8 +90,13 @@
             BatchDatabase batchDb = db.beginBatch(null);
             Collection collection1 = batchDb.collection(collectionId1);
             collection1.create(anyCollectionPermissions());
+
             // We have not committed the batch yet so exists() should fail.
-            assertFalse(collection1.exists());
+            assertFalse(db.collection(collectionId1).exists());
+
+            // But from the point of view of the batch, collection1 does exist.
+            assertTrue(collection1.exists());
+
             batchDb.commit();
             assertTrue(db.collection(collectionId1).exists());
             assertFalse(db.collection(collectionId2).exists());
diff --git a/syncbase/src/test/java/io/v/syncbase/core/SyncgroupTest.java b/syncbase/src/test/java/io/v/syncbase/core/SyncgroupTest.java
index 87a7e37..29390ec 100644
--- a/syncbase/src/test/java/io/v/syncbase/core/SyncgroupTest.java
+++ b/syncbase/src/test/java/io/v/syncbase/core/SyncgroupTest.java
@@ -106,7 +106,7 @@
             db.create(anyDbPermissions());
             db.syncgroup(sgId).destroy();
         } catch (VError vError) {
-            assertEquals("v.io/v23/verror.NotImplemented", vError.id);
+            assertEquals("v.io/v23/verror.NoExist", vError.id);
             exceptionThrown = true;
         }
         assertTrue(exceptionThrown);
@@ -156,7 +156,7 @@
             db.create(anyDbPermissions());
             db.syncgroup(sgId).eject("");
         }  catch (VError vError) {
-            assertEquals("v.io/v23/verror.NotImplemented", vError.id);
+            assertEquals("v.io/v23/verror.NoExist", vError.id);
             exceptionThrown = true;
         }
         assertTrue(exceptionThrown);
diff --git a/syncbase/src/test/java/io/v/syncbase/internal/CollectionTest.java b/syncbase/src/test/java/io/v/syncbase/internal/CollectionTest.java
index fb257f3..373dd8b 100644
--- a/syncbase/src/test/java/io/v/syncbase/internal/CollectionTest.java
+++ b/syncbase/src/test/java/io/v/syncbase/internal/CollectionTest.java
@@ -101,10 +101,15 @@
         String collectionName2 = Util.NamingJoin(Arrays.asList(dbName, collectionId2.encode()));
         try {
             Database.Create(dbName, anyDbPermissions());
-            String batchHandle = Database.BeginBatch(dbId.encode(), null);
+            String batchHandle = Database.BeginBatch(dbName, null);
             Collection.Create(collectionName1, batchHandle, anyCollectionPermissions());
-            // We have not committed the batch yet so Exists should fail.
-            assertFalse(Collection.Exists(collectionName1, batchHandle));
+
+            // We have not committed the batch yet so exists() should fail.
+            assertFalse(Collection.Exists(collectionName1, Database.BeginBatch(dbName, null)));
+
+            // But from the point of view of the batch, collection1 does exist.
+            assertTrue(Collection.Exists(collectionName1, batchHandle));
+
             Database.Commit(dbName, batchHandle);
             batchHandle = Database.BeginBatch(dbName, null);
             assertTrue(Collection.Exists(collectionName1, batchHandle));
diff --git a/syncbase/src/test/java/io/v/syncbase/internal/DatabaseTest.java b/syncbase/src/test/java/io/v/syncbase/internal/DatabaseTest.java
index dfc5b63..38489cd 100644
--- a/syncbase/src/test/java/io/v/syncbase/internal/DatabaseTest.java
+++ b/syncbase/src/test/java/io/v/syncbase/internal/DatabaseTest.java
@@ -271,7 +271,7 @@
             Database.Create(dbName, anyDbPermissions());
             Database.DestroySyncgroup(dbName, sgId);
         } catch (VError vError) {
-            assertEquals("v.io/v23/verror.NotImplemented", vError.id);
+            assertEquals("v.io/v23/verror.NoExist", vError.id);
             exceptionThrown = true;
         }
         assertTrue(exceptionThrown);
@@ -322,7 +322,7 @@
             Database.Create(dbName, anyDbPermissions());
             Database.EjectFromSyncgroup(dbName, sgId, "");
         }  catch (VError vError) {
-            assertEquals("v.io/v23/verror.NotImplemented", vError.id);
+            assertEquals("v.io/v23/verror.NoExist", vError.id);
             exceptionThrown = true;
         }
         assertTrue(exceptionThrown);
