syncbase: s/delete/destroy/ followups

MultiPart: 1/2
Change-Id: I8b20e5d4c726e84354cfdfa629860bfe7a797522
diff --git a/services/syncbase/testutil/layer.go b/services/syncbase/testutil/layer.go
index acf9dbd..fc568b9 100644
--- a/services/syncbase/testutil/layer.go
+++ b/services/syncbase/testutil/layer.go
@@ -90,8 +90,8 @@
 	assertExists(t, ctx, self3, "self3", false)
 }
 
-// TestDelete tests that object deletion works as expected.
-func TestDelete(t *testing.T, ctx *context.T, i interface{}) {
+// TestDestroy tests that object destruction works as expected.
+func TestDestroy(t *testing.T, ctx *context.T, i interface{}) {
 	parent := makeLayer(i)
 	self := parent.Child("self")
 	child := self.Child("child")
@@ -128,7 +128,7 @@
 	// with an error instead of returning false.
 	//assertExists(t, ctx, child, "child", false)
 
-	// self.Create should succeed, since self was deleted.
+	// self.Create should succeed, since self was destroyed.
 	if err := self.Create(ctx, nil); err != nil {
 		t.Fatalf("self.Create() failed: %v", err)
 	}
@@ -136,7 +136,7 @@
 	assertExists(t, ctx, self, "self", true)
 	assertExists(t, ctx, child, "child", false)
 
-	// Test that delete fails if the perms disallow access.
+	// Test that destroy fails if the perms disallow access.
 	self2 := parent.Child("self2")
 	if err := self2.Create(ctx, nil); err != nil {
 		t.Fatalf("self2.Create() failed: %v", err)
@@ -152,7 +152,7 @@
 
 	assertExists(t, ctx, self2, "self2", true)
 
-	// Test that delete succeeds even if the parent perms disallow access.
+	// Test that destroy succeeds even if the parent perms disallow access.
 	perms = DefaultPerms("root/client")
 	perms.Blacklist("root/client", string(access.Write))
 	if err := parent.SetPermissions(ctx, perms, ""); err != nil {
@@ -164,7 +164,7 @@
 
 	assertExists(t, ctx, self, "self", false)
 
-	// Test that delete is idempotent.
+	// Test that destroy is idempotent.
 	if err := self.Destroy(ctx); err != nil {
 		t.Fatalf("self.Destroy() failed: %v", err)
 	}
@@ -359,17 +359,13 @@
 	return d.ListTables(ctx)
 }
 func (d *database) Child(childName string) layer {
-	return &table{Table: d.Table(childName), d: d}
+	return makeLayer(d.Table(childName))
 }
 
 type table struct {
 	nosql.Table
-	d nosql.Database
 }
 
-func (t *table) Create(ctx *context.T, perms access.Permissions) error {
-	return t.Table.Create(ctx, perms)
-}
 func (t *table) SetPermissions(ctx *context.T, perms access.Permissions, version string) error {
 	return t.Table.SetPermissions(ctx, nosql.Prefix(""), perms)
 }
@@ -421,6 +417,8 @@
 		return &app{t}
 	case nosql.Database:
 		return &database{t}
+	case nosql.Table:
+		return &table{t}
 	default:
 		vlog.Fatalf("unexpected type: %T", t)
 	}
diff --git a/services/syncbase/testutil/util.go b/services/syncbase/testutil/util.go
index 3d9aa31..5e72e2e 100644
--- a/services/syncbase/testutil/util.go
+++ b/services/syncbase/testutil/util.go
@@ -55,10 +55,11 @@
 }
 
 func CreateTable(t *testing.T, ctx *context.T, d nosql.Database, name string) nosql.Table {
-	if err := d.Table(name).Create(ctx, nil); err != nil {
-		Fatalf(t, "d.Table(name).Create() failed: %v", err)
+	tb := d.Table(name)
+	if err := tb.Create(ctx, nil); err != nil {
+		Fatalf(t, "tb.Create() failed: %v", err)
 	}
-	return d.Table(name)
+	return tb
 }
 
 // TODO(sadovsky): Drop the 'perms' argument. The only client that passes