This commit is contained in:
Max 2022-01-14 18:13:38 +08:00
parent 64d177fc27
commit 771d7f2334
5 changed files with 116 additions and 11 deletions

View file

@ -68,8 +68,8 @@ func TestProcessMapToArray(t *testing.T) {
"bar": "Value2",
}).Run().([]map[string]interface{})
assert.Equal(t, arr[0]["key"], "foo")
assert.Equal(t, arr[0]["value"], "Value1")
assert.Equal(t, arr[1]["key"], "bar")
assert.Equal(t, arr[1]["value"], "Value2")
assert.Len(t, arr, 2)
assert.True(t, arr[0]["key"] == "foo" || arr[0]["key"] == "bar")
assert.True(t, arr[0]["value"] == "Value1" || arr[0]["value"] == "Value2")
}

View file

@ -7,7 +7,7 @@ import (
"github.com/stretchr/testify/assert"
)
var data = map[string][]byte{
var testDataColumns = map[string][]byte{
"normal": []byte(`{
"label": "订单号",
"name": "order_sn",
@ -41,9 +41,9 @@ var data = map[string][]byte{
}`),
}
func TestUnmarshalJSON(t *testing.T) {
func TestColumnUnmarshalJSON(t *testing.T) {
var normal Column
err := jsoniter.Unmarshal(data["normal"], &normal)
err := jsoniter.Unmarshal(testDataColumns["normal"], &normal)
assert.Nil(t, err)
assert.Equal(t, "订单号", normal.Label)
assert.Equal(t, "order_sn", normal.Name)
@ -56,7 +56,7 @@ func TestUnmarshalJSON(t *testing.T) {
assert.Equal(t, false, normal.IsObject)
var object Column
err = jsoniter.Unmarshal(data["object"], &object)
err = jsoniter.Unmarshal(testDataColumns["object"], &object)
assert.Nil(t, err)
assert.Equal(t, "性别", object.Label)
assert.Equal(t, "user", object.Name)
@ -69,7 +69,7 @@ func TestUnmarshalJSON(t *testing.T) {
assert.Equal(t, false, object.Primary)
var array Column
err = jsoniter.Unmarshal(data["array"], &array)
err = jsoniter.Unmarshal(testDataColumns["array"], &array)
assert.Nil(t, err)
assert.Equal(t, "库存", array.Label)
assert.Equal(t, "stock", array.Name)
@ -82,7 +82,7 @@ func TestUnmarshalJSON(t *testing.T) {
assert.Equal(t, false, array.Primary)
var arrayObject Column
err = jsoniter.Unmarshal(data["arrayObject"], &arrayObject)
err = jsoniter.Unmarshal(testDataColumns["arrayObject"], &arrayObject)
assert.Nil(t, err)
assert.Nil(t, err)
assert.Equal(t, "商品", arrayObject.Label)
@ -96,7 +96,7 @@ func TestUnmarshalJSON(t *testing.T) {
assert.Equal(t, false, arrayObject.Primary)
var failure Column
err = jsoniter.Unmarshal(data["failure"], &failure)
err = jsoniter.Unmarshal(testDataColumns["failure"], &failure)
assert.NotNil(t, err)
assert.Contains(t, err.Error(), `"label" format is incorrect`)
}

59
imports/option.go Normal file
View file

@ -0,0 +1,59 @@
package imports
import (
jsoniter "github.com/json-iterator/go"
"github.com/yaoapp/kun/any"
)
// UnmarshalJSON for json marshalJSON
func (option *Option) UnmarshalJSON(source []byte) error {
var data = map[string]interface{}{}
err := jsoniter.Unmarshal(source, &data)
if err != nil {
return err
}
new, err := OptionOf(data)
if err != nil {
return err
}
*option = *new
return nil
}
// OptionOf 解析配置
func OptionOf(data map[string]interface{}) (*Option, error) {
option := &Option{
AutoMatching: true,
ChunkSize: 500,
MappingPreview: PreviewAuto,
DataPreview: PreviewAuto,
}
if autoMatching, ok := data["autoMatching"].(bool); ok {
option.AutoMatching = autoMatching
}
chunkSize := any.Of(data["chunkSize"]).CInt()
if chunkSize > 0 && chunkSize < 2000 {
option.ChunkSize = chunkSize
}
if mappingPreview, ok := data["mappingPreview"].(string); ok {
option.MappingPreview = getPreviewOption(mappingPreview)
}
if dataPreview, ok := data["dataPreview"].(string); ok {
option.DataPreview = getPreviewOption(dataPreview)
}
return option, nil
}
func getPreviewOption(value string) string {
if value != PreviewAlways && value != PreviewAuto && value != PreviewNever {
return PreviewAuto
}
return value
}

41
imports/option_test.go Normal file
View file

@ -0,0 +1,41 @@
package imports
import (
"testing"
jsoniter "github.com/json-iterator/go"
"github.com/stretchr/testify/assert"
)
var testDataOption = map[string][]byte{
"normal": []byte(`{
"autoMatching": true,
"chunkSize":200,
"mappingPreview": "always",
"dataPreview": "never"
}`),
"defaults": []byte(`{}`),
"failure": []byte(`""`),
}
func TestOptionUnmarshalJSON(t *testing.T) {
var normal Option
err := jsoniter.Unmarshal(testDataOption["normal"], &normal)
assert.Nil(t, err)
assert.Equal(t, true, normal.AutoMatching)
assert.Equal(t, 200, normal.ChunkSize)
assert.Equal(t, "always", normal.MappingPreview)
assert.Equal(t, "never", normal.DataPreview)
var defaults Option
err = jsoniter.Unmarshal(testDataOption["defaults"], &defaults)
assert.Nil(t, err)
assert.Equal(t, true, defaults.AutoMatching)
assert.Equal(t, 500, defaults.ChunkSize)
assert.Equal(t, "auto", defaults.MappingPreview)
assert.Equal(t, "auto", defaults.DataPreview)
var failure Option
err = jsoniter.Unmarshal(testDataOption["failure"], &failure)
assert.NotNil(t, err)
}

View file

@ -5,6 +5,11 @@ repace() {
sed -E "$1" ~/Code/yao/xiang/shell/install.sh > ~/Code/yao/xiang/shell/install.sh.new
}
# 关闭代理
all_proxy=""
http_proxy=""
https_proxy=""
VERSION=$(go run . version)
ssh max@demo-crm.iqka.com mkdir -p /data/demo-crm/ui/releases/$VERSION/
ssh max@demo-crm.iqka.com "echo {\\\"version\\\":\\\"$VERSION\\\"} > /data/demo-crm/ui/releases/latest.json"