[change] unit-tests workflow & remove OSS support

This commit is contained in:
Max 2022-09-01 14:36:19 +08:00
parent 2e1ef3ecb2
commit f66d6bc4ac
10 changed files with 508 additions and 542 deletions

View file

@ -1,6 +1,10 @@
name: UnitTest name: UnitTest
on: on:
workflow_dispatch:
inputs:
tags:
description: "Comment"
push: push:
branches: [main] branches: [main]
@ -40,19 +44,19 @@ jobs:
- name: Checkout Kun - name: Checkout Kun
uses: actions/checkout@v2 uses: actions/checkout@v2
with: with:
repository: yaoapp/kun repository: ${{ github.event.org.login }}/kun
path: kun path: kun
- name: Checkout Xun - name: Checkout Xun
uses: actions/checkout@v2 uses: actions/checkout@v2
with: with:
repository: yaoapp/xun repository: ${{ github.event.org.login }}/xun
path: xun path: xun
- name: Checkout Gou - name: Checkout Gou
uses: actions/checkout@v2 uses: actions/checkout@v2
with: with:
repository: yaoapp/gou repository: ${{ github.event.org.login }}/gou
path: gou path: gou
- name: Checkout V8Go - name: Checkout V8Go

3
.gitignore vendored
View file

@ -19,7 +19,7 @@
dist dist
ui ui
^ui/index.html ^ui/index.html
tests/data/*/* tests/data/*
debug.log debug.log
yao-test yao-test
dev.sh dev.sh
@ -27,3 +27,4 @@ logs
logs/application.log logs/application.log
yao-arm64 yao-arm64
tests/db/yao.db tests/db/yao.db
env.*.sh

4
go.mod
View file

@ -4,7 +4,6 @@ go 1.18
require ( require (
github.com/aliyun/alibaba-cloud-sdk-go v1.61.1286 github.com/aliyun/alibaba-cloud-sdk-go v1.61.1286
github.com/aliyun/aliyun-oss-go-sdk v2.1.10+incompatible
github.com/caarlos0/env/v6 v6.9.1 github.com/caarlos0/env/v6 v6.9.1
github.com/elazarl/go-bindata-assetfs v1.0.1 github.com/elazarl/go-bindata-assetfs v1.0.1
github.com/fatih/color v1.13.0 github.com/fatih/color v1.13.0
@ -26,7 +25,6 @@ require (
require ( require (
github.com/TylerBrock/colorjson v0.0.0-20200706003622-8a50f05110d2 // indirect github.com/TylerBrock/colorjson v0.0.0-20200706003622-8a50f05110d2 // indirect
github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f // indirect
github.com/blang/semver/v4 v4.0.0 // indirect github.com/blang/semver/v4 v4.0.0 // indirect
github.com/cespare/xxhash/v2 v2.1.2 // indirect github.com/cespare/xxhash/v2 v2.1.2 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect github.com/davecgh/go-spew v1.1.1 // indirect
@ -64,7 +62,6 @@ require (
github.com/richardlehane/mscfb v1.0.3 // indirect github.com/richardlehane/mscfb v1.0.3 // indirect
github.com/richardlehane/msoleps v1.0.1 // indirect github.com/richardlehane/msoleps v1.0.1 // indirect
github.com/robfig/cron/v3 v3.0.1 // indirect github.com/robfig/cron/v3 v3.0.1 // indirect
github.com/satori/go.uuid v1.2.0 // indirect
github.com/sirupsen/logrus v1.8.1 // indirect github.com/sirupsen/logrus v1.8.1 // indirect
github.com/spf13/pflag v1.0.5 // indirect github.com/spf13/pflag v1.0.5 // indirect
github.com/takama/daemon v1.0.0 // indirect github.com/takama/daemon v1.0.0 // indirect
@ -83,7 +80,6 @@ require (
golang.org/x/net v0.0.0-20220526153639-5463443f8c37 // indirect golang.org/x/net v0.0.0-20220526153639-5463443f8c37 // indirect
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a // indirect golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a // indirect
golang.org/x/text v0.3.7 // indirect golang.org/x/text v0.3.7 // indirect
golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac // indirect
golang.org/x/tools v0.1.7 // indirect golang.org/x/tools v0.1.7 // indirect
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect
google.golang.org/genproto v0.0.0-20220526192754-51939a95c655 // indirect google.golang.org/genproto v0.0.0-20220526192754-51939a95c655 // indirect

View file

@ -1 +0,0 @@
# Golang 插件

View file

@ -1,17 +1,12 @@
package workflow package workflow
import ( // Workflow will be removed from engine
"testing"
"github.com/stretchr/testify/assert" // func TestSetupAPIs(t *testing.T) {
"github.com/yaoapp/gou" // assignFlow := Select("assign")
) // assignFlow.SetupAPIs()
func TestSetupAPIs(t *testing.T) { // api := gou.SelectAPI("xiang.workflow.assign")
assignFlow := Select("assign") // assert.Equal(t, "xiang.workflow.assign", api.Name)
assignFlow.SetupAPIs() // assert.Equal(t, 10, len(api.HTTP.Paths))
// }
api := gou.SelectAPI("xiang.workflow.assign")
assert.Equal(t, "xiang.workflow.assign", api.Name)
assert.Equal(t, 10, len(api.HTTP.Paths))
}

View file

@ -2,6 +2,8 @@ package workflow
import "github.com/yaoapp/gou" import "github.com/yaoapp/gou"
// WARNING: the Workflow widget will be removed from yao engine
// Process // Process
// 读取工作流 xiang.workflow.Find(name, workflow_id) // 读取工作流 xiang.workflow.Find(name, workflow_id)
// 读取工作流 xiang.workflow.Open(name, uid, data_id) // 读取工作流 xiang.workflow.Open(name, uid, data_id)

View file

@ -1,247 +1,233 @@
package workflow package workflow
import ( // WARNING: the Workflow widget will be removed from yao engine
"os"
"path"
"testing"
"github.com/stretchr/testify/assert" // func init() {
"github.com/yaoapp/gou" // share.DBConnect(config.Conf.DB)
"github.com/yaoapp/kun/any" // share.Load(config.Conf)
"github.com/yaoapp/xun/capsule" // model.Load(config.Conf)
"github.com/yaoapp/yao/config" // engineModels := path.Join(os.Getenv("YAO_DEV"), "yao", "models")
"github.com/yaoapp/yao/flow" // model.LoadFrom(engineModels, "xiang.")
"github.com/yaoapp/yao/model" // query.Load(config.Conf)
"github.com/yaoapp/yao/query" // flow.Load(config.Conf)
"github.com/yaoapp/yao/share" // Load(config.Conf)
) // }
func init() { // func TestProcessFind(t *testing.T) {
share.DBConnect(config.Conf.DB) // assignFlow := Select("assign")
share.Load(config.Conf) // wflow := assignFlow.Save(1, "选择商务负责人", 1, Input{
model.Load(config.Conf) // Data: map[string]interface{}{"id": 1, "name": "云主机"},
engineModels := path.Join(os.Getenv("YAO_DEV"), "yao", "models") // Form: map[string]interface{}{"biz_id": 1, "name": "张良明"},
model.LoadFrom(engineModels, "xiang.") // })
query.Load(config.Conf)
flow.Load(config.Conf)
Load(config.Conf)
}
func TestProcessFind(t *testing.T) { // args := []interface{}{"assign", wflow["id"]}
assignFlow := Select("assign") // res := gou.NewProcess("xiang.workflow.Find", args...).Run()
wflow := assignFlow.Save(1, "选择商务负责人", 1, Input{
Data: map[string]interface{}{"id": 1, "name": "云主机"},
Form: map[string]interface{}{"biz_id": 1, "name": "张良明"},
})
args := []interface{}{"assign", wflow["id"]} // data := any.Of(res).Map().MapStrAny.Dot()
res := gou.NewProcess("xiang.workflow.Find", args...).Run() // assert.Equal(t, wflow["id"], data.Get("id"))
data := any.Of(res).Map().MapStrAny.Dot() // // 清理数据
assert.Equal(t, wflow["id"], data.Get("id")) // capsule.Query().From("xiang_workflow").Truncate()
// }
// 清理数据 // func TestProcessSetting(t *testing.T) {
capsule.Query().From("xiang_workflow").Truncate() // assignFlow := Select("assign")
} // wflow := assignFlow.Save(1, "选择商务负责人", 1, Input{
// Data: map[string]interface{}{"id": 1, "name": "云主机"},
// Form: map[string]interface{}{"biz_id": 1, "name": "张良明"},
// })
// id := any.Of(wflow["id"]).CInt()
// assignFlow.Next(1, id, map[string]interface{}{
// "项目名称": "测试项目",
// "商务负责人名称": "林明波",
// })
func TestProcessSetting(t *testing.T) { // args := []interface{}{"assign", 1, 1}
assignFlow := Select("assign") // res := gou.NewProcess("xiang.workflow.Setting", args...).Run()
wflow := assignFlow.Save(1, "选择商务负责人", 1, Input{ // data := any.Of(res).Map().MapStrAny.Dot()
Data: map[string]interface{}{"id": 1, "name": "云主机"}, // assert.Equal(t, 2, data.Get("nodes.2.source"))
Form: map[string]interface{}{"biz_id": 1, "name": "张良明"}, // assert.Equal(t, 2, data.Get("nodes.3.source"))
}) // assert.Equal(t, "assign", data.Get("name"))
id := any.Of(wflow["id"]).CInt() // assert.Equal(t, "指派商务负责人", data.Get("label"))
assignFlow.Next(1, id, map[string]interface{}{
"项目名称": "测试项目",
"商务负责人名称": "林明波",
})
args := []interface{}{"assign", 1, 1} // // 清理数据
res := gou.NewProcess("xiang.workflow.Setting", args...).Run() // capsule.Query().From("xiang_workflow").Truncate()
data := any.Of(res).Map().MapStrAny.Dot() // }
assert.Equal(t, 2, data.Get("nodes.2.source"))
assert.Equal(t, 2, data.Get("nodes.3.source"))
assert.Equal(t, "assign", data.Get("name"))
assert.Equal(t, "指派商务负责人", data.Get("label"))
// 清理数据 // func TestProcessOpen(t *testing.T) {
capsule.Query().From("xiang_workflow").Truncate() // assignFlow := Select("assign")
} // wflow := assignFlow.Save(1, "选择商务负责人", 1, Input{
// Data: map[string]interface{}{"id": 1, "name": "云主机"},
// Form: map[string]interface{}{"biz_id": 1, "name": "张良明"},
// })
func TestProcessOpen(t *testing.T) { // args := []interface{}{"assign", 1, 1}
assignFlow := Select("assign") // res := gou.NewProcess("xiang.workflow.Open", args...).Run()
wflow := assignFlow.Save(1, "选择商务负责人", 1, Input{
Data: map[string]interface{}{"id": 1, "name": "云主机"},
Form: map[string]interface{}{"biz_id": 1, "name": "张良明"},
})
args := []interface{}{"assign", 1, 1} // data := any.Of(res).Map().MapStrAny.Dot()
res := gou.NewProcess("xiang.workflow.Open", args...).Run() // assert.Equal(t, wflow["id"], data.Get("id"))
data := any.Of(res).Map().MapStrAny.Dot() // // 清理数据
assert.Equal(t, wflow["id"], data.Get("id")) // capsule.Query().From("xiang_workflow").Truncate()
// }
// 清理数据 // func TestProcessSave(t *testing.T) {
capsule.Query().From("xiang_workflow").Truncate() // args := []interface{}{"assign",
} // 1, "选择商务负责人", 1,
// map[string]interface{}{
// "data": map[string]interface{}{"id": 1, "name": "云主机"},
// "form": map[string]interface{}{"biz_id": 1, "name": "张良明"},
// },
// map[string]interface{}{"foo": "bar"},
// }
// res := gou.NewProcess("xiang.workflow.Save", args...).Run()
// data := any.Of(res).Map().MapStrAny.Dot()
// assert.Equal(t, int64(1), data.Get("id"))
func TestProcessSave(t *testing.T) { // // 清理数据
args := []interface{}{"assign", // capsule.Query().From("xiang_workflow").Truncate()
1, "选择商务负责人", 1, // }
map[string]interface{}{
"data": map[string]interface{}{"id": 1, "name": "云主机"},
"form": map[string]interface{}{"biz_id": 1, "name": "张良明"},
},
map[string]interface{}{"foo": "bar"},
}
res := gou.NewProcess("xiang.workflow.Save", args...).Run()
data := any.Of(res).Map().MapStrAny.Dot()
assert.Equal(t, int64(1), data.Get("id"))
// 清理数据 // func TestProcessNext(t *testing.T) {
capsule.Query().From("xiang_workflow").Truncate() // assignFlow := Select("assign")
} // wflow := assignFlow.Save(1, "选择商务负责人", 1, Input{
// Data: map[string]interface{}{"id": 1, "name": "云主机"},
// Form: map[string]interface{}{"biz_id": 1, "name": "张良明"},
// })
func TestProcessNext(t *testing.T) { // args := []interface{}{"assign",
assignFlow := Select("assign") // 1, wflow["id"], map[string]interface{}{
wflow := assignFlow.Save(1, "选择商务负责人", 1, Input{ // "项目名称": "测试项目",
Data: map[string]interface{}{"id": 1, "name": "云主机"}, // "商务负责人名称": "林明波",
Form: map[string]interface{}{"biz_id": 1, "name": "张良明"}, // },
}) // }
// res := gou.NewProcess("xiang.workflow.Next", args...).Run()
// data := any.Of(res).Map().MapStrAny.Dot()
// assert.Equal(t, wflow["id"], data.Get("id"))
// assert.Equal(t, "项目负责人审批", data.Get("node_name"))
args := []interface{}{"assign", // // 清理数据
1, wflow["id"], map[string]interface{}{ // capsule.Query().From("xiang_workflow").Truncate()
"项目名称": "测试项目", // }
"商务负责人名称": "林明波",
},
}
res := gou.NewProcess("xiang.workflow.Next", args...).Run()
data := any.Of(res).Map().MapStrAny.Dot()
assert.Equal(t, wflow["id"], data.Get("id"))
assert.Equal(t, "项目负责人审批", data.Get("node_name"))
// 清理数据 // func TestProcessGoto(t *testing.T) {
capsule.Query().From("xiang_workflow").Truncate() // assignFlow := Select("assign")
} // wflow := assignFlow.Save(1, "选择商务负责人", 1, Input{
// Data: map[string]interface{}{"id": 1, "name": "云主机"},
// Form: map[string]interface{}{"biz_id": 1, "name": "张良明"},
// })
// id := any.Of(wflow["id"]).CInt()
// assignFlow.Next(1, id, map[string]interface{}{
// "项目名称": "测试项目",
// "商务负责人名称": "林明波",
// })
func TestProcessGoto(t *testing.T) { // args := []interface{}{"assign",
assignFlow := Select("assign") // 2, id, "选择商务负责人",
wflow := assignFlow.Save(1, "选择商务负责人", 1, Input{ // map[string]interface{}{"审批结果": "驳回"},
Data: map[string]interface{}{"id": 1, "name": "云主机"}, // }
Form: map[string]interface{}{"biz_id": 1, "name": "张良明"}, // res := gou.NewProcess("xiang.workflow.Goto", args...).Run()
}) // data := any.Of(res).Map().MapStrAny.Dot()
id := any.Of(wflow["id"]).CInt() // assert.Equal(t, wflow["id"], data.Get("id"))
assignFlow.Next(1, id, map[string]interface{}{ // assert.Equal(t, "选择商务负责人", data.Get("node_name"))
"项目名称": "测试项目",
"商务负责人名称": "林明波",
})
args := []interface{}{"assign", // // 清理数据
2, id, "选择商务负责人", // capsule.Query().From("xiang_workflow").Truncate()
map[string]interface{}{"审批结果": "驳回"}, // }
}
res := gou.NewProcess("xiang.workflow.Goto", args...).Run()
data := any.Of(res).Map().MapStrAny.Dot()
assert.Equal(t, wflow["id"], data.Get("id"))
assert.Equal(t, "选择商务负责人", data.Get("node_name"))
// 清理数据 // func TestProcessStatus(t *testing.T) {
capsule.Query().From("xiang_workflow").Truncate() // assignFlow := Select("assign")
} // wflow := assignFlow.Save(1, "选择商务负责人", 1, Input{
// Data: map[string]interface{}{"id": 1, "name": "云主机"},
// Form: map[string]interface{}{"biz_id": 1, "name": "张良明"},
// })
// id := any.Of(wflow["id"]).CInt()
// assignFlow.Next(1, id, map[string]interface{}{
// "项目名称": "测试项目",
// "商务负责人名称": "林明波",
// })
func TestProcessStatus(t *testing.T) { // args := []interface{}{"assign",
assignFlow := Select("assign") // 2, id, "已完成", map[string]interface{}{"关闭原因": "测试完成"},
wflow := assignFlow.Save(1, "选择商务负责人", 1, Input{ // }
Data: map[string]interface{}{"id": 1, "name": "云主机"}, // res := gou.NewProcess("xiang.workflow.Status", args...).Run()
Form: map[string]interface{}{"biz_id": 1, "name": "张良明"}, // data := any.Of(res).Map().MapStrAny.Dot()
}) // assert.Equal(t, wflow["id"], data.Get("id"))
id := any.Of(wflow["id"]).CInt() // assert.Equal(t, "已完成", data.Get("status"))
assignFlow.Next(1, id, map[string]interface{}{
"项目名称": "测试项目",
"商务负责人名称": "林明波",
})
args := []interface{}{"assign", // // 清理数据
2, id, "已完成", map[string]interface{}{"关闭原因": "测试完成"}, // capsule.Query().From("xiang_workflow").Truncate()
} // }
res := gou.NewProcess("xiang.workflow.Status", args...).Run()
data := any.Of(res).Map().MapStrAny.Dot()
assert.Equal(t, wflow["id"], data.Get("id"))
assert.Equal(t, "已完成", data.Get("status"))
// 清理数据 // func TestProcessDone(t *testing.T) {
capsule.Query().From("xiang_workflow").Truncate() // assignFlow := Select("assign")
} // wflow := assignFlow.Save(1, "选择商务负责人", 1, Input{
// Data: map[string]interface{}{"id": 1, "name": "云主机"},
// Form: map[string]interface{}{"biz_id": 1, "name": "张良明"},
// })
// id := any.Of(wflow["id"]).CInt()
// assignFlow.Next(1, id, map[string]interface{}{
// "项目名称": "测试项目",
// "商务负责人名称": "林明波",
// })
func TestProcessDone(t *testing.T) { // args := []interface{}{"assign",
assignFlow := Select("assign") // 2, id, map[string]interface{}{"关闭原因": "测试完成"},
wflow := assignFlow.Save(1, "选择商务负责人", 1, Input{ // }
Data: map[string]interface{}{"id": 1, "name": "云主机"}, // res := gou.NewProcess("xiang.workflow.Done", args...).Run()
Form: map[string]interface{}{"biz_id": 1, "name": "张良明"}, // data := any.Of(res).Map().MapStrAny.Dot()
}) // assert.Equal(t, wflow["id"], data.Get("id"))
id := any.Of(wflow["id"]).CInt() // assert.Equal(t, "已完成", data.Get("status"))
assignFlow.Next(1, id, map[string]interface{}{
"项目名称": "测试项目",
"商务负责人名称": "林明波",
})
args := []interface{}{"assign", // // 清理数据
2, id, map[string]interface{}{"关闭原因": "测试完成"}, // capsule.Query().From("xiang_workflow").Truncate()
} // }
res := gou.NewProcess("xiang.workflow.Done", args...).Run()
data := any.Of(res).Map().MapStrAny.Dot()
assert.Equal(t, wflow["id"], data.Get("id"))
assert.Equal(t, "已完成", data.Get("status"))
// 清理数据 // func TestProcessClose(t *testing.T) {
capsule.Query().From("xiang_workflow").Truncate() // assignFlow := Select("assign")
} // wflow := assignFlow.Save(1, "选择商务负责人", 1, Input{
// Data: map[string]interface{}{"id": 1, "name": "云主机"},
// Form: map[string]interface{}{"biz_id": 1, "name": "张良明"},
// })
// id := any.Of(wflow["id"]).CInt()
// assignFlow.Next(1, id, map[string]interface{}{
// "项目名称": "测试项目",
// "商务负责人名称": "林明波",
// })
func TestProcessClose(t *testing.T) { // args := []interface{}{"assign",
assignFlow := Select("assign") // 2, id, map[string]interface{}{"关闭原因": "测试关闭"},
wflow := assignFlow.Save(1, "选择商务负责人", 1, Input{ // }
Data: map[string]interface{}{"id": 1, "name": "云主机"}, // res := gou.NewProcess("xiang.workflow.Close", args...).Run()
Form: map[string]interface{}{"biz_id": 1, "name": "张良明"}, // data := any.Of(res).Map().MapStrAny.Dot()
}) // assert.Equal(t, wflow["id"], data.Get("id"))
id := any.Of(wflow["id"]).CInt() // assert.Equal(t, "已关闭", data.Get("status"))
assignFlow.Next(1, id, map[string]interface{}{
"项目名称": "测试项目",
"商务负责人名称": "林明波",
})
args := []interface{}{"assign", // // 清理数据
2, id, map[string]interface{}{"关闭原因": "测试关闭"}, // capsule.Query().From("xiang_workflow").Truncate()
} // }
res := gou.NewProcess("xiang.workflow.Close", args...).Run()
data := any.Of(res).Map().MapStrAny.Dot()
assert.Equal(t, wflow["id"], data.Get("id"))
assert.Equal(t, "已关闭", data.Get("status"))
// 清理数据 // func TestProcessReset(t *testing.T) {
capsule.Query().From("xiang_workflow").Truncate() // assignFlow := Select("assign")
} // wflow := assignFlow.Save(1, "选择商务负责人", 1, Input{
// Data: map[string]interface{}{"id": 1, "name": "云主机"},
// Form: map[string]interface{}{"biz_id": 1, "name": "张良明"},
// })
// id := any.Of(wflow["id"]).CInt()
// assignFlow.Next(1, id, map[string]interface{}{
// "项目名称": "测试项目",
// "商务负责人名称": "林明波",
// })
func TestProcessReset(t *testing.T) { // args := []interface{}{"assign",
assignFlow := Select("assign") // 2, id, map[string]interface{}{"驳回原因": "字段填写错误"},
wflow := assignFlow.Save(1, "选择商务负责人", 1, Input{ // }
Data: map[string]interface{}{"id": 1, "name": "云主机"}, // res := gou.NewProcess("xiang.workflow.Reset", args...).Run()
Form: map[string]interface{}{"biz_id": 1, "name": "张良明"}, // data := any.Of(res).Map().MapStrAny.Dot()
}) // assert.Equal(t, wflow["id"], data.Get("id"))
id := any.Of(wflow["id"]).CInt() // assert.Equal(t, "进行中", data.Get("status"))
assignFlow.Next(1, id, map[string]interface{}{ // assert.Equal(t, "选择商务负责人", data.Get("node_name"))
"项目名称": "测试项目",
"商务负责人名称": "林明波",
})
args := []interface{}{"assign", // // 清理数据
2, id, map[string]interface{}{"驳回原因": "字段填写错误"}, // capsule.Query().From("xiang_workflow").Truncate()
} // }
res := gou.NewProcess("xiang.workflow.Reset", args...).Run()
data := any.Of(res).Map().MapStrAny.Dot()
assert.Equal(t, wflow["id"], data.Get("id"))
assert.Equal(t, "进行中", data.Get("status"))
assert.Equal(t, "选择商务负责人", data.Get("node_name"))
// 清理数据
capsule.Query().From("xiang_workflow").Truncate()
}

View file

@ -18,6 +18,8 @@ import (
"github.com/yaoapp/yao/share" "github.com/yaoapp/yao/share"
) )
// WARNING: the Workflow widget will be removed from yao engine
// Process // Process
// 读取工作流 xiang.workflow.Find(name, workflow_id) // 读取工作流 xiang.workflow.Find(name, workflow_id)
// 读取工作流 xiang.workflow.Open(name, uid, data_id) // 读取工作流 xiang.workflow.Open(name, uid, data_id)

View file

@ -1,310 +1,296 @@
package workflow package workflow
import ( // WARNING: the Workflow widget will be removed from yao engine
"os"
"path"
"testing"
"github.com/stretchr/testify/assert" // func init() {
"github.com/yaoapp/kun/any" // share.DBConnect(config.Conf.DB)
"github.com/yaoapp/kun/maps" // share.Load(config.Conf)
"github.com/yaoapp/xun/capsule" // model.Load(config.Conf)
"github.com/yaoapp/yao/config" // engineModels := path.Join(os.Getenv("YAO_DEV"), "xiang", "models")
"github.com/yaoapp/yao/flow" // model.LoadFrom(engineModels, "xiang.")
"github.com/yaoapp/yao/model" // query.Load(config.Conf)
"github.com/yaoapp/yao/query" // flow.Load(config.Conf)
"github.com/yaoapp/yao/share" // Load(config.Conf)
) // }
func init() { // func TestLoad(t *testing.T) {
share.DBConnect(config.Conf.DB) // share.DBConnect(config.Conf.DB)
share.Load(config.Conf) // share.Load(config.Conf)
model.Load(config.Conf) // model.Load(config.Conf)
engineModels := path.Join(os.Getenv("YAO_DEV"), "xiang", "models") // query.Load(config.Conf)
model.LoadFrom(engineModels, "xiang.") // Load(config.Conf)
query.Load(config.Conf) // LoadFrom("not a path", "404.")
flow.Load(config.Conf) // check(t)
Load(config.Conf) // }
}
func TestLoad(t *testing.T) { // func TestSave(t *testing.T) {
share.DBConnect(config.Conf.DB) // assignFlow := Select("assign")
share.Load(config.Conf) // wflow := assignFlow.Save(1, "选择商务负责人", 1, Input{
model.Load(config.Conf) // Data: map[string]interface{}{"id": 1, "name": "云主机"},
query.Load(config.Conf) // Form: map[string]interface{}{"biz_id": 1, "name": "张良明"},
Load(config.Conf) // })
LoadFrom("not a path", "404.")
check(t)
}
func TestSave(t *testing.T) { // data := maps.Of(wflow).Dot()
assignFlow := Select("assign") // assert.Equal(t, int64(1), data.Get("id"))
wflow := assignFlow.Save(1, "选择商务负责人", 1, Input{ // assert.Equal(t, "assign", data.Get("name"))
Data: map[string]interface{}{"id": 1, "name": "云主机"}, // assert.Equal(t, "选择商务负责人", data.Get("node_name"))
Form: map[string]interface{}{"biz_id": 1, "name": "张良明"}, // assert.Equal(t, "进行中", data.Get("node_status"))
}) // assert.Equal(t, "进行中", data.Get("status"))
// assert.Equal(t, float64(1), data.Get("input.选择商务负责人.data.id"))
// assert.Equal(t, "云主机", data.Get("input.选择商务负责人.data.name"))
// assert.Equal(t, float64(1), data.Get("input.选择商务负责人.form.biz_id"))
// assert.Equal(t, "张良明", data.Get("input.选择商务负责人.form.name"))
// // 清理数据
// capsule.Query().From("xiang_workflow").Truncate()
// }
data := maps.Of(wflow).Dot() // func TestSaveUpdate(t *testing.T) {
assert.Equal(t, int64(1), data.Get("id")) // assignFlow := Select("assign")
assert.Equal(t, "assign", data.Get("name")) // wflow := assignFlow.Save(1, "选择商务负责人", 1, Input{
assert.Equal(t, "选择商务负责人", data.Get("node_name")) // Data: map[string]interface{}{"id": 1, "name": "云主机"},
assert.Equal(t, "进行中", data.Get("node_status")) // Form: map[string]interface{}{"biz_id": 1, "name": "张良明"},
assert.Equal(t, "进行中", data.Get("status")) // })
assert.Equal(t, float64(1), data.Get("input.选择商务负责人.data.id"))
assert.Equal(t, "云主机", data.Get("input.选择商务负责人.data.name"))
assert.Equal(t, float64(1), data.Get("input.选择商务负责人.form.biz_id"))
assert.Equal(t, "张良明", data.Get("input.选择商务负责人.form.name"))
// 清理数据
capsule.Query().From("xiang_workflow").Truncate()
}
func TestSaveUpdate(t *testing.T) { // wflow = assignFlow.Save(1, "选择商务负责人", 1, Input{
assignFlow := Select("assign") // Data: map[string]interface{}{"id": 1, "name": "云存储"},
wflow := assignFlow.Save(1, "选择商务负责人", 1, Input{ // Form: map[string]interface{}{"biz_id": 1, "name": "李明博"},
Data: map[string]interface{}{"id": 1, "name": "云主机"}, // })
Form: map[string]interface{}{"biz_id": 1, "name": "张良明"},
})
wflow = assignFlow.Save(1, "选择商务负责人", 1, Input{ // data := maps.Of(wflow).Dot()
Data: map[string]interface{}{"id": 1, "name": "云存储"}, // assert.Equal(t, int64(1), data.Get("id"))
Form: map[string]interface{}{"biz_id": 1, "name": "李明博"}, // assert.Equal(t, "assign", data.Get("name"))
}) // assert.Equal(t, "选择商务负责人", data.Get("node_name"))
// assert.Equal(t, "进行中", data.Get("node_status"))
// assert.Equal(t, "进行中", data.Get("status"))
// assert.Equal(t, float64(1), data.Get("input.选择商务负责人.data.id"))
// assert.Equal(t, "云存储", data.Get("input.选择商务负责人.data.name"))
// assert.Equal(t, float64(1), data.Get("input.选择商务负责人.form.biz_id"))
// assert.Equal(t, "李明博", data.Get("input.选择商务负责人.form.name"))
data := maps.Of(wflow).Dot() // // 清理数据
assert.Equal(t, int64(1), data.Get("id")) // capsule.Query().From("xiang_workflow").Truncate()
assert.Equal(t, "assign", data.Get("name")) // }
assert.Equal(t, "选择商务负责人", data.Get("node_name"))
assert.Equal(t, "进行中", data.Get("node_status"))
assert.Equal(t, "进行中", data.Get("status"))
assert.Equal(t, float64(1), data.Get("input.选择商务负责人.data.id"))
assert.Equal(t, "云存储", data.Get("input.选择商务负责人.data.name"))
assert.Equal(t, float64(1), data.Get("input.选择商务负责人.form.biz_id"))
assert.Equal(t, "李明博", data.Get("input.选择商务负责人.form.name"))
// 清理数据 // func TestOpen(t *testing.T) {
capsule.Query().From("xiang_workflow").Truncate() // assignFlow := Select("assign")
} // assignFlow.Save(1, "选择商务负责人", 1, Input{
// Data: map[string]interface{}{"id": 1, "name": "云主机"},
// Form: map[string]interface{}{"biz_id": 1, "name": "张良明"},
// })
// wflow := assignFlow.Open(1, 1)
// data := maps.Of(wflow).Dot()
// assert.Equal(t, int64(1), data.Get("id"))
// assert.Equal(t, "assign", data.Get("name"))
// assert.Equal(t, "选择商务负责人", data.Get("node_name"))
// assert.Equal(t, "进行中", data.Get("node_status"))
// assert.Equal(t, "进行中", data.Get("status"))
// assert.Equal(t, int64(1), data.Get("user_id"))
// assert.Equal(t, float64(1), data.Get("users.选择商务负责人"))
func TestOpen(t *testing.T) { // // 清理数据
assignFlow := Select("assign") // capsule.Query().From("xiang_workflow").Truncate()
assignFlow.Save(1, "选择商务负责人", 1, Input{ // }
Data: map[string]interface{}{"id": 1, "name": "云主机"},
Form: map[string]interface{}{"biz_id": 1, "name": "张良明"},
})
wflow := assignFlow.Open(1, 1)
data := maps.Of(wflow).Dot()
assert.Equal(t, int64(1), data.Get("id"))
assert.Equal(t, "assign", data.Get("name"))
assert.Equal(t, "选择商务负责人", data.Get("node_name"))
assert.Equal(t, "进行中", data.Get("node_status"))
assert.Equal(t, "进行中", data.Get("status"))
assert.Equal(t, int64(1), data.Get("user_id"))
assert.Equal(t, float64(1), data.Get("users.选择商务负责人"))
// 清理数据 // func TestOpenEmpty(t *testing.T) {
capsule.Query().From("xiang_workflow").Truncate() // assignFlow := Select("assign")
} // wflow := assignFlow.Open(1, 1)
// data := maps.Of(wflow).Dot()
// assert.Equal(t, false, data.Has("id"))
// assert.Equal(t, "assign", data.Get("name"))
// assert.Equal(t, "选择商务负责人", data.Get("node_name"))
// assert.Equal(t, "进行中", data.Get("node_status"))
// assert.Equal(t, "进行中", data.Get("status"))
// assert.Equal(t, 1, data.Get("user_id"))
// assert.Equal(t, 1, data.Get("users.选择商务负责人"))
// }
func TestOpenEmpty(t *testing.T) { // func TestNext(t *testing.T) {
assignFlow := Select("assign") // assignFlow := Select("assign")
wflow := assignFlow.Open(1, 1) // wflow := assignFlow.Save(1, "选择商务负责人", 1, Input{
data := maps.Of(wflow).Dot() // Data: map[string]interface{}{"id": 1, "name": "云主机"},
assert.Equal(t, false, data.Has("id")) // Form: map[string]interface{}{"biz_id": 1, "name": "张良明"},
assert.Equal(t, "assign", data.Get("name")) // })
assert.Equal(t, "选择商务负责人", data.Get("node_name")) // wflow = assignFlow.Next(1, any.Of(wflow["id"]).CInt(), map[string]interface{}{
assert.Equal(t, "进行中", data.Get("node_status")) // "项目名称": "测试项目",
assert.Equal(t, "进行中", data.Get("status")) // "商务负责人名称": "林明波",
assert.Equal(t, 1, data.Get("user_id")) // })
assert.Equal(t, 1, data.Get("users.选择商务负责人")) // data := maps.Of(wflow).Dot()
} // assert.Equal(t, int64(1), data.Get("id"))
// assert.Equal(t, "assign", data.Get("name"))
// assert.Equal(t, "项目负责人审批", data.Get("node_name"))
// assert.Equal(t, "进行中", data.Get("node_status"))
// assert.Equal(t, "进行中", data.Get("status"))
// assert.Equal(t, int64(2), data.Get("user_id"))
// assert.Equal(t, true, data.Has("users"))
// assert.Equal(t, "测试项目", data.Get("output.项目名称"))
// assert.Equal(t, "林明波", data.Get("output.商务负责人名称"))
func TestNext(t *testing.T) { // // 清理数据
assignFlow := Select("assign") // capsule.Query().From("xiang_workflow").Truncate()
wflow := assignFlow.Save(1, "选择商务负责人", 1, Input{ // }
Data: map[string]interface{}{"id": 1, "name": "云主机"},
Form: map[string]interface{}{"biz_id": 1, "name": "张良明"},
})
wflow = assignFlow.Next(1, any.Of(wflow["id"]).CInt(), map[string]interface{}{
"项目名称": "测试项目",
"商务负责人名称": "林明波",
})
data := maps.Of(wflow).Dot()
assert.Equal(t, int64(1), data.Get("id"))
assert.Equal(t, "assign", data.Get("name"))
assert.Equal(t, "项目负责人审批", data.Get("node_name"))
assert.Equal(t, "进行中", data.Get("node_status"))
assert.Equal(t, "进行中", data.Get("status"))
assert.Equal(t, int64(2), data.Get("user_id"))
assert.Equal(t, true, data.Has("users"))
assert.Equal(t, "测试项目", data.Get("output.项目名称"))
assert.Equal(t, "林明波", data.Get("output.商务负责人名称"))
// 清理数据 // func TestNextWhen(t *testing.T) {
capsule.Query().From("xiang_workflow").Truncate() // assignFlow := Select("assign")
} // wflow := assignFlow.Save(1, "选择商务负责人", 1, Input{
// Data: map[string]interface{}{"id": 1, "name": "云主机"},
// Form: map[string]interface{}{"biz_id": 1, "name": "张良明"},
// })
// id := any.Of(wflow["id"]).CInt()
// assignFlow.Next(1, id, map[string]interface{}{
// "项目名称": "测试项目",
// "商务负责人名称": "林明波",
// })
func TestNextWhen(t *testing.T) { // // Next When
assignFlow := Select("assign") // wflow = assignFlow.Next(2, id, map[string]interface{}{"审批结果": "通过"})
wflow := assignFlow.Save(1, "选择商务负责人", 1, Input{ // data := maps.Of(wflow).Dot()
Data: map[string]interface{}{"id": 1, "name": "云主机"}, // assert.Equal(t, int64(1), data.Get("id"))
Form: map[string]interface{}{"biz_id": 1, "name": "张良明"}, // assert.Equal(t, "assign", data.Get("name"))
}) // assert.Equal(t, "审批通过", data.Get("node_name"))
id := any.Of(wflow["id"]).CInt() // assert.Equal(t, "进行中", data.Get("node_status"))
assignFlow.Next(1, id, map[string]interface{}{ // assert.Equal(t, "进行中", data.Get("status"))
"项目名称": "测试项目", // assert.Equal(t, int64(1), data.Get("user_id"))
"商务负责人名称": "林明波", // assert.Equal(t, true, data.Has("users"))
}) // assert.Equal(t, "测试项目", data.Get("output.项目名称"))
// assert.Equal(t, "林明波", data.Get("output.商务负责人名称"))
// assert.Equal(t, "通过", data.Get("output.审批结果"))
// Next When // // 清理数据
wflow = assignFlow.Next(2, id, map[string]interface{}{"审批结果": "通过"}) // capsule.Query().From("xiang_workflow").Truncate()
data := maps.Of(wflow).Dot() // }
assert.Equal(t, int64(1), data.Get("id"))
assert.Equal(t, "assign", data.Get("name"))
assert.Equal(t, "审批通过", data.Get("node_name"))
assert.Equal(t, "进行中", data.Get("node_status"))
assert.Equal(t, "进行中", data.Get("status"))
assert.Equal(t, int64(1), data.Get("user_id"))
assert.Equal(t, true, data.Has("users"))
assert.Equal(t, "测试项目", data.Get("output.项目名称"))
assert.Equal(t, "林明波", data.Get("output.商务负责人名称"))
assert.Equal(t, "通过", data.Get("output.审批结果"))
// 清理数据 // func TestGoto(t *testing.T) {
capsule.Query().From("xiang_workflow").Truncate() // assignFlow := Select("assign")
} // wflow := assignFlow.Save(1, "选择商务负责人", 1, Input{
// Data: map[string]interface{}{"id": 1, "name": "云主机"},
// Form: map[string]interface{}{"biz_id": 1, "name": "张良明"},
// })
// id := any.Of(wflow["id"]).CInt()
// assignFlow.Next(1, id, map[string]interface{}{
// "项目名称": "测试项目",
// "商务负责人名称": "林明波",
// })
func TestGoto(t *testing.T) { // wflow = assignFlow.Goto(2, id, "选择商务负责人", map[string]interface{}{"审批结果": "驳回"})
assignFlow := Select("assign") // data := maps.Of(wflow).Dot()
wflow := assignFlow.Save(1, "选择商务负责人", 1, Input{ // assert.Equal(t, true, data.Has("id"))
Data: map[string]interface{}{"id": 1, "name": "云主机"}, // assert.Equal(t, "assign", data.Get("name"))
Form: map[string]interface{}{"biz_id": 1, "name": "张良明"}, // assert.Equal(t, "选择商务负责人", data.Get("node_name"))
}) // assert.Equal(t, "进行中", data.Get("node_status"))
id := any.Of(wflow["id"]).CInt() // assert.Equal(t, "进行中", data.Get("status"))
assignFlow.Next(1, id, map[string]interface{}{ // assert.Equal(t, int64(1), data.Get("user_id"))
"项目名称": "测试项目", // assert.Equal(t, float64(1), data.Get("users.选择商务负责人"))
"商务负责人名称": "林明波", // assert.Equal(t, float64(2), data.Get("users.项目负责人审批"))
})
wflow = assignFlow.Goto(2, id, "选择商务负责人", map[string]interface{}{"审批结果": "驳回"}) // // 清理数据
data := maps.Of(wflow).Dot() // capsule.Query().From("xiang_workflow").Truncate()
assert.Equal(t, true, data.Has("id")) // }
assert.Equal(t, "assign", data.Get("name"))
assert.Equal(t, "选择商务负责人", data.Get("node_name"))
assert.Equal(t, "进行中", data.Get("node_status"))
assert.Equal(t, "进行中", data.Get("status"))
assert.Equal(t, int64(1), data.Get("user_id"))
assert.Equal(t, float64(1), data.Get("users.选择商务负责人"))
assert.Equal(t, float64(2), data.Get("users.项目负责人审批"))
// 清理数据 // func TestReset(t *testing.T) {
capsule.Query().From("xiang_workflow").Truncate() // assignFlow := Select("assign")
} // wflow := assignFlow.Save(1, "选择商务负责人", 1, Input{
// Data: map[string]interface{}{"id": 1, "name": "云主机"},
// Form: map[string]interface{}{"biz_id": 1, "name": "张良明"},
// })
// id := any.Of(wflow["id"]).CInt()
// assignFlow.Next(1, id, map[string]interface{}{
// "项目名称": "测试项目",
// "商务负责人名称": "林明波",
// })
func TestReset(t *testing.T) { // wflow = assignFlow.Reset(2, id, map[string]interface{}{"审批结果": "驳回"})
assignFlow := Select("assign") // data := maps.Of(wflow).Dot()
wflow := assignFlow.Save(1, "选择商务负责人", 1, Input{ // assert.Equal(t, true, data.Has("id"))
Data: map[string]interface{}{"id": 1, "name": "云主机"}, // assert.Equal(t, "assign", data.Get("name"))
Form: map[string]interface{}{"biz_id": 1, "name": "张良明"}, // assert.Equal(t, "选择商务负责人", data.Get("node_name"))
}) // assert.Equal(t, "进行中", data.Get("node_status"))
id := any.Of(wflow["id"]).CInt() // assert.Equal(t, "进行中", data.Get("status"))
assignFlow.Next(1, id, map[string]interface{}{ // assert.Equal(t, int64(1), data.Get("user_id"))
"项目名称": "测试项目", // assert.Equal(t, float64(1), data.Get("users.选择商务负责人"))
"商务负责人名称": "林明波", // assert.Equal(t, float64(2), data.Get("users.项目负责人审批"))
})
wflow = assignFlow.Reset(2, id, map[string]interface{}{"审批结果": "驳回"}) // // 清理数据
data := maps.Of(wflow).Dot() // capsule.Query().From("xiang_workflow").Truncate()
assert.Equal(t, true, data.Has("id")) // }
assert.Equal(t, "assign", data.Get("name"))
assert.Equal(t, "选择商务负责人", data.Get("node_name"))
assert.Equal(t, "进行中", data.Get("node_status"))
assert.Equal(t, "进行中", data.Get("status"))
assert.Equal(t, int64(1), data.Get("user_id"))
assert.Equal(t, float64(1), data.Get("users.选择商务负责人"))
assert.Equal(t, float64(2), data.Get("users.项目负责人审批"))
// 清理数据 // func TestDone(t *testing.T) {
capsule.Query().From("xiang_workflow").Truncate() // assignFlow := Select("assign")
} // wflow := assignFlow.Save(1, "选择商务负责人", 1, Input{
// Data: map[string]interface{}{"id": 1, "name": "云主机"},
// Form: map[string]interface{}{"biz_id": 1, "name": "张良明"},
// })
// id := any.Of(wflow["id"]).CInt()
// assignFlow.Next(1, id, map[string]interface{}{
// "项目名称": "测试项目",
// "商务负责人名称": "林明波",
// })
func TestDone(t *testing.T) { // wflow = assignFlow.Done(2, id, map[string]interface{}{"关闭原因": "测试完成"})
assignFlow := Select("assign") // data := maps.Of(wflow).Dot()
wflow := assignFlow.Save(1, "选择商务负责人", 1, Input{ // assert.Equal(t, "已完成", data.Get("status"))
Data: map[string]interface{}{"id": 1, "name": "云主机"}, // assert.Equal(t, "测试完成", data.Get("output.关闭原因"))
Form: map[string]interface{}{"biz_id": 1, "name": "张良明"}, // // 清理数据
}) // capsule.Query().From("xiang_workflow").Truncate()
id := any.Of(wflow["id"]).CInt() // }
assignFlow.Next(1, id, map[string]interface{}{
"项目名称": "测试项目",
"商务负责人名称": "林明波",
})
wflow = assignFlow.Done(2, id, map[string]interface{}{"关闭原因": "测试完成"}) // func TestClose(t *testing.T) {
data := maps.Of(wflow).Dot() // assignFlow := Select("assign")
assert.Equal(t, "已完成", data.Get("status")) // wflow := assignFlow.Save(1, "选择商务负责人", 1, Input{
assert.Equal(t, "测试完成", data.Get("output.关闭原因")) // Data: map[string]interface{}{"id": 1, "name": "云主机"},
// 清理数据 // Form: map[string]interface{}{"biz_id": 1, "name": "张良明"},
capsule.Query().From("xiang_workflow").Truncate() // })
} // id := any.Of(wflow["id"]).CInt()
// assignFlow.Next(1, id, map[string]interface{}{
// "项目名称": "测试项目",
// "商务负责人名称": "林明波",
// })
func TestClose(t *testing.T) { // wflow = assignFlow.Close(2, id, map[string]interface{}{"关闭原因": "测试关闭"})
assignFlow := Select("assign") // data := maps.Of(wflow).Dot()
wflow := assignFlow.Save(1, "选择商务负责人", 1, Input{ // assert.Equal(t, "已关闭", data.Get("status"))
Data: map[string]interface{}{"id": 1, "name": "云主机"}, // assert.Equal(t, "测试关闭", data.Get("output.关闭原因"))
Form: map[string]interface{}{"biz_id": 1, "name": "张良明"}, // // 清理数据
}) // capsule.Query().From("xiang_workflow").Truncate()
id := any.Of(wflow["id"]).CInt() // }
assignFlow.Next(1, id, map[string]interface{}{
"项目名称": "测试项目",
"商务负责人名称": "林明波",
})
wflow = assignFlow.Close(2, id, map[string]interface{}{"关闭原因": "测试关闭"}) // func TestSetting(t *testing.T) {
data := maps.Of(wflow).Dot() // assignFlow := Select("assign")
assert.Equal(t, "已关闭", data.Get("status")) // wflow := assignFlow.Save(1, "选择商务负责人", 1, Input{
assert.Equal(t, "测试关闭", data.Get("output.关闭原因")) // Data: map[string]interface{}{"id": 1, "name": "云主机"},
// 清理数据 // Form: map[string]interface{}{"biz_id": 1, "name": "张良明"},
capsule.Query().From("xiang_workflow").Truncate() // })
}
func TestSetting(t *testing.T) { // setting := assignFlow.Setting(1, 1)
assignFlow := Select("assign") // data := maps.Of(setting).Dot()
wflow := assignFlow.Save(1, "选择商务负责人", 1, Input{ // assert.Equal(t, true, data.Get("read"))
Data: map[string]interface{}{"id": 1, "name": "云主机"}, // assert.Equal(t, "选择商务负责人", data.Get("node.label"))
Form: map[string]interface{}{"biz_id": 1, "name": "张良明"}, // assert.Equal(t, true, data.Get("write"))
})
setting := assignFlow.Setting(1, 1) // id := any.Of(wflow["id"]).CInt()
data := maps.Of(setting).Dot() // assignFlow.Next(1, id, map[string]interface{}{
assert.Equal(t, true, data.Get("read")) // "项目名称": "测试项目",
assert.Equal(t, "选择商务负责人", data.Get("node.label")) // "商务负责人名称": "林明波",
assert.Equal(t, true, data.Get("write")) // })
id := any.Of(wflow["id"]).CInt() // setting = assignFlow.Setting(1, 1)
assignFlow.Next(1, id, map[string]interface{}{ // data = maps.Of(setting).Dot()
"项目名称": "测试项目", // assert.Equal(t, true, data.Get("read"))
"商务负责人名称": "林明波", // assert.Equal(t, false, data.Get("write"))
}) // assert.Equal(t, "项目负责人审批", data.Get("node.label"))
// assert.Equal(t, 2, data.Get("nodes.2.source"))
// assert.Equal(t, 2, data.Get("nodes.3.source"))
// assert.Equal(t, "assign", data.Get("name"))
// assert.Equal(t, "指派商务负责人", data.Get("label"))
setting = assignFlow.Setting(1, 1) // // 清理数据
data = maps.Of(setting).Dot() // capsule.Query().From("xiang_workflow").Truncate()
assert.Equal(t, true, data.Get("read")) // }
assert.Equal(t, false, data.Get("write"))
assert.Equal(t, "项目负责人审批", data.Get("node.label"))
assert.Equal(t, 2, data.Get("nodes.2.source"))
assert.Equal(t, 2, data.Get("nodes.3.source"))
assert.Equal(t, "assign", data.Get("name"))
assert.Equal(t, "指派商务负责人", data.Get("label"))
// 清理数据 // func check(t *testing.T) {
capsule.Query().From("xiang_workflow").Truncate() // keys := []string{}
} // for key, workflow := range WorkFlows {
// keys = append(keys, key)
func check(t *testing.T) { // workflow.Reload()
keys := []string{} // }
for key, workflow := range WorkFlows { // assert.Equal(t, 1, len(keys))
keys = append(keys, key) // }
workflow.Reload()
}
assert.Equal(t, 1, len(keys))
}

View file

@ -1,16 +1,9 @@
package xfs package xfs
import ( import (
"fmt"
"os" "os"
"strings"
"testing" "testing"
"time"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
"github.com/stretchr/testify/assert"
"github.com/yaoapp/gou"
"github.com/yaoapp/kun/any"
"github.com/yaoapp/yao/share" "github.com/yaoapp/yao/share"
) )
@ -30,31 +23,33 @@ func init() {
} }
func TestProcessGetToken(t *testing.T) { func TestProcessGetToken(t *testing.T) {
args := []interface{}{"oss"} // the oss support will be using new process
process := gou.NewProcess("xiang.fs.GetToken", args...)
response := processGetToken(process)
assert.NotNil(t, response)
res := any.Of(response).Map()
assert.True(t, res.Has("AccessKeyId"))
assert.True(t, res.Has("AccessKeySecret"))
assert.True(t, res.Has("Expiration"))
assert.True(t, res.Has("SecurityToken"))
assert.True(t, res.Has("Endpoint"))
// 使用token // args := []interface{}{"oss"}
client, err := oss.New( // process := gou.NewProcess("xiang.fs.GetToken", args...)
res.Get("Endpoint").(string), // response := processGetToken(process)
res.Get("AccessKeyId").(string), // assert.NotNil(t, response)
res.Get("AccessKeySecret").(string), // res := any.Of(response).Map()
oss.SecurityToken(res.Get("SecurityToken").(string)), // assert.True(t, res.Has("AccessKeyId"))
) // assert.True(t, res.Has("AccessKeySecret"))
assert.Nil(t, err) // assert.True(t, res.Has("Expiration"))
// assert.True(t, res.Has("SecurityToken"))
// assert.True(t, res.Has("Endpoint"))
bucket, err := client.Bucket("image-appcook") // // 使用token
assert.Nil(t, err) // client, err := oss.New(
// res.Get("Endpoint").(string),
// res.Get("AccessKeyId").(string),
// res.Get("AccessKeySecret").(string),
// oss.SecurityToken(res.Get("SecurityToken").(string)),
// )
// assert.Nil(t, err)
// 上传字符串。 // bucket, err := client.Bucket("image-appcook")
now := fmt.Sprintf("%d", time.Now().UnixNano()) // assert.Nil(t, err)
err = bucket.PutObject("xiang/unit-test."+now+".txt", strings.NewReader(now))
assert.Nil(t, err) // // 上传字符串。
// now := fmt.Sprintf("%d", time.Now().UnixNano())
// err = bucket.PutObject("xiang/unit-test."+now+".txt", strings.NewReader(now))
// assert.Nil(t, err)
} }