|
|
- package container
-
- import (
- "errors"
- "fmt"
- "leit.com/LAPP_CHEERSSON_BACKEND/global"
- "reflect"
- "testing"
- )
-
- func TestServiceMethodInformation_New(t *testing.T) {
-
- methodName := "String"
- method, ok := testServiceType.MethodByName(methodName)
- if !ok {
- t.Fatalf("意外的没找到方法!")
- }
- serviceMethodInformation := NewServiceMethodInformation(&method)
- if serviceMethodInformation == nil {
- t.Fatalf("创建失败!")
- }
- if serviceMethodInformation.methodName != methodName {
- t.Fatalf("方法名设置错误!")
- }
- if serviceMethodInformation.methodType != method.Type {
- t.Fatalf("方法类型设置错误!")
- }
- if serviceMethodInformation.routerBuilder != nil {
- t.Fatalf("路由创建器设置错误!")
- }
- if serviceMethodInformation.callerBrokerBuilders == nil {
- t.Fatalf("调用器代理创建器列表设置错误!")
- }
- if len(serviceMethodInformation.callerBrokerBuilders) != 1 {
- t.Fatalf("调用器代理创建器列表数量错误!")
- }
- }
-
- func TestServiceMethodInformation_New_NullError(t *testing.T) {
- defer func() {
- if err := recover(); err != "方法类型不能为空!" {
- t.Fatalf("意外错误:%s", err)
- }
- }()
-
- _ = NewServiceMethodInformation(nil)
- t.Fatalf("意外的没有错误!")
- }
-
- func TestServiceMethodInformation_New_EmptyMethodName(t *testing.T) {
- defer func() {
- if err := recover(); err != "方法名不能为空!" {
- t.Fatalf("意外错误:%s", err)
- }
- }()
-
- method := reflect.Method{Name: "", Type: nil}
- _ = NewServiceMethodInformation(&method)
- t.Fatalf("意外的没有错误!")
- }
-
- func TestServiceMethodInformation_New_ReturnValuesCountError(t *testing.T) {
-
- methodName := "String2"
- method, ok := testServiceType.MethodByName(methodName)
- if !ok {
- t.Fatalf("意外的没找到方法!")
- }
- defer func() {
- if err := recover(); err != fmt.Sprintf("返回值数量错误! 返回值数量: %d", method.Type.NumOut()) {
- t.Fatalf("意外错误:%s", err)
- }
- }()
- _ = NewServiceMethodInformation(&method)
- t.Fatalf("意外的没有错误!")
- }
-
- func TestServiceMethodInformation_New_ReturnValueTypeError(t *testing.T) {
-
- methodName := "NoError"
- method, ok := testServiceType.MethodByName(methodName)
- if !ok {
- t.Fatalf("意外的没找到方法!")
- }
- defer func() {
- if err := recover(); err != fmt.Sprintf("最后一个返回值类型错误! 类型:%s", method.Type.Out(method.Type.NumOut()-1)) {
- t.Fatalf("意外错误:%s", err)
- }
- }()
- _ = NewServiceMethodInformation(&method)
- t.Fatalf("意外的没有错误!")
- }
-
- func TestServiceMethodInformation_MethodName(t *testing.T) {
-
- methodName := "String"
- method, ok := testServiceType.MethodByName(methodName)
- if !ok {
- t.Fatalf("意外的没找到方法!")
- }
- information := NewServiceMethodInformation(&method)
- information.methodName = methodName
- if information.MethodName() != methodName {
- t.Fatalf("方法名获取错误!")
- }
- }
-
- func TestServiceMethodInformation_MethodType(t *testing.T) {
-
- methodName := "String"
- method, ok := testServiceType.MethodByName(methodName)
- if !ok {
- t.Fatalf("意外的没找到方法!")
- }
- information := NewServiceMethodInformation(&method)
- information.methodType = method.Type
- if information.MethodType() != method.Type {
- t.Fatalf("方法类型获取错误!")
- }
- }
-
- func TestServiceMethodInformation_RouterBuilder(t *testing.T) {
-
- methodName := "String"
- method, ok := testServiceType.MethodByName(methodName)
- if !ok {
- t.Fatalf("意外的没找到方法!")
- }
- information := NewServiceMethodInformation(&method)
- testError := errors.New("TestError")
- var routerBuilder = func(CallerFactory, string, reflect.Type) (HttpMethod, string, Router, error) {
- return "", "", "", testError
- }
- information.routerBuilder = routerBuilder
- storedRouterBuilder := information.RouterBuilder()
- if storedRouterBuilder == nil {
- t.Fatalf("获取到的路由创建器不应为空!")
- }
- _, _, _, testError2 := storedRouterBuilder(nil, "", nil)
- if testError2 != testError {
- t.Fatalf("路由创建器获取错误!")
- }
- }
-
- func TestServiceMethodInformation_AppendBrokerBuilder(t *testing.T) {
-
- methodName := "String"
- method, ok := testServiceType.MethodByName(methodName)
- if !ok {
- t.Fatalf("意外的没找到方法!")
- }
- information := NewServiceMethodInformation(&method)
- if information == nil {
- t.Fatalf("没找到信息")
- }
- var callerBrokerBuilder CallerBrokerBuilder = new(TestCallerBrokerBuilderImplement)
- information.AppendBrokerBuilder(callerBrokerBuilder)
- expectedLength := 2
- if len(information.callerBrokerBuilders) != expectedLength {
- t.Fatalf("调用器代理创建器数量错误!预期:%d,实际:%d.", expectedLength, len(information.callerBrokerBuilders))
- }
- if information.callerBrokerBuilders[1] != callerBrokerBuilder {
- t.Fatalf("调用器代理创建器设置错误!")
- }
- }
-
- func TestServiceMethodInformation_AppendBrokerBuilder_NullError(t *testing.T) {
-
- methodName := "String"
- method, ok := testServiceType.MethodByName(methodName)
- if !ok {
- t.Fatalf("意外的没找到方法!")
- }
- information := NewServiceMethodInformation(&method)
- defer func() {
- if err := recover(); err != fmt.Sprintf("调用器代理创建器不能设置为空!") {
- t.Fatalf("意外错误:%s", err)
- }
- }()
- information.AppendBrokerBuilder(nil)
- t.Fatalf("意外的没有错误!")
- }
-
- func TestServiceMethodInformation_AppendBrokerBuilder_CheckError(t *testing.T) {
-
- methodName := "String"
- method, ok := testServiceType.MethodByName(methodName)
- if !ok {
- t.Fatalf("意外的没找到方法!")
- }
- information := NewServiceMethodInformation(&method)
- testError := errors.New("TestError")
- var callerBrokerBuilder CallerBrokerBuilder = &TestCallerBrokerBuilderImplementWithError{checkingError: testError}
- defer func() {
- if err := recover(); err != testError.Error() {
- t.Fatalf("意外错误:%s", err)
- }
- }()
- information.AppendBrokerBuilder(callerBrokerBuilder)
- t.Fatalf("意外的没有错误!")
- }
-
- func TestServiceMethodInformation_SetRouterBuilder(t *testing.T) {
-
- methodName := "String"
- method, ok := testServiceType.MethodByName(methodName)
- if !ok {
- t.Fatalf("意外的没找到方法!")
- }
- information := NewServiceMethodInformation(&method)
- testError := errors.New("TestError")
- var routerBuilder = func(CallerFactory, string, reflect.Type) (HttpMethod, string, Router, error) {
- return "", "", "", testError
- }
- information.SetRouterBuilder(routerBuilder)
- storedRouterBuilder := information.routerBuilder
- if storedRouterBuilder == nil {
- t.Fatalf("获取到的路由创建器不应为空!")
- }
- _, _, _, testError2 := storedRouterBuilder(nil, "", nil)
- if testError2 != testError {
- t.Fatalf("路由创建器获取错误!")
- }
- }
-
- func TestServiceMethodInformation_SetRouterBuilder_NullError(t *testing.T) {
- defer func() {
- if err := recover(); err != "路由创建器不能设置为空!" {
- t.Fatalf("意外错误:%s", err)
- }
- }()
-
- methodName := "String"
- method, ok := testServiceType.MethodByName(methodName)
- if !ok {
- t.Fatalf("意外的没找到方法!")
- }
- information := NewServiceMethodInformation(&method)
- information.SetRouterBuilder(nil)
- t.Fatalf("意外的没有错误!")
- }
-
- func TestServiceMethodInformation_SetRouterBuilder_RepeatedError(t *testing.T) {
- defer func() {
- if err := recover(); err != "已经设置路由创建器!" {
- t.Fatalf("意外错误:%s", err)
- }
- }()
-
- methodName := "String"
- method, ok := testServiceType.MethodByName(methodName)
- if !ok {
- t.Fatalf("意外的没找到方法!")
- }
- information := NewServiceMethodInformation(&method)
- testError := errors.New("TestError")
- var routerBuilder = func(CallerFactory, string, reflect.Type) (HttpMethod, string, Router, error) {
- return "", "", "", testError
- }
- information.SetRouterBuilder(routerBuilder)
- information.SetRouterBuilder(routerBuilder)
- t.Fatalf("意外的没有错误!")
- }
-
- func TestServiceMethodInformation_SetBuilders(t *testing.T) {
-
- methodName := "String"
- method, ok := testServiceType.MethodByName(methodName)
- if !ok {
- t.Fatalf("意外的没找到方法!")
- }
- information := NewServiceMethodInformation(&method)
- if information == nil {
- t.Fatalf("没找到信息")
- }
- if information.methodName != methodName {
- t.Fatalf("方法名设置错误!")
- }
- if information.MethodName() != methodName {
- t.Fatalf("方法名获取错误!")
- }
- if information.methodType != method.Type {
- t.Fatalf("方法类型设置错误!")
- }
- if information.MethodType() != method.Type {
- t.Fatalf("方法类型获取错误!")
- }
-
- testError := errors.New("TestError")
-
- var routerBuilder = func(CallerFactory, string, reflect.Type) (HttpMethod, string, Router, error) {
- return "", "", "", testError
- }
-
- var callerBrokerBuilder CallerBrokerBuilder = new(TestCallerBrokerBuilderImplement)
-
- builders := BuilderSet{routerBuilder, []CallerBrokerBuilder{callerBrokerBuilder}}
-
- information.SetBuilders(builders)
- if information.routerBuilder == nil {
- t.Fatalf("路由创建器不应为空!")
- }
- _, _, _, testError1 := information.routerBuilder(nil, "", nil)
- if testError1 != testError {
- t.Fatalf("路由创建器设置错误!")
- }
- expectedLength := 2
- if len(information.callerBrokerBuilders) != expectedLength {
- t.Fatalf("调用器代理创建器数量错误!预期:%d,实际:%d.", expectedLength, len(information.callerBrokerBuilders))
- }
- if information.callerBrokerBuilders[1] != callerBrokerBuilder {
- t.Fatalf("调用器代理创建器设置错误!")
- }
- }
-
- func TestServiceMethodInformation_SetBuilders_NullBrokerBuilderError(t *testing.T) {
- defer func() {
- if err := recover(); err != "调用器代理创建器不能设置为空!" {
- t.Fatalf("意外错误:%s", err)
- }
- }()
-
- methodName := "String"
- method, ok := testServiceType.MethodByName(methodName)
- if !ok {
- t.Fatalf("意外的没找到方法!")
- }
- information := NewServiceMethodInformation(&method)
- testError := errors.New("TestError")
- var routerBuilder = func(CallerFactory, string, reflect.Type) (HttpMethod, string, Router, error) {
- return "", "", "", testError
- }
- builders := BuilderSet{routerBuilder, []CallerBrokerBuilder{nil}}
- information.SetBuilders(builders)
- t.Fatalf("意外的没有错误!")
- }
-
- func TestServiceMethodInformation_SetBuilders_MethodCheckError(t *testing.T) {
-
- methodName := "String"
- method, ok := testServiceType.MethodByName(methodName)
- if !ok {
- t.Fatalf("意外的没找到方法!")
- }
- information := NewServiceMethodInformation(&method)
- testError := errors.New("TestError")
- var routerBuilder = func(CallerFactory, string, reflect.Type) (HttpMethod, string, Router, error) {
- return "", "", "", testError
- }
- var callerBrokerBuilder CallerBrokerBuilder = &TestCallerBrokerBuilderImplementWithError{checkingError: testError}
- builders := BuilderSet{routerBuilder, []CallerBrokerBuilder{callerBrokerBuilder}}
- defer func() {
- if err := recover(); err != testError.Error() {
- t.Fatalf("意外错误:%s", err)
- }
- }()
- information.SetBuilders(builders)
- t.Fatalf("意外的没有错误!")
- }
-
- func TestServiceMethodInformation_SetBuilders_NullRouterBuilderError(t *testing.T) {
- defer func() {
- if err := recover(); err != "路由创建器不能设置为空!" {
- t.Fatalf("意外错误:%s", err)
- }
- }()
-
- methodName := "String"
- method, ok := testServiceType.MethodByName(methodName)
- if !ok {
- t.Fatalf("意外的没找到方法!")
- }
- information := NewServiceMethodInformation(&method)
- builders := BuilderSet{nil, nil}
- information.SetBuilders(builders)
- t.Fatalf("意外的没有错误!")
- }
-
- func TestServiceMethodInformation_SetBuilders_RepeatedRouterBuilderError(t *testing.T) {
- defer func() {
- if err := recover(); err != "已经设置路由创建器!" {
- t.Fatalf("意外错误:%s", err)
- }
- }()
-
- methodName := "String"
- method, ok := testServiceType.MethodByName(methodName)
- if !ok {
- t.Fatalf("意外的没找到方法!")
- }
- information := NewServiceMethodInformation(&method)
- testError := errors.New("TestError")
- var routerBuilder = func(CallerFactory, string, reflect.Type) (HttpMethod, string, Router, error) {
- return "", "", "", testError
- }
- builders := BuilderSet{routerBuilder, nil}
- information.SetBuilders(builders)
- information.SetBuilders(builders)
- t.Fatalf("意外的没有错误!")
- }
-
- func TestServiceMethodInformation_BuildHandler(t *testing.T) {
-
- methodName := "String"
- method, ok := testServiceType.MethodByName(methodName)
- if !ok {
- t.Fatalf("意外的没找到方法!")
- }
- information := NewServiceMethodInformation(&method)
- userId := "userId"
- user := &global.User{UserId: userId}
- sessionContext, err := NewSessionContext(user, transactionHandlerFactoryMock)
- if err != nil {
- t.Fatalf("意外错误:%s", err.Error())
- }
- handler, err := information.BuildHandler(sessionContext, serviceInstance)
- if err != nil {
- t.Fatalf("意外错误:%s", err.Error())
- }
- if handler == nil {
- t.Fatalf("创建句柄错误!")
- }
- }
-
- func TestServiceMethodInformation_BuildHandler_NullSession(t *testing.T) {
-
- methodName := "String"
- method, ok := testServiceType.MethodByName(methodName)
- if !ok {
- t.Fatalf("意外的没找到方法!")
- }
- information := NewServiceMethodInformation(&method)
- _, err := information.BuildHandler(nil, serviceInstance)
- if err == nil {
- t.Fatalf("会话不能为空!")
- }
- if err.Error() != fmt.Sprintf("会话上下文不能为空!") {
- t.Fatalf("意外错误:%s", err.Error())
- }
- }
-
- func TestServiceMethodInformation_BuildHandler_EmptyMethodNameError(t *testing.T) {
-
- methodName := "String"
- method, ok := testServiceType.MethodByName(methodName)
- if !ok {
- t.Fatalf("意外的没找到方法!")
- }
- information := NewServiceMethodInformation(&method)
- userId := "userId"
- user := &global.User{UserId: userId}
- sessionContext, err := NewSessionContext(user, transactionHandlerFactoryMock)
- if err != nil {
- t.Fatalf("意外错误:%s", err.Error())
- }
- information.methodName = ""
- _, err = information.BuildHandler(sessionContext, serviceInstance)
- if err == nil {
- t.Fatalf("意外的没有错误!")
- }
- if err.Error() != fmt.Sprintf("方法名不能为空!") {
- t.Fatalf("意外错误:%s", err.Error())
- }
- }
-
- func TestServiceMethodInformation_BuildHandler_MissingMethodError(t *testing.T) {
-
- methodName := "String"
- method, ok := testServiceType.MethodByName(methodName)
- if !ok {
- t.Fatalf("意外的没找到方法!")
- }
- information := NewServiceMethodInformation(&method)
- userId := "userId"
- user := &global.User{UserId: userId}
- sessionContext, err := NewSessionContext(user, transactionHandlerFactoryMock)
- if err != nil {
- t.Fatalf("意外错误:%s", err.Error())
- }
- information.methodName = ""
- information.methodName = "NoMethod"
- _, err = information.BuildHandler(sessionContext, serviceInstance)
- if err == nil {
- t.Fatalf("意外的没有错误!")
- }
- if err.Error() != fmt.Sprintf("未找到方法!") {
- t.Fatalf("意外错误:%s", err.Error())
- }
- }
-
- func TestServiceMethodInformation_BuildHandler_BrokerBuildError(t *testing.T) {
-
- methodName := "String"
- method, ok := testServiceType.MethodByName(methodName)
- if !ok {
- t.Fatalf("意外的没找到方法!")
- }
- information := NewServiceMethodInformation(&method)
- testError := errors.New("TestError")
- var callerBrokerBuilder CallerBrokerBuilder = &TestCallerBrokerBuilderImplementWithError{buildingError: testError}
- information.AppendBrokerBuilder(callerBrokerBuilder)
- userId := "userId"
- user := &global.User{UserId: userId}
- sessionContext, err := NewSessionContext(user, transactionHandlerFactoryMock)
- if err != nil {
- t.Fatalf("意外错误:%s", err.Error())
- }
- _, err = information.BuildHandler(sessionContext, serviceInstance)
- if err == nil {
- t.Fatalf("意外的没有错误!")
- }
- if err != testError {
- t.Fatalf("意外错误:%s", err.Error())
- }
- }
-
- func TestServiceMethodInformation_BuildHandler_NullCallerError(t *testing.T) {
-
- methodName := "String"
- method, ok := testServiceType.MethodByName(methodName)
- if !ok {
- t.Fatalf("意外的没找到方法!")
- }
- information := NewServiceMethodInformation(&method)
- var callerBrokerBuilder CallerBrokerBuilder = new(TestCallerBrokerBuilderImplementWithError)
- information.AppendBrokerBuilder(callerBrokerBuilder)
- userId := "userId"
- user := &global.User{UserId: userId}
- sessionContext, err := NewSessionContext(user, transactionHandlerFactoryMock)
- if err != nil {
- t.Fatalf("意外错误:%s", err.Error())
- }
- _, err = information.BuildHandler(sessionContext, serviceInstance)
- if err == nil {
- t.Fatalf("意外的没有错误!")
- }
- if err.Error() != fmt.Sprintf("第2个调用器不能为空!") {
- t.Fatalf("意外错误:%s", err.Error())
- }
- }
|