|
- /*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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 parser
-
- import (
- "testing"
-
- "github.com/stretchr/testify/assert"
-
- "seata.apache.org/seata-go/pkg/datasource/sql/undo"
- )
-
- func TestJsonGetName(t *testing.T) {
- assert.Equal(t, "json", (&JsonParser{}).GetName())
- }
-
- func TestJsonGetDefaultContext(t *testing.T) {
- assert.Equal(t, []byte("{}"), (&JsonParser{}).GetDefaultContent())
- }
-
- func TestJsonEncode(t *testing.T) {
- TestCases := []struct {
- CaseName string
- UndoLog *undo.BranchUndoLog
- ExpectErr bool
- ExpectBytes string
- }{
- {
- CaseName: "pass",
- UndoLog: &undo.BranchUndoLog{
- Xid: "123456",
- BranchID: 123456,
- Logs: []undo.SQLUndoLog{},
- },
- ExpectErr: false,
- ExpectBytes: `{"xid":"123456","branchId":123456,"sqlUndoLogs":[]}`,
- },
- }
-
- for _, Case := range TestCases {
- t.Run(Case.CaseName, func(t *testing.T) {
- logParser := &JsonParser{}
- bytes, err := logParser.Encode(Case.UndoLog)
- if Case.ExpectErr {
- assert.NotNil(t, err)
- } else {
- assert.Nil(t, err)
- }
-
- assert.Equal(t, Case.ExpectBytes, string(bytes))
- })
- }
- }
-
- func TestJsonDecode(t *testing.T) {
- TestCases := []struct {
- CaseName string
- ExpectUndoLog undo.BranchUndoLog
- ExpectErr bool
- InputBytes string
- }{
- {
- CaseName: "pass",
- ExpectUndoLog: undo.BranchUndoLog{
- Xid: "123456",
- BranchID: 123456,
- Logs: []undo.SQLUndoLog{},
- },
- ExpectErr: false,
- InputBytes: `{"xid":"123456","branchId":123456,"sqlUndoLogs":[]}`,
- },
- }
-
- for _, Case := range TestCases {
- t.Run(Case.CaseName, func(t *testing.T) {
- logParser := &JsonParser{}
- undoLog, err := logParser.Decode([]byte(Case.InputBytes))
- if Case.ExpectErr {
- assert.NotNil(t, err)
- } else {
- assert.Nil(t, err)
- }
-
- assert.Equal(t, undoLog.Xid, Case.ExpectUndoLog.Xid)
- assert.Equal(t, undoLog.BranchID, Case.ExpectUndoLog.BranchID)
- assert.Equal(t, len(undoLog.Logs), len(Case.ExpectUndoLog.Logs))
- })
- }
-
- }
|