query_set_service_test.go 3.3 KB
package domainService

import (
	"github.com/stretchr/testify/assert"
	"gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/domain"
	"testing"
)

func TestSelectsEditLog(t *testing.T) {
	oldQueryComponents := []*domain.QueryComponent{
		&domain.QueryComponent{
			Id: "1",
			Selects: []domain.SelectExprGroup{
				{
					SelectExpr: domain.SelectExpr{
						Id: "c_1",
						FieldLeft: domain.FieldExpr{
							ExprSql:   "t.a",
							ExprHuman: "T.a",
						},
						FieldRight: domain.FieldExpr{
							ExprSql:   "t.b",
							ExprHuman: "T.b",
						},
					},
					SubSelects: []domain.SelectExpr{
						{
							Id: "c_s_1",
							FieldLeft: domain.FieldExpr{
								ExprSql:   "t.a",
								ExprHuman: "T.a",
							},
							FieldRight: domain.FieldExpr{
								ExprSql:   "t.b",
								ExprHuman: "T.b",
							},
						},
					},
				},
				{
					SelectExpr: domain.SelectExpr{
						Id: "c_2",
						FieldLeft: domain.FieldExpr{
							ExprSql:   "t.c",
							ExprHuman: "T.c",
						},
						FieldRight: domain.FieldExpr{
							ExprSql:   "t.d",
							ExprHuman: "T.d",
						},
					},
				},
			},
		},
	}
	newQueryComponents := []*domain.QueryComponent{
		&domain.QueryComponent{
			Id: "1",
			Selects: []domain.SelectExprGroup{
				{
					SelectExpr: domain.SelectExpr{
						Id: "c_1",
						FieldLeft: domain.FieldExpr{
							ExprSql:   "t.a",
							ExprHuman: "T.a",
						},
						FieldRight: domain.FieldExpr{
							ExprSql:   "t.c",
							ExprHuman: "T.c",
						},
					},
				},
			},
		},
	}
	querySet := &domain.QuerySet{
		QuerySetId:      1,
		Type:            domain.SchemaTable.ToString(),
		Flag:            domain.FlagSet,
		Name:            "测试集合",
		QueryComponents: oldQueryComponents,
	}
	ctx := &domain.Context{CompanyId: 1, OperatorId: 1, OperatorName: "test"}
	logs := selectsEditLog(ctx, querySet, newQueryComponents)
	assert.Equal(t, len(logs), 3)
}

func TestConditionsEditLog(t *testing.T) {
	oldQueryComponents := []*domain.QueryComponent{
		&domain.QueryComponent{
			Id: "1",
			Conditions: []domain.ConditionExpr{
				{
					Id: "c_1",
					FieldLeft: domain.FieldExpr{
						ExprSql:   "t.a",
						ExprHuman: "T.a",
					},
					FieldRight: domain.FieldExpr{
						ExprSql:   "t.b",
						ExprHuman: "T.b",
					},
					OperatorSymbol: "=",
				},
				{
					Id: "c_2",
					FieldLeft: domain.FieldExpr{
						ExprSql:   "t.c",
						ExprHuman: "T.c",
					},
					FieldRight: domain.FieldExpr{
						ExprSql:   "t.d",
						ExprHuman: "T.d",
					},
					OperatorSymbol: "=",
				},
			},
		},
	}
	newQueryComponents := []*domain.QueryComponent{
		&domain.QueryComponent{
			Id: "1",
			Conditions: []domain.ConditionExpr{
				{
					Id: "c_1",
					FieldLeft: domain.FieldExpr{
						ExprSql:   "t.a",
						ExprHuman: "T.a",
					},
					FieldRight: domain.FieldExpr{
						ExprSql:   "t.c",
						ExprHuman: "T.c",
					},
					OperatorSymbol: "=",
				},
			},
		},
	}
	querySet := &domain.QuerySet{
		QuerySetId:      1,
		Type:            domain.SchemaTable.ToString(),
		Flag:            domain.FlagSet,
		Name:            "测试集合",
		QueryComponents: oldQueryComponents,
	}
	ctx := &domain.Context{CompanyId: 1, OperatorId: 1, OperatorName: "test"}
	logs := conditionsEditLog(ctx, querySet, newQueryComponents)
	assert.Equal(t, len(logs), 2)
}