database: test and fix layer updates
This commit is contained in:
parent
726bd3c0c6
commit
5759af5bcf
@ -116,23 +116,10 @@ func TestInsertLayer(t *testing.T) {
|
|||||||
testInsertLayerTree(t, datastore)
|
testInsertLayerTree(t, datastore)
|
||||||
|
|
||||||
// Update layer.
|
// Update layer.
|
||||||
// TODO(Quentin-M)
|
testInsertLayerUpdate(t, datastore)
|
||||||
|
|
||||||
// Delete layer.
|
// Delete layer.
|
||||||
err = datastore.DeleteLayer("TestInsertLayerX")
|
testInsertLayerDelete(t, datastore)
|
||||||
assert.Equal(t, cerrors.ErrNotFound, err)
|
|
||||||
|
|
||||||
err = datastore.DeleteLayer("TestInsertLayer3")
|
|
||||||
assert.Nil(t, err)
|
|
||||||
|
|
||||||
_, err = datastore.FindLayer("TestInsertLayer3", false, false)
|
|
||||||
assert.Equal(t, cerrors.ErrNotFound, err)
|
|
||||||
|
|
||||||
_, err = datastore.FindLayer("TestInsertLayer4a", false, false)
|
|
||||||
assert.Equal(t, cerrors.ErrNotFound, err)
|
|
||||||
|
|
||||||
_, err = datastore.FindLayer("TestInsertLayer4b", true, false)
|
|
||||||
assert.Equal(t, cerrors.ErrNotFound, err)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func testInsertLayerInvalid(t *testing.T, datastore database.Datastore) {
|
func testInsertLayerInvalid(t *testing.T, datastore database.Datastore) {
|
||||||
@ -272,6 +259,90 @@ func testInsertLayerTree(t *testing.T, datastore database.Datastore) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func testInsertLayerUpdate(t *testing.T, datastore database.Datastore) {
|
||||||
|
f7 := database.FeatureVersion{
|
||||||
|
Feature: database.Feature{
|
||||||
|
Namespace: database.Namespace{Name: "TestInsertLayerNamespace3"},
|
||||||
|
Name: "TestInsertLayerFeature7",
|
||||||
|
},
|
||||||
|
Version: types.NewVersionUnsafe("0.01"),
|
||||||
|
}
|
||||||
|
|
||||||
|
l3, _ := datastore.FindLayer("TestInsertLayer3", true, false)
|
||||||
|
l3u := database.Layer{
|
||||||
|
Name: l3.Name,
|
||||||
|
Parent: l3.Parent,
|
||||||
|
Namespace: &database.Namespace{Name: "TestInsertLayerNamespaceUpdated1"},
|
||||||
|
Features: []database.FeatureVersion{f7},
|
||||||
|
}
|
||||||
|
|
||||||
|
l4u := database.Layer{
|
||||||
|
Name: "TestInsertLayer4",
|
||||||
|
Parent: &database.Layer{Name: "TestInsertLayer3"},
|
||||||
|
Features: []database.FeatureVersion{f7},
|
||||||
|
EngineVersion: 2,
|
||||||
|
}
|
||||||
|
|
||||||
|
// Try to re-insert without increasing the EngineVersion.
|
||||||
|
err := datastore.InsertLayer(l3u)
|
||||||
|
assert.Nil(t, err)
|
||||||
|
|
||||||
|
l3uf, err := datastore.FindLayer(l3u.Name, true, false)
|
||||||
|
if assert.Nil(t, err) {
|
||||||
|
assert.Equal(t, l3.Namespace.Name, l3uf.Namespace.Name)
|
||||||
|
assert.Equal(t, l3.EngineVersion, l3uf.EngineVersion)
|
||||||
|
assert.Len(t, l3uf.Features, len(l3.Features))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update layer l3.
|
||||||
|
// Verify that the Namespace, EngineVersion and FeatureVersions got updated.
|
||||||
|
l3u.EngineVersion = 2
|
||||||
|
err = datastore.InsertLayer(l3u)
|
||||||
|
assert.Nil(t, err)
|
||||||
|
|
||||||
|
l3uf, err = datastore.FindLayer(l3u.Name, true, false)
|
||||||
|
if assert.Nil(t, err) {
|
||||||
|
assert.Equal(t, l3u.Namespace.Name, l3uf.Namespace.Name)
|
||||||
|
assert.Equal(t, l3u.EngineVersion, l3uf.EngineVersion)
|
||||||
|
if assert.Len(t, l3uf.Features, 1) {
|
||||||
|
assert.True(t, cmpFV(l3uf.Features[0], f7), "Updated layer should have %#v but actually have %#v", f7, l3uf.Features[0])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update layer l4.
|
||||||
|
// Verify that the Namespace got updated from its new Parent's, and also verify the
|
||||||
|
// EnginVersion and FeatureVersions.
|
||||||
|
l4u.Parent = &l3uf
|
||||||
|
err = datastore.InsertLayer(l4u)
|
||||||
|
assert.Nil(t, err)
|
||||||
|
|
||||||
|
l4uf, err := datastore.FindLayer(l3u.Name, true, false)
|
||||||
|
if assert.Nil(t, err) {
|
||||||
|
assert.Equal(t, l3u.Namespace.Name, l4uf.Namespace.Name)
|
||||||
|
assert.Equal(t, l4u.EngineVersion, l4uf.EngineVersion)
|
||||||
|
if assert.Len(t, l4uf.Features, 1) {
|
||||||
|
assert.True(t, cmpFV(l3uf.Features[0], f7), "Updated layer should have %#v but actually have %#v", f7, l4uf.Features[0])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func testInsertLayerDelete(t *testing.T, datastore database.Datastore) {
|
||||||
|
err := datastore.DeleteLayer("TestInsertLayerX")
|
||||||
|
assert.Equal(t, cerrors.ErrNotFound, err)
|
||||||
|
|
||||||
|
err = datastore.DeleteLayer("TestInsertLayer3")
|
||||||
|
assert.Nil(t, err)
|
||||||
|
|
||||||
|
_, err = datastore.FindLayer("TestInsertLayer3", false, false)
|
||||||
|
assert.Equal(t, cerrors.ErrNotFound, err)
|
||||||
|
|
||||||
|
_, err = datastore.FindLayer("TestInsertLayer4a", false, false)
|
||||||
|
assert.Equal(t, cerrors.ErrNotFound, err)
|
||||||
|
|
||||||
|
_, err = datastore.FindLayer("TestInsertLayer4b", true, false)
|
||||||
|
assert.Equal(t, cerrors.ErrNotFound, err)
|
||||||
|
}
|
||||||
|
|
||||||
func cmpFV(a, b database.FeatureVersion) bool {
|
func cmpFV(a, b database.FeatureVersion) bool {
|
||||||
return a.Feature.Name == b.Feature.Name &&
|
return a.Feature.Name == b.Feature.Name &&
|
||||||
a.Feature.Namespace.Name == b.Feature.Namespace.Name &&
|
a.Feature.Namespace.Name == b.Feature.Namespace.Name &&
|
||||||
|
@ -115,7 +115,7 @@ func init() {
|
|||||||
INSERT INTO Layer(name, engineversion, parent_id, namespace_id)
|
INSERT INTO Layer(name, engineversion, parent_id, namespace_id)
|
||||||
VALUES($1, $2, $3, $4) RETURNING id`
|
VALUES($1, $2, $3, $4) RETURNING id`
|
||||||
|
|
||||||
queries["u_layer"] = `UPDATE LAYER SET engineversion = $2, namespace_id = $3) WHERE id = $1`
|
queries["u_layer"] = `UPDATE LAYER SET engineversion = $2, namespace_id = $3 WHERE id = $1`
|
||||||
|
|
||||||
queries["r_layer_diff_featureversion"] = `
|
queries["r_layer_diff_featureversion"] = `
|
||||||
DELETE FROM Layer_diff_FeatureVersion
|
DELETE FROM Layer_diff_FeatureVersion
|
||||||
|
Loading…
Reference in New Issue
Block a user