苏州瑞玛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.

342 lines
9.4 KiB

  1. package container
  2. import (
  3. "fmt"
  4. "leit.com/LAPP_CHEERSSON_BACKEND/global"
  5. "reflect"
  6. "testing"
  7. )
  8. func TestFactory_Create_NullContext(t *testing.T) {
  9. factory := Factory(reflect.ValueOf(FactoryOfTestElement))
  10. _, err := factory.Create(nil)
  11. if err == nil {
  12. t.Fatalf("意外的没有错误!")
  13. }
  14. if err.Error() != fmt.Sprintf("会话上下文不能为空!") {
  15. t.Fatalf("意外错误:%s", err.Error())
  16. }
  17. }
  18. func TestFactory_Create_WithContext(t *testing.T) {
  19. userId := "userId"
  20. user := &global.User{UserId: userId}
  21. context, err := NewSessionContext(user, transactionHandlerFactoryMock)
  22. if err != nil {
  23. t.Fatalf("意外错误:%s", err.Error())
  24. }
  25. factory := Factory(reflect.ValueOf(FactoryOfTestServiceWithContext))
  26. instance, err := factory.Create(context)
  27. if err != nil {
  28. t.Fatalf("意外错误:%s", err.Error())
  29. }
  30. impl, ok := (reflect.Value(instance)).Interface().(*TestServiceImplementWithContext)
  31. if !ok {
  32. t.Fatalf("实例类型错误!")
  33. }
  34. if impl.context == nil {
  35. t.Fatalf("会话上下文不能为空!")
  36. }
  37. if impl.context != context {
  38. t.Fatalf("会话上下文设置错误!")
  39. }
  40. if impl.context.user.UserId != userId {
  41. t.Fatalf("会话上下文内容错误!")
  42. }
  43. }
  44. func TestFactory_Create_WithContextUsingPointer(t *testing.T) {
  45. userId := "userId"
  46. user := &global.User{UserId: userId}
  47. context, err := NewSessionContext(user, transactionHandlerFactoryMock)
  48. if err != nil {
  49. t.Fatalf("意外错误:%s", err.Error())
  50. }
  51. factory := Factory(reflect.ValueOf(FactoryOfTestServiceImplementWithContext))
  52. instance, err := factory.Create(context)
  53. if err != nil {
  54. t.Fatalf("意外错误:%s", err.Error())
  55. }
  56. impl, ok := (reflect.Value(instance)).Interface().(*TestServiceImplementWithContext)
  57. if !ok {
  58. t.Fatalf("实例类型错误!")
  59. }
  60. if impl.context == nil {
  61. t.Fatalf("会话上下文不能为空!")
  62. }
  63. if impl.context != context {
  64. t.Fatalf("会话上下文设置错误!")
  65. }
  66. if impl.context.user.UserId != userId {
  67. t.Fatalf("会话上下文内容错误!")
  68. }
  69. }
  70. func TestFactory_Create_WithContextUsingStruct(t *testing.T) {
  71. userId := "userId"
  72. user := &global.User{UserId: userId}
  73. context, err := NewSessionContext(user, transactionHandlerFactoryMock)
  74. if err != nil {
  75. t.Fatalf("意外错误:%s", err.Error())
  76. }
  77. factory := Factory(reflect.ValueOf(FactoryOfTestServiceImplementWithContextStruct))
  78. _, err = factory.Create(context)
  79. if err != nil {
  80. t.Fatalf("意外错误:%s", err.Error())
  81. }
  82. }
  83. func TestFactory_Create_UsingStructFactory(t *testing.T) {
  84. userId := "userId"
  85. user := &global.User{UserId: userId}
  86. context, err := NewSessionContext(user, transactionHandlerFactoryMock)
  87. if err != nil {
  88. t.Fatalf("意外错误:%s", err.Error())
  89. }
  90. factory := Factory(reflect.ValueOf(FactoryOfTestToString))
  91. _, err = factory.Create(context)
  92. if err != nil {
  93. t.Fatalf("意外错误:%s", err.Error())
  94. }
  95. }
  96. func TestFactory_Create_UsingIntFactory(t *testing.T) {
  97. userId := "userId"
  98. user := &global.User{UserId: userId}
  99. context, err := NewSessionContext(user, transactionHandlerFactoryMock)
  100. if err != nil {
  101. t.Fatalf("意外错误:%s", err.Error())
  102. }
  103. factory := Factory(reflect.ValueOf(FactoryOfInt))
  104. _, err = factory.Create(context)
  105. if err != nil {
  106. t.Fatalf("意外错误:%s", err.Error())
  107. }
  108. }
  109. func TestFactory_Create_WithFactoryOfNullInterface(t *testing.T) {
  110. userId := "userId"
  111. user := &global.User{UserId: userId}
  112. context, err := NewSessionContext(user, transactionHandlerFactoryMock)
  113. if err != nil {
  114. t.Fatalf("意外错误:%s", err.Error())
  115. }
  116. factory := Factory(reflect.ValueOf(FactoryOfNullTestService))
  117. _, err = factory.Create(context)
  118. if err == nil {
  119. t.Fatalf("意外的没有错误!")
  120. }
  121. if err.Error() != fmt.Sprintf("实际值不能是空接口!") {
  122. t.Fatalf("意外错误:%s", err.Error())
  123. }
  124. }
  125. func TestFactory_Create_WithFactoryOfNullPointer(t *testing.T) {
  126. userId := "userId"
  127. user := &global.User{UserId: userId}
  128. context, err := NewSessionContext(user, transactionHandlerFactoryMock)
  129. if err != nil {
  130. t.Fatalf("意外错误:%s", err.Error())
  131. }
  132. factory := Factory(reflect.ValueOf(FactoryOfNullTestServiceImplementWithContext))
  133. _, err = factory.Create(context)
  134. if err == nil {
  135. t.Fatalf("意外的没有错误!")
  136. }
  137. if err.Error() != fmt.Sprintf("实际值不能是空指针!") {
  138. t.Fatalf("意外错误:%s", err.Error())
  139. }
  140. }
  141. func TestFactory_Create_WithTooManyIn(t *testing.T) {
  142. userId := "userId"
  143. user := &global.User{UserId: userId}
  144. context, err := NewSessionContext(user, transactionHandlerFactoryMock)
  145. if err != nil {
  146. t.Fatalf("意外错误:%s", err.Error())
  147. }
  148. factory := Factory(reflect.ValueOf(FactoryOfTestWithTooManyInSetContext))
  149. _, err = factory.Create(context)
  150. if err == nil {
  151. t.Fatalf("意外的没有错误!")
  152. }
  153. if err.Error() != fmt.Sprintf("设置器参数数量不正确!") {
  154. t.Fatalf("意外错误:%s", err.Error())
  155. }
  156. }
  157. func TestFactory_Create_WithNoIn(t *testing.T) {
  158. userId := "userId"
  159. user := &global.User{UserId: userId}
  160. context, err := NewSessionContext(user, transactionHandlerFactoryMock)
  161. if err != nil {
  162. t.Fatalf("意外错误:%s", err.Error())
  163. }
  164. factory := Factory(reflect.ValueOf(FactoryOfTestWithNoInSetContext))
  165. _, err = factory.Create(context)
  166. if err == nil {
  167. t.Fatalf("意外的没有错误!")
  168. }
  169. if err.Error() != fmt.Sprintf("设置器参数数量不正确!") {
  170. t.Fatalf("意外错误:%s", err.Error())
  171. }
  172. }
  173. func TestFactory_Create_WithReturnValue(t *testing.T) {
  174. userId := "userId"
  175. user := &global.User{UserId: userId}
  176. context, err := NewSessionContext(user, transactionHandlerFactoryMock)
  177. if err != nil {
  178. t.Fatalf("意外错误:%s", err.Error())
  179. }
  180. factory := Factory(reflect.ValueOf(FactoryOfTestWithReturnValueSetContext))
  181. _, err = factory.Create(context)
  182. if err == nil {
  183. t.Fatalf("意外的没有错误!")
  184. }
  185. if err.Error() != fmt.Sprintf("设置器返回值数量不正确!") {
  186. t.Fatalf("意外错误:%s", err.Error())
  187. }
  188. }
  189. func TestFactory_Create_WithErrorIn(t *testing.T) {
  190. userId := "userId"
  191. user := &global.User{UserId: userId}
  192. context, err := NewSessionContext(user, transactionHandlerFactoryMock)
  193. if err != nil {
  194. t.Fatalf("意外错误:%s", err.Error())
  195. }
  196. factory := Factory(reflect.ValueOf(FactoryOfTestWithErrorInSetContext))
  197. _, err = factory.Create(context)
  198. if err == nil {
  199. t.Fatalf("意外的没有错误!")
  200. }
  201. if err.Error() != fmt.Sprintf("设置器类型不正确!") {
  202. t.Fatalf("意外错误:%s", err.Error())
  203. }
  204. }
  205. func TestFactory_SetReferences_WithEmptyMap(t *testing.T) {
  206. factory := Factory(reflect.ValueOf(FactoryOfTestServiceWithContext))
  207. instanceValue := reflect.Value(factory).Call(emptyParameters)[0]
  208. err := factory.setReferences(instanceValue, map[reflect.Type]reflect.Value{})
  209. if err != nil {
  210. t.Fatalf("意外错误:%s", err.Error())
  211. }
  212. }
  213. func TestFactory_SetReferences_WithTooManyIn(t *testing.T) {
  214. userId := "userId"
  215. user := &global.User{UserId: userId}
  216. context, err := NewSessionContext(user, transactionHandlerFactoryMock)
  217. if err != nil {
  218. t.Fatalf("意外错误:%s", err.Error())
  219. }
  220. factory := Factory(reflect.ValueOf(FactoryOfTestWithTooManyInSetContext))
  221. instanceValue := reflect.Value(factory).Call(emptyParameters)[0]
  222. err = factory.setReferences(instanceValue, map[reflect.Type]reflect.Value{sessionContextType: reflect.ValueOf(context)})
  223. if err == nil {
  224. t.Fatalf("意外的没有错误!")
  225. }
  226. if err.Error() != fmt.Sprintf("设置器参数数量不正确!") {
  227. t.Fatalf("意外错误:%s", err.Error())
  228. }
  229. }
  230. func TestFactory_SetReferences_WithNoIn(t *testing.T) {
  231. userId := "userId"
  232. user := &global.User{UserId: userId}
  233. context, err := NewSessionContext(user, transactionHandlerFactoryMock)
  234. if err != nil {
  235. t.Fatalf("意外错误:%s", err.Error())
  236. }
  237. factory := Factory(reflect.ValueOf(FactoryOfTestWithNoInSetContext))
  238. instanceValue := reflect.Value(factory).Call(emptyParameters)[0]
  239. err = factory.setReferences(instanceValue, map[reflect.Type]reflect.Value{sessionContextType: reflect.ValueOf(context)})
  240. if err == nil {
  241. t.Fatalf("意外的没有错误!")
  242. }
  243. if err.Error() != fmt.Sprintf("设置器参数数量不正确!") {
  244. t.Fatalf("意外错误:%s", err.Error())
  245. }
  246. }
  247. func TestFactory_SetReferences_WithReturnValue(t *testing.T) {
  248. userId := "userId"
  249. user := &global.User{UserId: userId}
  250. context, err := NewSessionContext(user, transactionHandlerFactoryMock)
  251. if err != nil {
  252. t.Fatalf("意外错误:%s", err.Error())
  253. }
  254. factory := Factory(reflect.ValueOf(FactoryOfTestWithReturnValueSetContext))
  255. instanceValue := reflect.Value(factory).Call(emptyParameters)[0]
  256. err = factory.setReferences(instanceValue, map[reflect.Type]reflect.Value{sessionContextType: reflect.ValueOf(context)})
  257. if err == nil {
  258. t.Fatalf("意外的没有错误!")
  259. }
  260. if err.Error() != fmt.Sprintf("设置器返回值数量不正确!") {
  261. t.Fatalf("意外错误:%s", err.Error())
  262. }
  263. }
  264. func TestFactory_SetReferences_WithErrorIn(t *testing.T) {
  265. userId := "userId"
  266. user := &global.User{UserId: userId}
  267. context, err := NewSessionContext(user, transactionHandlerFactoryMock)
  268. if err != nil {
  269. t.Fatalf("意外错误:%s", err.Error())
  270. }
  271. factory := Factory(reflect.ValueOf(FactoryOfTestWithErrorInSetContext))
  272. instanceValue := reflect.Value(factory).Call(emptyParameters)[0]
  273. err = factory.setReferences(instanceValue, map[reflect.Type]reflect.Value{sessionContextType: reflect.ValueOf(context)})
  274. if err == nil {
  275. t.Fatalf("意外的没有错误!")
  276. }
  277. if err.Error() != fmt.Sprintf("设置器类型不正确!") {
  278. t.Fatalf("意外错误:%s", err.Error())
  279. }
  280. }