[change] unit-tests workflow & remove OSS support
This commit is contained in:
parent
2e1ef3ecb2
commit
f66d6bc4ac
10 changed files with 508 additions and 542 deletions
10
.github/workflows/unit-test.yml
vendored
10
.github/workflows/unit-test.yml
vendored
|
|
@ -1,6 +1,10 @@
|
|||
name: UnitTest
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
tags:
|
||||
description: "Comment"
|
||||
push:
|
||||
branches: [main]
|
||||
|
||||
|
|
@ -40,19 +44,19 @@ jobs:
|
|||
- name: Checkout Kun
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
repository: yaoapp/kun
|
||||
repository: ${{ github.event.org.login }}/kun
|
||||
path: kun
|
||||
|
||||
- name: Checkout Xun
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
repository: yaoapp/xun
|
||||
repository: ${{ github.event.org.login }}/xun
|
||||
path: xun
|
||||
|
||||
- name: Checkout Gou
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
repository: yaoapp/gou
|
||||
repository: ${{ github.event.org.login }}/gou
|
||||
path: gou
|
||||
|
||||
- name: Checkout V8Go
|
||||
|
|
|
|||
3
.gitignore
vendored
3
.gitignore
vendored
|
|
@ -19,7 +19,7 @@
|
|||
dist
|
||||
ui
|
||||
^ui/index.html
|
||||
tests/data/*/*
|
||||
tests/data/*
|
||||
debug.log
|
||||
yao-test
|
||||
dev.sh
|
||||
|
|
@ -27,3 +27,4 @@ logs
|
|||
logs/application.log
|
||||
yao-arm64
|
||||
tests/db/yao.db
|
||||
env.*.sh
|
||||
4
go.mod
4
go.mod
|
|
@ -4,7 +4,6 @@ go 1.18
|
|||
|
||||
require (
|
||||
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/elazarl/go-bindata-assetfs v1.0.1
|
||||
github.com/fatih/color v1.13.0
|
||||
|
|
@ -26,7 +25,6 @@ require (
|
|||
|
||||
require (
|
||||
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/cespare/xxhash/v2 v2.1.2 // 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/msoleps v1.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/spf13/pflag v1.0.5 // 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/sys v0.0.0-20220520151302-bc2c85ada10a // 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/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect
|
||||
google.golang.org/genproto v0.0.0-20220526192754-51939a95c655 // indirect
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
# Golang 插件
|
||||
|
|
@ -1,17 +1,12 @@
|
|||
package workflow
|
||||
|
||||
import (
|
||||
"testing"
|
||||
// Workflow will be removed from engine
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/yaoapp/gou"
|
||||
)
|
||||
// func TestSetupAPIs(t *testing.T) {
|
||||
// assignFlow := Select("assign")
|
||||
// assignFlow.SetupAPIs()
|
||||
|
||||
func TestSetupAPIs(t *testing.T) {
|
||||
assignFlow := Select("assign")
|
||||
assignFlow.SetupAPIs()
|
||||
|
||||
api := gou.SelectAPI("xiang.workflow.assign")
|
||||
assert.Equal(t, "xiang.workflow.assign", api.Name)
|
||||
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))
|
||||
// }
|
||||
|
|
|
|||
|
|
@ -2,6 +2,8 @@ package workflow
|
|||
|
||||
import "github.com/yaoapp/gou"
|
||||
|
||||
// WARNING: the Workflow widget will be removed from yao engine
|
||||
|
||||
// Process
|
||||
// 读取工作流 xiang.workflow.Find(name, workflow_id)
|
||||
// 读取工作流 xiang.workflow.Open(name, uid, data_id)
|
||||
|
|
|
|||
|
|
@ -1,247 +1,233 @@
|
|||
package workflow
|
||||
|
||||
import (
|
||||
"os"
|
||||
"path"
|
||||
"testing"
|
||||
// WARNING: the Workflow widget will be removed from yao engine
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/yaoapp/gou"
|
||||
"github.com/yaoapp/kun/any"
|
||||
"github.com/yaoapp/xun/capsule"
|
||||
"github.com/yaoapp/yao/config"
|
||||
"github.com/yaoapp/yao/flow"
|
||||
"github.com/yaoapp/yao/model"
|
||||
"github.com/yaoapp/yao/query"
|
||||
"github.com/yaoapp/yao/share"
|
||||
)
|
||||
// func init() {
|
||||
// share.DBConnect(config.Conf.DB)
|
||||
// share.Load(config.Conf)
|
||||
// model.Load(config.Conf)
|
||||
// engineModels := path.Join(os.Getenv("YAO_DEV"), "yao", "models")
|
||||
// model.LoadFrom(engineModels, "xiang.")
|
||||
// query.Load(config.Conf)
|
||||
// flow.Load(config.Conf)
|
||||
// Load(config.Conf)
|
||||
// }
|
||||
|
||||
func init() {
|
||||
share.DBConnect(config.Conf.DB)
|
||||
share.Load(config.Conf)
|
||||
model.Load(config.Conf)
|
||||
engineModels := path.Join(os.Getenv("YAO_DEV"), "yao", "models")
|
||||
model.LoadFrom(engineModels, "xiang.")
|
||||
query.Load(config.Conf)
|
||||
flow.Load(config.Conf)
|
||||
Load(config.Conf)
|
||||
}
|
||||
// func TestProcessFind(t *testing.T) {
|
||||
// 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 TestProcessFind(t *testing.T) {
|
||||
assignFlow := Select("assign")
|
||||
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"]}
|
||||
// res := gou.NewProcess("xiang.workflow.Find", args...).Run()
|
||||
|
||||
args := []interface{}{"assign", wflow["id"]}
|
||||
res := gou.NewProcess("xiang.workflow.Find", args...).Run()
|
||||
// data := any.Of(res).Map().MapStrAny.Dot()
|
||||
// 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()
|
||||
// }
|
||||
|
||||
// 清理数据
|
||||
capsule.Query().From("xiang_workflow").Truncate()
|
||||
}
|
||||
// func TestProcessSetting(t *testing.T) {
|
||||
// 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) {
|
||||
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{}{
|
||||
"项目名称": "测试项目",
|
||||
"商务负责人名称": "林明波",
|
||||
})
|
||||
// args := []interface{}{"assign", 1, 1}
|
||||
// res := gou.NewProcess("xiang.workflow.Setting", args...).Run()
|
||||
// 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"))
|
||||
|
||||
args := []interface{}{"assign", 1, 1}
|
||||
res := gou.NewProcess("xiang.workflow.Setting", args...).Run()
|
||||
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"))
|
||||
// // 清理数据
|
||||
// capsule.Query().From("xiang_workflow").Truncate()
|
||||
// }
|
||||
|
||||
// 清理数据
|
||||
capsule.Query().From("xiang_workflow").Truncate()
|
||||
}
|
||||
// func TestProcessOpen(t *testing.T) {
|
||||
// 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) {
|
||||
assignFlow := Select("assign")
|
||||
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}
|
||||
// res := gou.NewProcess("xiang.workflow.Open", args...).Run()
|
||||
|
||||
args := []interface{}{"assign", 1, 1}
|
||||
res := gou.NewProcess("xiang.workflow.Open", args...).Run()
|
||||
// data := any.Of(res).Map().MapStrAny.Dot()
|
||||
// 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()
|
||||
// }
|
||||
|
||||
// 清理数据
|
||||
capsule.Query().From("xiang_workflow").Truncate()
|
||||
}
|
||||
// func TestProcessSave(t *testing.T) {
|
||||
// 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",
|
||||
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"))
|
||||
// // 清理数据
|
||||
// capsule.Query().From("xiang_workflow").Truncate()
|
||||
// }
|
||||
|
||||
// 清理数据
|
||||
capsule.Query().From("xiang_workflow").Truncate()
|
||||
}
|
||||
// func TestProcessNext(t *testing.T) {
|
||||
// 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) {
|
||||
assignFlow := Select("assign")
|
||||
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, wflow["id"], map[string]interface{}{
|
||||
// "项目名称": "测试项目",
|
||||
// "商务负责人名称": "林明波",
|
||||
// },
|
||||
// }
|
||||
// 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{}{
|
||||
"项目名称": "测试项目",
|
||||
"商务负责人名称": "林明波",
|
||||
},
|
||||
}
|
||||
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"))
|
||||
// // 清理数据
|
||||
// capsule.Query().From("xiang_workflow").Truncate()
|
||||
// }
|
||||
|
||||
// 清理数据
|
||||
capsule.Query().From("xiang_workflow").Truncate()
|
||||
}
|
||||
// func TestProcessGoto(t *testing.T) {
|
||||
// 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) {
|
||||
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{}{
|
||||
"项目名称": "测试项目",
|
||||
"商务负责人名称": "林明波",
|
||||
})
|
||||
// args := []interface{}{"assign",
|
||||
// 2, id, "选择商务负责人",
|
||||
// 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"))
|
||||
|
||||
args := []interface{}{"assign",
|
||||
2, id, "选择商务负责人",
|
||||
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"))
|
||||
// // 清理数据
|
||||
// capsule.Query().From("xiang_workflow").Truncate()
|
||||
// }
|
||||
|
||||
// 清理数据
|
||||
capsule.Query().From("xiang_workflow").Truncate()
|
||||
}
|
||||
// func TestProcessStatus(t *testing.T) {
|
||||
// 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) {
|
||||
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{}{
|
||||
"项目名称": "测试项目",
|
||||
"商务负责人名称": "林明波",
|
||||
})
|
||||
// args := []interface{}{"assign",
|
||||
// 2, id, "已完成", map[string]interface{}{"关闭原因": "测试完成"},
|
||||
// }
|
||||
// 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"))
|
||||
|
||||
args := []interface{}{"assign",
|
||||
2, id, "已完成", map[string]interface{}{"关闭原因": "测试完成"},
|
||||
}
|
||||
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"))
|
||||
// // 清理数据
|
||||
// capsule.Query().From("xiang_workflow").Truncate()
|
||||
// }
|
||||
|
||||
// 清理数据
|
||||
capsule.Query().From("xiang_workflow").Truncate()
|
||||
}
|
||||
// func TestProcessDone(t *testing.T) {
|
||||
// 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) {
|
||||
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{}{
|
||||
"项目名称": "测试项目",
|
||||
"商务负责人名称": "林明波",
|
||||
})
|
||||
// args := []interface{}{"assign",
|
||||
// 2, id, map[string]interface{}{"关闭原因": "测试完成"},
|
||||
// }
|
||||
// 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"))
|
||||
|
||||
args := []interface{}{"assign",
|
||||
2, id, map[string]interface{}{"关闭原因": "测试完成"},
|
||||
}
|
||||
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"))
|
||||
// // 清理数据
|
||||
// capsule.Query().From("xiang_workflow").Truncate()
|
||||
// }
|
||||
|
||||
// 清理数据
|
||||
capsule.Query().From("xiang_workflow").Truncate()
|
||||
}
|
||||
// func TestProcessClose(t *testing.T) {
|
||||
// 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) {
|
||||
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{}{
|
||||
"项目名称": "测试项目",
|
||||
"商务负责人名称": "林明波",
|
||||
})
|
||||
// args := []interface{}{"assign",
|
||||
// 2, id, map[string]interface{}{"关闭原因": "测试关闭"},
|
||||
// }
|
||||
// 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"))
|
||||
|
||||
args := []interface{}{"assign",
|
||||
2, id, map[string]interface{}{"关闭原因": "测试关闭"},
|
||||
}
|
||||
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"))
|
||||
// // 清理数据
|
||||
// capsule.Query().From("xiang_workflow").Truncate()
|
||||
// }
|
||||
|
||||
// 清理数据
|
||||
capsule.Query().From("xiang_workflow").Truncate()
|
||||
}
|
||||
// func TestProcessReset(t *testing.T) {
|
||||
// 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) {
|
||||
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{}{
|
||||
"项目名称": "测试项目",
|
||||
"商务负责人名称": "林明波",
|
||||
})
|
||||
// args := []interface{}{"assign",
|
||||
// 2, id, map[string]interface{}{"驳回原因": "字段填写错误"},
|
||||
// }
|
||||
// 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"))
|
||||
|
||||
args := []interface{}{"assign",
|
||||
2, id, map[string]interface{}{"驳回原因": "字段填写错误"},
|
||||
}
|
||||
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()
|
||||
}
|
||||
// // 清理数据
|
||||
// capsule.Query().From("xiang_workflow").Truncate()
|
||||
// }
|
||||
|
|
|
|||
|
|
@ -18,6 +18,8 @@ import (
|
|||
"github.com/yaoapp/yao/share"
|
||||
)
|
||||
|
||||
// WARNING: the Workflow widget will be removed from yao engine
|
||||
|
||||
// Process
|
||||
// 读取工作流 xiang.workflow.Find(name, workflow_id)
|
||||
// 读取工作流 xiang.workflow.Open(name, uid, data_id)
|
||||
|
|
|
|||
|
|
@ -1,310 +1,296 @@
|
|||
package workflow
|
||||
|
||||
import (
|
||||
"os"
|
||||
"path"
|
||||
"testing"
|
||||
// WARNING: the Workflow widget will be removed from yao engine
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/yaoapp/kun/any"
|
||||
"github.com/yaoapp/kun/maps"
|
||||
"github.com/yaoapp/xun/capsule"
|
||||
"github.com/yaoapp/yao/config"
|
||||
"github.com/yaoapp/yao/flow"
|
||||
"github.com/yaoapp/yao/model"
|
||||
"github.com/yaoapp/yao/query"
|
||||
"github.com/yaoapp/yao/share"
|
||||
)
|
||||
// func init() {
|
||||
// share.DBConnect(config.Conf.DB)
|
||||
// share.Load(config.Conf)
|
||||
// model.Load(config.Conf)
|
||||
// engineModels := path.Join(os.Getenv("YAO_DEV"), "xiang", "models")
|
||||
// model.LoadFrom(engineModels, "xiang.")
|
||||
// query.Load(config.Conf)
|
||||
// flow.Load(config.Conf)
|
||||
// Load(config.Conf)
|
||||
// }
|
||||
|
||||
func init() {
|
||||
share.DBConnect(config.Conf.DB)
|
||||
share.Load(config.Conf)
|
||||
model.Load(config.Conf)
|
||||
engineModels := path.Join(os.Getenv("YAO_DEV"), "xiang", "models")
|
||||
model.LoadFrom(engineModels, "xiang.")
|
||||
query.Load(config.Conf)
|
||||
flow.Load(config.Conf)
|
||||
Load(config.Conf)
|
||||
}
|
||||
// func TestLoad(t *testing.T) {
|
||||
// share.DBConnect(config.Conf.DB)
|
||||
// share.Load(config.Conf)
|
||||
// model.Load(config.Conf)
|
||||
// query.Load(config.Conf)
|
||||
// Load(config.Conf)
|
||||
// LoadFrom("not a path", "404.")
|
||||
// check(t)
|
||||
// }
|
||||
|
||||
func TestLoad(t *testing.T) {
|
||||
share.DBConnect(config.Conf.DB)
|
||||
share.Load(config.Conf)
|
||||
model.Load(config.Conf)
|
||||
query.Load(config.Conf)
|
||||
Load(config.Conf)
|
||||
LoadFrom("not a path", "404.")
|
||||
check(t)
|
||||
}
|
||||
// func TestSave(t *testing.T) {
|
||||
// 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 TestSave(t *testing.T) {
|
||||
assignFlow := Select("assign")
|
||||
wflow := assignFlow.Save(1, "选择商务负责人", 1, Input{
|
||||
Data: map[string]interface{}{"id": 1, "name": "云主机"},
|
||||
Form: map[string]interface{}{"biz_id": 1, "name": "张良明"},
|
||||
})
|
||||
// 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, 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()
|
||||
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, 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) {
|
||||
// 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 TestSaveUpdate(t *testing.T) {
|
||||
assignFlow := Select("assign")
|
||||
wflow := assignFlow.Save(1, "选择商务负责人", 1, Input{
|
||||
Data: map[string]interface{}{"id": 1, "name": "云主机"},
|
||||
Form: map[string]interface{}{"biz_id": 1, "name": "张良明"},
|
||||
})
|
||||
// wflow = assignFlow.Save(1, "选择商务负责人", 1, Input{
|
||||
// Data: map[string]interface{}{"id": 1, "name": "云存储"},
|
||||
// Form: map[string]interface{}{"biz_id": 1, "name": "李明博"},
|
||||
// })
|
||||
|
||||
wflow = assignFlow.Save(1, "选择商务负责人", 1, Input{
|
||||
Data: map[string]interface{}{"id": 1, "name": "云存储"},
|
||||
Form: map[string]interface{}{"biz_id": 1, "name": "李明博"},
|
||||
})
|
||||
// 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, 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"))
|
||||
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"))
|
||||
// // 清理数据
|
||||
// capsule.Query().From("xiang_workflow").Truncate()
|
||||
// }
|
||||
|
||||
// 清理数据
|
||||
capsule.Query().From("xiang_workflow").Truncate()
|
||||
}
|
||||
// func TestOpen(t *testing.T) {
|
||||
// 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")
|
||||
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.选择商务负责人"))
|
||||
// // 清理数据
|
||||
// capsule.Query().From("xiang_workflow").Truncate()
|
||||
// }
|
||||
|
||||
// 清理数据
|
||||
capsule.Query().From("xiang_workflow").Truncate()
|
||||
}
|
||||
// func TestOpenEmpty(t *testing.T) {
|
||||
// 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) {
|
||||
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 TestNext(t *testing.T) {
|
||||
// assignFlow := Select("assign")
|
||||
// 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 TestNext(t *testing.T) {
|
||||
assignFlow := Select("assign")
|
||||
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.商务负责人名称"))
|
||||
// // 清理数据
|
||||
// capsule.Query().From("xiang_workflow").Truncate()
|
||||
// }
|
||||
|
||||
// 清理数据
|
||||
capsule.Query().From("xiang_workflow").Truncate()
|
||||
}
|
||||
// func TestNextWhen(t *testing.T) {
|
||||
// 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) {
|
||||
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{}{
|
||||
"项目名称": "测试项目",
|
||||
"商务负责人名称": "林明波",
|
||||
})
|
||||
// // Next When
|
||||
// wflow = assignFlow.Next(2, id, 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(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{}{"审批结果": "通过"})
|
||||
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.审批结果"))
|
||||
// // 清理数据
|
||||
// capsule.Query().From("xiang_workflow").Truncate()
|
||||
// }
|
||||
|
||||
// 清理数据
|
||||
capsule.Query().From("xiang_workflow").Truncate()
|
||||
}
|
||||
// func TestGoto(t *testing.T) {
|
||||
// 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) {
|
||||
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{}{
|
||||
"项目名称": "测试项目",
|
||||
"商务负责人名称": "林明波",
|
||||
})
|
||||
// wflow = assignFlow.Goto(2, id, "选择商务负责人", map[string]interface{}{"审批结果": "驳回"})
|
||||
// data := maps.Of(wflow).Dot()
|
||||
// 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.项目负责人审批"))
|
||||
|
||||
wflow = assignFlow.Goto(2, id, "选择商务负责人", map[string]interface{}{"审批结果": "驳回"})
|
||||
data := maps.Of(wflow).Dot()
|
||||
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.项目负责人审批"))
|
||||
// // 清理数据
|
||||
// capsule.Query().From("xiang_workflow").Truncate()
|
||||
// }
|
||||
|
||||
// 清理数据
|
||||
capsule.Query().From("xiang_workflow").Truncate()
|
||||
}
|
||||
// func TestReset(t *testing.T) {
|
||||
// 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) {
|
||||
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{}{
|
||||
"项目名称": "测试项目",
|
||||
"商务负责人名称": "林明波",
|
||||
})
|
||||
// wflow = assignFlow.Reset(2, id, map[string]interface{}{"审批结果": "驳回"})
|
||||
// data := maps.Of(wflow).Dot()
|
||||
// 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.项目负责人审批"))
|
||||
|
||||
wflow = assignFlow.Reset(2, id, map[string]interface{}{"审批结果": "驳回"})
|
||||
data := maps.Of(wflow).Dot()
|
||||
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.项目负责人审批"))
|
||||
// // 清理数据
|
||||
// capsule.Query().From("xiang_workflow").Truncate()
|
||||
// }
|
||||
|
||||
// 清理数据
|
||||
capsule.Query().From("xiang_workflow").Truncate()
|
||||
}
|
||||
// func TestDone(t *testing.T) {
|
||||
// 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) {
|
||||
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{}{
|
||||
"项目名称": "测试项目",
|
||||
"商务负责人名称": "林明波",
|
||||
})
|
||||
// wflow = assignFlow.Done(2, id, map[string]interface{}{"关闭原因": "测试完成"})
|
||||
// data := maps.Of(wflow).Dot()
|
||||
// assert.Equal(t, "已完成", data.Get("status"))
|
||||
// assert.Equal(t, "测试完成", data.Get("output.关闭原因"))
|
||||
// // 清理数据
|
||||
// capsule.Query().From("xiang_workflow").Truncate()
|
||||
// }
|
||||
|
||||
wflow = assignFlow.Done(2, id, map[string]interface{}{"关闭原因": "测试完成"})
|
||||
data := maps.Of(wflow).Dot()
|
||||
assert.Equal(t, "已完成", data.Get("status"))
|
||||
assert.Equal(t, "测试完成", data.Get("output.关闭原因"))
|
||||
// 清理数据
|
||||
capsule.Query().From("xiang_workflow").Truncate()
|
||||
}
|
||||
// func TestClose(t *testing.T) {
|
||||
// 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 TestClose(t *testing.T) {
|
||||
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{}{
|
||||
"项目名称": "测试项目",
|
||||
"商务负责人名称": "林明波",
|
||||
})
|
||||
// wflow = assignFlow.Close(2, id, map[string]interface{}{"关闭原因": "测试关闭"})
|
||||
// data := maps.Of(wflow).Dot()
|
||||
// assert.Equal(t, "已关闭", data.Get("status"))
|
||||
// assert.Equal(t, "测试关闭", data.Get("output.关闭原因"))
|
||||
// // 清理数据
|
||||
// capsule.Query().From("xiang_workflow").Truncate()
|
||||
// }
|
||||
|
||||
wflow = assignFlow.Close(2, id, map[string]interface{}{"关闭原因": "测试关闭"})
|
||||
data := maps.Of(wflow).Dot()
|
||||
assert.Equal(t, "已关闭", data.Get("status"))
|
||||
assert.Equal(t, "测试关闭", data.Get("output.关闭原因"))
|
||||
// 清理数据
|
||||
capsule.Query().From("xiang_workflow").Truncate()
|
||||
}
|
||||
// func TestSetting(t *testing.T) {
|
||||
// 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 TestSetting(t *testing.T) {
|
||||
assignFlow := Select("assign")
|
||||
wflow := assignFlow.Save(1, "选择商务负责人", 1, Input{
|
||||
Data: map[string]interface{}{"id": 1, "name": "云主机"},
|
||||
Form: map[string]interface{}{"biz_id": 1, "name": "张良明"},
|
||||
})
|
||||
// setting := assignFlow.Setting(1, 1)
|
||||
// data := maps.Of(setting).Dot()
|
||||
// assert.Equal(t, true, data.Get("read"))
|
||||
// assert.Equal(t, "选择商务负责人", data.Get("node.label"))
|
||||
// assert.Equal(t, true, data.Get("write"))
|
||||
|
||||
setting := assignFlow.Setting(1, 1)
|
||||
data := maps.Of(setting).Dot()
|
||||
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()
|
||||
// assignFlow.Next(1, id, map[string]interface{}{
|
||||
// "项目名称": "测试项目",
|
||||
// "商务负责人名称": "林明波",
|
||||
// })
|
||||
|
||||
id := any.Of(wflow["id"]).CInt()
|
||||
assignFlow.Next(1, id, map[string]interface{}{
|
||||
"项目名称": "测试项目",
|
||||
"商务负责人名称": "林明波",
|
||||
})
|
||||
// setting = assignFlow.Setting(1, 1)
|
||||
// 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()
|
||||
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"))
|
||||
// // 清理数据
|
||||
// capsule.Query().From("xiang_workflow").Truncate()
|
||||
// }
|
||||
|
||||
// 清理数据
|
||||
capsule.Query().From("xiang_workflow").Truncate()
|
||||
}
|
||||
|
||||
func check(t *testing.T) {
|
||||
keys := []string{}
|
||||
for key, workflow := range WorkFlows {
|
||||
keys = append(keys, key)
|
||||
workflow.Reload()
|
||||
}
|
||||
assert.Equal(t, 1, len(keys))
|
||||
}
|
||||
// func check(t *testing.T) {
|
||||
// keys := []string{}
|
||||
// for key, workflow := range WorkFlows {
|
||||
// keys = append(keys, key)
|
||||
// workflow.Reload()
|
||||
// }
|
||||
// assert.Equal(t, 1, len(keys))
|
||||
// }
|
||||
|
|
|
|||
|
|
@ -1,16 +1,9 @@
|
|||
package xfs
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"strings"
|
||||
"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"
|
||||
)
|
||||
|
||||
|
|
@ -30,31 +23,33 @@ func init() {
|
|||
}
|
||||
func TestProcessGetToken(t *testing.T) {
|
||||
|
||||
args := []interface{}{"oss"}
|
||||
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"))
|
||||
// the oss support will be using new process
|
||||
|
||||
// 使用token
|
||||
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)
|
||||
// args := []interface{}{"oss"}
|
||||
// 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"))
|
||||
|
||||
bucket, err := client.Bucket("image-appcook")
|
||||
assert.Nil(t, err)
|
||||
// // 使用token
|
||||
// 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)
|
||||
|
||||
// 上传字符串。
|
||||
now := fmt.Sprintf("%d", time.Now().UnixNano())
|
||||
err = bucket.PutObject("xiang/unit-test."+now+".txt", strings.NewReader(now))
|
||||
assert.Nil(t, err)
|
||||
// bucket, err := client.Bucket("image-appcook")
|
||||
// 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)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue