Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

212 Zeilen
6.3KB

  1. package main
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "log"
  6. "testing"
  7. "time"
  8. )
  9. func TestCrmCreateEntity(t *testing.T) {
  10. e := crmdLead{}
  11. e.FirstName = "ff" + time.Now().Format(getCrmTimeLayout())
  12. e.LastName = "ll"
  13. e.Password = "pp"
  14. e.Status = "New"
  15. e.WechatHitxyID = time.Now().Format(getCrmTimeLayout())
  16. b, _ := json.Marshal(e)
  17. //Create
  18. entity, _ := crmCreateEntity("Lead", b)
  19. lead1, ok := entity.(crmdLead)
  20. AssertEqual(t, ok, true, "entity type should be crmdLead")
  21. //Read
  22. lead2, _ := crmGetLead(lead1.ID)
  23. AssertEqual(t, lead2.ID, lead1.ID, "lead id should be equal")
  24. //Update
  25. e.Password = "newpass"
  26. b, _ = json.Marshal(e)
  27. entity, _ = crmUpdateEntity("Lead", lead2.ID, b)
  28. lead3 := entity.(crmdLead)
  29. AssertEqual(t, lead3.ID, lead1.ID, "should be same lead")
  30. AssertEqual(t, lead3.Password, "newpass", "password should have been changed")
  31. AssertEqual(t, lead1.Password, "pp", "old password should be PP")
  32. //Delete this test lead.
  33. deleted, _ := crmDeleteEntity("Lead", lead1.ID)
  34. AssertEqual(t, deleted, true, "record should be deleted")
  35. }
  36. func TestCreateDuplicate(t *testing.T) {
  37. e := crmdLead{}
  38. e.FirstName = "ff" + time.Now().Format("2006-jan-02 03:04:05")
  39. e.LastName = "ll"
  40. e.Password = "pp"
  41. e.EmailAddress = "abc-non@gmail-exist.com"
  42. e.Status = "New"
  43. e.WechatHitxyID = "someopenid"
  44. b, _ := json.Marshal(e)
  45. //create
  46. entity, _ := crmCreateEntity("Lead", b)
  47. lead1 := entity.(crmdLead)
  48. //Read
  49. entity, _ = crmGetEntity("Lead", lead1.ID)
  50. lead2 := entity.(crmdLead)
  51. AssertEqual(t, lead1.ID, lead2.ID, "lead should have been created successfully")
  52. //try to create it again
  53. entity, err := crmCreateEntity("Lead", b)
  54. AssertEqual(t, err == nil, false, "should have error for duplicates")
  55. AssertEqual(t, isErrIndicateDuplicate(err), true, "the err should be duplicate error")
  56. lead3 := entity.(crmdLead)
  57. AssertEqual(t, lead1.ID, lead3.ID, "lead should have been created successfully")
  58. //delete
  59. deleted, _ := crmDeleteEntity("Lead", entity.(crmdLead).ID)
  60. AssertEqual(t, deleted, true, "test record should be deleted")
  61. }
  62. func TestCrmCreateEntityServerNotFound(t *testing.T) {
  63. e := crmdLead{}
  64. e.FirstName = "ff" + time.Now().Format("2006-jan-02 03:04:05")
  65. e.LastName = "ll"
  66. e.Password = "pp"
  67. e.Status = "New"
  68. e.WechatHitxyID = "someopenid"
  69. b, _ := json.Marshal(e)
  70. //temporarily change base url
  71. oldURL := CRMConfig.BaseURL
  72. CRMConfig.BaseURL = "https://not-exist.hitxy.org.au/" //
  73. entity, err := crmCreateEntity("Lead", b)
  74. CRMConfig.BaseURL = oldURL
  75. AssertEqual(t, isErrIndicateDuplicate(err), false, "this should not be a duplicate error")
  76. AssertEqual(t, entity, nil, "should not be able to create entity, it should be nil")
  77. }
  78. func TestCrmReplaceEntity(t *testing.T) {
  79. e := crmdLead{}
  80. e.FirstName = "ff1" + time.Now().Format("2006-jan-02 03:04:05")
  81. e.LastName = "ll1"
  82. e.Password = "pp"
  83. e.Status = "New"
  84. e.EmailAddress = "abc@gmail.com"
  85. e.WechatHitxyID = "someopenid"
  86. e.ForceDuplicate = true
  87. b, _ := json.Marshal(e)
  88. entity, err := crmCreateEntity("Lead", b)
  89. if err != nil {
  90. log.Println("--------------")
  91. log.Println(err)
  92. log.Println("--------------")
  93. }
  94. AssertEqual(t, err, nil, "create record should be successful")
  95. AssertEqual(t, isErrIndicateDuplicate(err), false, "this should not be a duplicate error")
  96. id := entity.(crmdLead).ID
  97. //put
  98. e.WechatHitxyID = "newid"
  99. e.Password = "newpass"
  100. nb, _ := json.Marshal(e)
  101. entity, err = crmReplaceEntity("Lead", id, nb)
  102. AssertEqual(t, err, nil, "put should have no error")
  103. AssertEqual(t, entity.(crmdLead).WechatHitxyID, "newid", "wechatOpenID should be updated")
  104. AssertEqual(t, entity.(crmdLead).Password, "newpass", "password should have been changed to newpass")
  105. //delete
  106. deleted, _ := crmDeleteEntity("Lead", id)
  107. AssertEqual(t, deleted, true, "test record should have been deleted.")
  108. }
  109. func TestSearchEntityByID(t *testing.T) {
  110. e := crmdLead{}
  111. e.FirstName = "ff1" + time.Now().Format("2006-Jan-02 03:04:05")
  112. e.LastName = "ll1"
  113. e.Password = "pp"
  114. e.Status = "New"
  115. //e.EmailAddress = "abc@gmail.com"
  116. e.WechatHitxyID = "someopenid"
  117. b, _ := json.Marshal(e)
  118. entity, err := crmCreateEntity("Lead", b)
  119. if err != nil {
  120. log.Println("--------------")
  121. log.Println(err)
  122. log.Println("--------------")
  123. }
  124. AssertEqual(t, err, nil, "create record should be successful")
  125. AssertEqual(t, isErrIndicateDuplicate(err), false, "this should not be a duplicate error")
  126. id := entity.(crmdLead).ID
  127. obj, err := crmFindEntityByID("Lead", id)
  128. AssertEqual(t, obj.(crmdLead).ID, id, "we should found the right id")
  129. deleted, _ := crmDeleteEntity("Lead", id)
  130. AssertEqual(t, deleted, true, "deleting temp record should be true")
  131. }
  132. func TestDeleteNonExistRecord(t *testing.T) {
  133. id := "someidthatisnotexistatall"
  134. deleted, _ := crmDeleteEntity("Lead", id)
  135. AssertEqual(t, deleted, false, "deleting non-exist record should be false")
  136. }
  137. func TestSearchByAttr(t *testing.T) {
  138. ids := []string{}
  139. for i := 0; i < 10; i++ {
  140. e := crmdLead{}
  141. e.FirstName = fmt.Sprintf("%s-%d-%s", "ff", i, time.Now().Format("2006-Jan-02 03:04:05"))
  142. e.LastName = fmt.Sprintf("%s-%d", "ll", i)
  143. e.Password = fmt.Sprintf("%s-pp-%d", "pp", i)
  144. e.Status = "New"
  145. e.EmailAddress = fmt.Sprintf("abc%d@gmail.com", i)
  146. e.WechatHitxyID = fmt.Sprintf("someopenid-%d", i)
  147. b, _ := json.Marshal(e)
  148. entity, _ := crmCreateEntity("Lead", b)
  149. ids = append(ids, entity.(crmdLead).ID)
  150. log.Printf("creating %s", ids[i])
  151. }
  152. //search
  153. for i := 0; i < 10; i++ {
  154. log.Printf("trying to match %d using email, %s", i, ids[i])
  155. total, list, err := crmFindEntityByAttr("Lead", "emailAddress", fmt.Sprintf("abc%d@gmail.com", i))
  156. result := list.([]crmdLead)
  157. AssertEqual(t, err, nil, "find by attr should have no error")
  158. AssertEqual(t, total, 1, "should have found 1 and only 1")
  159. AssertEqual(t, len(result), 1, "list should be 1 ")
  160. AssertEqual(t, result[0].ID, ids[i], "the id should be correct.")
  161. log.Printf("trying to match %d using WechatId,%s", i, ids[i])
  162. total, list, err = crmFindEntityByAttr("Lead", "wechatOpenID", fmt.Sprintf("someopenid-%d", i))
  163. result = list.([]crmdLead)
  164. AssertEqual(t, err, nil, "find by attr should have no error")
  165. AssertEqual(t, total, 1, "should have found 1 and only 1")
  166. AssertEqual(t, len(result), 1, "list should be 1 ")
  167. AssertEqual(t, result[0].ID, ids[i], "the id should be correct.")
  168. }
  169. for i := 0; i < 10; i++ {
  170. crmDeleteEntity("Lead", ids[i])
  171. log.Printf("deleting %s", ids[i])
  172. }
  173. }