Forráskód Böngészése

添加sql conditions测试

yjp 1 éve
szülő
commit
954dd65d34

+ 0 - 0
framework/core/infrastructure/database/sql/condition.go → framework/core/infrastructure/database/sql/conditions.go


+ 85 - 0
test/database_sql_test.go

@@ -0,0 +1,85 @@
+package test
+
+import (
+	"git.sxidc.com/go-framework/baize/framework/core/infrastructure/database/sql"
+	"github.com/pkg/errors"
+	"testing"
+)
+
+func TestDatabaseSqlConditions(t *testing.T) {
+	conditions := sql.NewConditions().
+		AddCondition("name1 = ?", "foo").
+		Equal("age", 20).
+		Like("name2", "%foo%").
+		In("id1", []string{"111", "222"}).
+		NotIn("id2", []string{"33", "444"}).
+		Not("id3", "555").
+		LessThan("num1", 10).
+		LessThanAndEqual("num2", 20).
+		GreaterThan("num3", 30).
+		GreaterThanAndEqual("num4", 40)
+
+	exceptQueries := []string{
+		`name1 = ?`,
+		`"age" = ?`,
+		`"name2" LIKE ?`,
+		`"id1" IN ?`,
+		`"id2" NOT IN ?`,
+		`"id3" != ?`,
+		`"num1" < ?`,
+		`"num2" <= ?`,
+		`"num3" > ?`,
+		`"num4" >= ?`,
+	}
+
+	exceptArgs := []any{
+		"foo",
+		20,
+		"%foo%",
+		[]string{"111", "222"},
+		[]string{"33", "444"},
+		"555",
+		10,
+		20,
+		30,
+		40,
+	}
+
+	exceptAnd := `WHERE name1 = ? AND "age" = ? AND "name2" LIKE ? AND "id1" IN ? AND "id2" NOT IN ? AND "id3" != ? AND "num1" < ? AND "num2" <= ? AND "num3" > ? AND "num4" >= ?`
+
+	for i, query := range conditions.Queries() {
+		if exceptQueries[i] != query {
+			t.Fatalf("%+v\n", errors.Errorf("Query Error: except %v, actural %v",
+				exceptQueries[i], query))
+		}
+	}
+
+	for i, arg := range conditions.Args() {
+		argStringSlice, ok := arg.([]string)
+		if ok {
+			for j, stringArg := range argStringSlice {
+				exceptArg, ok := exceptArgs[i].([]string)
+				if !ok {
+					t.Fatalf("%+v\n", errors.New("参数类型不匹配"))
+				}
+
+				if exceptArg[j] != stringArg {
+					t.Fatalf("%+v\n", errors.Errorf("Args Error: except %v, actural %v",
+						exceptQueries[i], stringArg))
+				}
+			}
+
+			continue
+		}
+
+		if exceptArgs[i] != arg {
+			t.Fatalf("%+v\n", errors.Errorf("Args Error: except %v, actural %v",
+				exceptQueries[i], arg))
+		}
+	}
+
+	if conditions.And() != exceptAnd {
+		t.Fatalf("%+v\n", errors.Errorf("And Error:\nexcept %v\nactural %v\n",
+			exceptAnd, conditions.And()))
+	}
+}