SEBA-767 Directory restructuring in accordance with best practices
Change-Id: Id651366a3545ad0141a7854e99fa46867e543295
diff --git a/internal/pkg/commands/orm_test.go b/internal/pkg/commands/orm_test.go
new file mode 100644
index 0000000..2d8db62
--- /dev/null
+++ b/internal/pkg/commands/orm_test.go
@@ -0,0 +1,243 @@
+/*
+ * Portions copyright 2019-present Open Networking Foundation
+ * Original copyright 2019-present Ciena Corporation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package commands
+
+import (
+ "context"
+ corderrors "github.com/opencord/cordctl/internal/pkg/error"
+ "github.com/stretchr/testify/assert"
+ "testing"
+)
+
+func TestDecodeOperator(t *testing.T) {
+ value, operator, invert, err := DecodeOperator("=something")
+ assert.Equal(t, value, "something")
+ assert.Equal(t, operator, "EQUAL")
+ assert.Equal(t, invert, false)
+ assert.Equal(t, err, nil)
+
+ value, operator, invert, err = DecodeOperator("!=something")
+ assert.Equal(t, value, "something")
+ assert.Equal(t, operator, "EQUAL")
+ assert.Equal(t, invert, true)
+ assert.Equal(t, err, nil)
+
+ value, operator, invert, err = DecodeOperator(">3")
+ assert.Equal(t, value, "3")
+ assert.Equal(t, operator, "GREATER_THAN")
+ assert.Equal(t, invert, false)
+ assert.Equal(t, err, nil)
+
+ value, operator, invert, err = DecodeOperator(">=3")
+ assert.Equal(t, value, "3")
+ assert.Equal(t, operator, "GREATER_THAN_OR_EQUAL")
+ assert.Equal(t, invert, false)
+ assert.Equal(t, err, nil)
+
+ value, operator, invert, err = DecodeOperator("<3")
+ assert.Equal(t, value, "3")
+ assert.Equal(t, operator, "LESS_THAN")
+ assert.Equal(t, invert, false)
+ assert.Equal(t, err, nil)
+
+ value, operator, invert, err = DecodeOperator("<=3")
+ assert.Equal(t, value, "3")
+ assert.Equal(t, operator, "LESS_THAN_OR_EQUAL")
+ assert.Equal(t, invert, false)
+ assert.Equal(t, err, nil)
+}
+
+func TestCommaSeparatedQueryToMap(t *testing.T) {
+ m, err := CommaSeparatedQueryToMap("foo=7,bar!=stuff, x = 5, y= 27", true)
+ assert.Equal(t, err, nil)
+ assert.Equal(t, m["foo"], "=7")
+ assert.Equal(t, m["bar"], "!=stuff")
+ assert.Equal(t, m["x"], "= 5")
+ assert.Equal(t, m["y"], "= 27")
+}
+
+func TestCommaSeparatedQueryToMapIllegal(t *testing.T) {
+ // Query string missing operator
+ _, err := CommaSeparatedQueryToMap("foo", true)
+
+ _, matched := err.(*corderrors.IllegalQueryError)
+ assert.True(t, matched)
+
+ // Query string is contains an empty element
+ _, err = CommaSeparatedQueryToMap(",foo=bar", true)
+
+ _, matched = err.(*corderrors.IllegalQueryError)
+ assert.True(t, matched)
+}
+
+func TestCommaSeparatedQueryToMapEmpty(t *testing.T) {
+ // Query string missing operator
+ m, err := CommaSeparatedQueryToMap("", true)
+
+ assert.Equal(t, err, nil)
+ assert.Equal(t, len(m), 0)
+}
+
+func TestTypeConvert(t *testing.T) {
+ conn, descriptor, err := InitClient(INIT_DEFAULT)
+ assert.Equal(t, err, nil)
+ defer conn.Close()
+
+ v, err := TypeConvert(descriptor, "Site", "id", "7")
+ assert.Equal(t, err, nil)
+ assert.Equal(t, v, int32(7))
+
+ v, err = TypeConvert(descriptor, "Site", "name", "foo")
+ assert.Equal(t, err, nil)
+ assert.Equal(t, v, "foo")
+
+ v, err = TypeConvert(descriptor, "Site", "enacted", "123.4")
+ assert.Equal(t, err, nil)
+ assert.Equal(t, v, 123.4)
+}
+
+func TestCheckModelName(t *testing.T) {
+ conn, descriptor, err := InitClient(INIT_DEFAULT)
+ assert.Equal(t, err, nil)
+ defer conn.Close()
+
+ err = CheckModelName(descriptor, "Slice")
+ assert.Equal(t, err, nil)
+
+ err = CheckModelName(descriptor, "DoesNotExist")
+ _, matched := err.(*corderrors.UnknownModelTypeError)
+ assert.True(t, matched)
+}
+
+func TestCreateModel(t *testing.T) {
+ conn, descriptor, err := InitClient(INIT_DEFAULT)
+ assert.Equal(t, err, nil)
+ defer conn.Close()
+
+ m := make(map[string]interface{})
+ m["name"] = "mockslice3"
+ m["site_id"] = int32(1)
+
+ err = CreateModel(conn, descriptor, "Slice", m)
+ assert.Equal(t, err, nil)
+
+ assert.Equal(t, m["id"], int32(3))
+}
+
+func TestUpdateModel(t *testing.T) {
+ conn, descriptor, err := InitClient(INIT_DEFAULT)
+ assert.Equal(t, err, nil)
+ defer conn.Close()
+
+ m := make(map[string]interface{})
+ m["id"] = int32(1)
+ m["name"] = "mockslice1_newname"
+
+ err = UpdateModel(conn, descriptor, "Slice", m)
+ assert.Equal(t, err, nil)
+}
+
+func TestGetModel(t *testing.T) {
+ conn, descriptor, err := InitClient(INIT_DEFAULT)
+ assert.Equal(t, err, nil)
+ defer conn.Close()
+
+ m, err := GetModel(context.Background(), conn, descriptor, "Slice", int32(1))
+ assert.Equal(t, err, nil)
+
+ assert.Equal(t, m.GetFieldByName("id").(int32), int32(1))
+ assert.Equal(t, m.GetFieldByName("name").(string), "mockslice1")
+}
+
+func TestGetModelNoExist(t *testing.T) {
+ conn, descriptor, err := InitClient(INIT_DEFAULT)
+ assert.Equal(t, err, nil)
+ defer conn.Close()
+
+ _, err = GetModel(context.Background(), conn, descriptor, "Slice", int32(77))
+ assert.NotEqual(t, err, nil)
+
+ _, matched := err.(*corderrors.ModelNotFoundError)
+ assert.True(t, matched)
+}
+
+func TestListModels(t *testing.T) {
+ conn, descriptor, err := InitClient(INIT_DEFAULT)
+ assert.Equal(t, err, nil)
+ defer conn.Close()
+
+ m, err := ListModels(context.Background(), conn, descriptor, "Slice")
+ assert.Equal(t, err, nil)
+
+ assert.Equal(t, len(m), 2)
+ assert.Equal(t, m[0].GetFieldByName("id").(int32), int32(1))
+ assert.Equal(t, m[0].GetFieldByName("name").(string), "mockslice1")
+ assert.Equal(t, m[1].GetFieldByName("id").(int32), int32(2))
+ assert.Equal(t, m[1].GetFieldByName("name").(string), "mockslice2")
+}
+
+func TestFilterModels(t *testing.T) {
+ conn, descriptor, err := InitClient(INIT_DEFAULT)
+ assert.Equal(t, err, nil)
+ defer conn.Close()
+
+ qm := map[string]string{"id": "=1"}
+
+ m, err := FilterModels(context.Background(), conn, descriptor, "Slice", FILTER_DEFAULT, qm)
+ assert.Equal(t, err, nil)
+
+ assert.Equal(t, len(m), 1)
+ assert.Equal(t, m[0].GetFieldByName("id").(int32), int32(1))
+ assert.Equal(t, m[0].GetFieldByName("name").(string), "mockslice1")
+}
+
+func TestFindModel(t *testing.T) {
+ conn, descriptor, err := InitClient(INIT_DEFAULT)
+ assert.Equal(t, err, nil)
+ defer conn.Close()
+
+ qm := map[string]string{"id": "=1"}
+
+ m, err := FindModel(context.Background(), conn, descriptor, "Slice", qm)
+ assert.Equal(t, err, nil)
+
+ assert.Equal(t, m.GetFieldByName("id").(int32), int32(1))
+ assert.Equal(t, m.GetFieldByName("name").(string), "mockslice1")
+}
+
+func TestFindModelNoExist(t *testing.T) {
+ conn, descriptor, err := InitClient(INIT_DEFAULT)
+ assert.Equal(t, err, nil)
+ defer conn.Close()
+
+ qm := map[string]string{"id": "=77"}
+
+ _, err = FindModel(context.Background(), conn, descriptor, "Slice", qm)
+ assert.NotEqual(t, err, nil)
+
+ _, matched := err.(*corderrors.ModelNotFoundError)
+ assert.True(t, matched)
+}
+
+func TestDeleteModel(t *testing.T) {
+ conn, descriptor, err := InitClient(INIT_DEFAULT)
+ assert.Equal(t, err, nil)
+ defer conn.Close()
+
+ err = DeleteModel(conn, descriptor, "Slice", int32(1))
+ assert.Equal(t, err, nil)
+}