Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

208 lines
6.1KB

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