苏州瑞玛APS项目web后台
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

221 lines
6.1 KiB

  1. package container
  2. import (
  3. "fmt"
  4. "leit.com/LAPP_CHEERSSON_BACKEND/global"
  5. "reflect"
  6. "testing"
  7. )
  8. func TestElementInformation_New(t *testing.T) {
  9. elementInformation := NewElementInformation(FactoryOfTestElement)
  10. if elementInformation == nil {
  11. t.Fatalf("创建失败!")
  12. }
  13. if elementInformation.IsGlobal() {
  14. t.Fatalf("目前不支持全局组件")
  15. }
  16. if elementInformation.interfaceType != testElementType {
  17. t.Fatalf("接口类型错误")
  18. }
  19. }
  20. func TestElementInformation_New_NullError(t *testing.T) {
  21. defer func() {
  22. if err := recover(); err != "工厂不能为空!" {
  23. t.Fatalf("意外错误:%s", err)
  24. }
  25. }()
  26. _ = NewElementInformation(nil)
  27. t.Fatalf("意外的没有错误!")
  28. }
  29. func TestElementInformation_New_FactoryTypeError(t *testing.T) {
  30. defer func() {
  31. if err := recover(); err != "工厂必须是func!" {
  32. t.Fatalf("意外错误:%s", err)
  33. }
  34. }()
  35. _ = NewElementInformation(reflect.TypeOf(FactoryOfTestElement()))
  36. t.Fatalf("意外的没有错误!")
  37. }
  38. func TestElementInformation_New_ParameterCountError(t *testing.T) {
  39. defer func() {
  40. if err := recover(); err != "工厂不能有参数!" {
  41. t.Fatalf("意外错误:%s", err)
  42. }
  43. }()
  44. _ = NewElementInformation(FactoryOfElementTestInterfaceWithContent)
  45. t.Fatalf("意外的没有错误!")
  46. }
  47. func TestElementInformation_New_NoReturnValueError(t *testing.T) {
  48. defer func() {
  49. if err := recover(); err != "工厂必值需有返回值!" {
  50. t.Fatalf("意外错误:%s", err)
  51. }
  52. }()
  53. _ = NewElementInformation(FactoryWithoutResult)
  54. t.Fatalf("意外的没有错误!")
  55. }
  56. func TestElementInformation_New_TooManyResultsError(t *testing.T) {
  57. defer func() {
  58. if err := recover(); err != "工厂只能有一个返回值!" {
  59. t.Fatalf("意外错误:%s", err)
  60. }
  61. }()
  62. _ = NewElementInformation(FactoryWithTooManyResults)
  63. t.Fatalf("意外的没有错误!")
  64. }
  65. func TestElementInformation_New_ReturnValueTypeError(t *testing.T) {
  66. defer func() {
  67. if err := recover(); err != "工厂的返回值必需是interface!" {
  68. t.Fatalf("意外错误:%s", err)
  69. }
  70. }()
  71. _ = NewElementInformation(FactoryOfTestElementImplement)
  72. t.Fatalf("意外的没有错误!")
  73. }
  74. func TestElementInformation_Interface(t *testing.T) {
  75. information := NewElementInformation(FactoryOfTestElement)
  76. information.interfaceType = testElementType
  77. if information.Interface() != testElementType {
  78. t.Fatalf("获取接口类型错误")
  79. }
  80. }
  81. func TestElementInformation_BuildHandler(t *testing.T) {
  82. information := NewElementInformation(FactoryOfTestElement)
  83. userId := "userId"
  84. user := &global.User{UserId: userId}
  85. sessionContext, err := NewSessionContext(user, transactionHandlerFactoryMock)
  86. if err != nil {
  87. t.Fatalf("意外错误:%s", err.Error())
  88. }
  89. handler, err := information.BuildHandler(sessionContext)
  90. if err != nil {
  91. t.Fatalf("意外错误:%s", err.Error())
  92. }
  93. _, ok := handler.(*ElementHandler)
  94. if !ok {
  95. t.Fatalf("Handler类型不正确!")
  96. }
  97. }
  98. func TestElementInformation_BuildHandler_NullSession(t *testing.T) {
  99. information := NewElementInformation(FactoryOfTestElement)
  100. if information.Interface() != testElementType {
  101. t.Fatalf("接口类型错误")
  102. }
  103. _, err := information.BuildHandler(nil)
  104. if err == nil {
  105. t.Fatalf("意外的没有错误!")
  106. }
  107. if err.Error() != "会话上下文不能为空!" {
  108. t.Fatalf("意外错误:%s", err.Error())
  109. }
  110. }
  111. func TestElementInformation_BuildHandler_WithFactoryOfNullInterface(t *testing.T) {
  112. information := NewElementInformation(FactoryOfNullTestElement)
  113. userId := "userId"
  114. user := &global.User{UserId: userId}
  115. sessionContext, err := NewSessionContext(user, transactionHandlerFactoryMock)
  116. if err != nil {
  117. t.Fatalf("意外错误:%s", err.Error())
  118. }
  119. _, err = information.BuildHandler(sessionContext)
  120. if err == nil {
  121. t.Fatalf("意外的没有错误!")
  122. }
  123. if err.Error() != fmt.Sprintf("实际值不能是空接口!") {
  124. t.Fatalf("意外错误:%s", err.Error())
  125. }
  126. }
  127. func TestElementInformation_BuildHandler_WithTooManyIn(t *testing.T) {
  128. information := NewElementInformation(FactoryOfTestWithTooManyInSetContext)
  129. userId := "userId"
  130. user := &global.User{UserId: userId}
  131. sessionContext, err := NewSessionContext(user, transactionHandlerFactoryMock)
  132. if err != nil {
  133. t.Fatalf("意外错误:%s", err.Error())
  134. }
  135. _, err = information.BuildHandler(sessionContext)
  136. if err == nil {
  137. t.Fatalf("意外的没有错误!")
  138. }
  139. if err.Error() != fmt.Sprintf("设置器参数数量不正确!") {
  140. t.Fatalf("意外错误:%s", err.Error())
  141. }
  142. }
  143. func TestElementInformation_BuildHandler_WithNoIn(t *testing.T) {
  144. information := NewElementInformation(FactoryOfTestWithNoInSetContext)
  145. userId := "userId"
  146. user := &global.User{UserId: userId}
  147. sessionContext, err := NewSessionContext(user, transactionHandlerFactoryMock)
  148. if err != nil {
  149. t.Fatalf("意外错误:%s", err.Error())
  150. }
  151. _, err = information.BuildHandler(sessionContext)
  152. if err == nil {
  153. t.Fatalf("意外的没有错误!")
  154. }
  155. if err.Error() != fmt.Sprintf("设置器参数数量不正确!") {
  156. t.Fatalf("意外错误:%s", err.Error())
  157. }
  158. }
  159. func TestElementInformation_BuildHandler_WithReturnValue(t *testing.T) {
  160. information := NewElementInformation(FactoryOfTestWithReturnValueSetContext)
  161. userId := "userId"
  162. user := &global.User{UserId: userId}
  163. sessionContext, err := NewSessionContext(user, transactionHandlerFactoryMock)
  164. if err != nil {
  165. t.Fatalf("意外错误:%s", err.Error())
  166. }
  167. _, err = information.BuildHandler(sessionContext)
  168. if err == nil {
  169. t.Fatalf("意外的没有错误!")
  170. }
  171. if err.Error() != fmt.Sprintf("设置器返回值数量不正确!") {
  172. t.Fatalf("意外错误:%s", err.Error())
  173. }
  174. }
  175. func TestElementInformation_BuildHandler_WithErrorIn(t *testing.T) {
  176. information := NewElementInformation(FactoryOfTestWithErrorInSetContext)
  177. userId := "userId"
  178. user := &global.User{UserId: userId}
  179. sessionContext, err := NewSessionContext(user, transactionHandlerFactoryMock)
  180. if err != nil {
  181. t.Fatalf("意外错误:%s", err.Error())
  182. }
  183. _, err = information.BuildHandler(sessionContext)
  184. if err == nil {
  185. t.Fatalf("意外的没有错误!")
  186. }
  187. if err.Error() != fmt.Sprintf("设置器类型不正确!") {
  188. t.Fatalf("意外错误:%s", err.Error())
  189. }
  190. }