code: func Transaction(t *testing.T, repo grimoire.Repo) {
  	tests := []struct {
  		name  string
  		block func(*testing.T) func(grimoire.Repo) error
  		err   error
  	}{
  		{"QueryAll", queryAll, nil},
  		{"InsertWithAssoc", insertWithAssoc, nil},
  		{"InsertWithAssocError", insertWithAssocError, errors.New("let's rollback", "", errors.NotFound)},
  		{"InsertWithAssocPanic", insertWithAssocPanic, errors.New("let's rollback", "", errors.NotFound)},
  		{"ReplaceAssoc", replaceAssoc, nil},
  		{"NestedInsertWithAssoc", nestedInsertWithAssoc, nil},
  		{"NestedInsertWithAssocError", nestedInsertWithAssocError, errors.New("let's rollback", "", errors.NotFound)},
  		{"NestedInsertWithAssocPanic", nestedInsertWithAssocPanic, errors.New("let's rollback", "", errors.NotFound)},
  		{"NestedReplaceAssoc", nestedReplaceAssoc, nil},
  	}
  
  	for _, tt := range tests {
  		t.Run("Transaction|"+tt.name, func(t *testing.T) {
  			assert.Equal(t, tt.err, repo.Transaction(tt.block(t)))
  		})
  	}
  }
docs: // Transaction tests insert specifications.