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.

129 lines
3.5KB

  1. package main
  2. import (
  3. "encoding/json"
  4. "log"
  5. "testing"
  6. "time"
  7. )
  8. func TestCrmCreateEntity(t *testing.T) {
  9. e := crmdLead{}
  10. e.FirstName = "ff" + time.Now().Format("2006-jan-02 03:04:05")
  11. e.LastName = "ll"
  12. e.Password = "pp"
  13. e.Status = "New"
  14. b, _ := json.Marshal(e)
  15. //Create
  16. entity, _ := crmCreateEntity("Lead", b)
  17. lead1, ok := entity.(crmdLead)
  18. AssertEqual(t, ok, true, "entity type should be crmdLead")
  19. //Read
  20. lead2, _ := crmGetLead(lead1.ID)
  21. AssertEqual(t, lead2.ID, lead1.ID, "lead id should be equal")
  22. //Update
  23. e.Password = "newpass"
  24. b, _ = json.Marshal(e)
  25. entity, _ = crmUpdateEntity("Lead", lead2.ID, b)
  26. lead3 := entity.(crmdLead)
  27. AssertEqual(t, lead3.ID, lead1.ID, "should be same lead")
  28. AssertEqual(t, lead3.Password, "newpass", "password should have been changed")
  29. AssertEqual(t, lead1.Password, "pp", "old password should be PP")
  30. //Delete this test lead.
  31. deleted, _ := crmDeleteEntity("Lead", lead1.ID)
  32. AssertEqual(t, deleted, true, "record should be deleted")
  33. }
  34. func TestCreateDuplicate(t *testing.T) {
  35. e := crmdLead{}
  36. e.FirstName = "ff" + time.Now().Format("2006-jan-02 03:04:05")
  37. e.LastName = "ll"
  38. e.Password = "pp"
  39. e.EmailAddress = "abc@gmail.com"
  40. e.Status = "New"
  41. e.WechatHitxyID = "someopenid"
  42. b, _ := json.Marshal(e)
  43. //create
  44. entity, _ := crmCreateEntity("Lead", b)
  45. lead1 := entity.(crmdLead)
  46. //Read
  47. entity, _ = crmGetEntity("Lead", lead1.ID)
  48. lead2 := entity.(crmdLead)
  49. AssertEqual(t, lead1.ID, lead2.ID, "lead should have been created successfully")
  50. //try to create it again
  51. entity, err := crmCreateEntity("Lead", b)
  52. AssertEqual(t, err == nil, false, "should have error for duplicates")
  53. AssertEqual(t, isErrIndicateDuplicate(err), true, "the err should be duplicate error")
  54. //delete
  55. deleted, _ := crmDeleteEntity("Lead", entity.(crmdLead).ID)
  56. AssertEqual(t, deleted, true, "test record should be deleted")
  57. }
  58. func TestCrmCreateEntityServerNotFound(t *testing.T) {
  59. e := crmdLead{}
  60. e.FirstName = "ff" + time.Now().Format("2006-jan-02 03:04:05")
  61. e.LastName = "ll"
  62. e.Password = "pp"
  63. e.Status = "New"
  64. e.WechatHitxyID = "someopenid"
  65. b, _ := json.Marshal(e)
  66. //temporarily change base url
  67. oldURL := CRMConfig.BaseURL
  68. CRMConfig.BaseURL = "https://not-exist.hitxy.org.au/" //
  69. entity, err := crmCreateEntity("Lead", b)
  70. CRMConfig.BaseURL = oldURL
  71. AssertEqual(t, isErrIndicateDuplicate(err), false, "this should not be a duplicate error")
  72. AssertEqual(t, entity, nil, "should not be able to create entity, it should be nil")
  73. }
  74. func TestCrmReplaceEntity(t *testing.T) {
  75. e := crmdLead{}
  76. e.FirstName = "ff1" + time.Now().Format("2006-jan-02 03:04:05")
  77. e.LastName = "ll1"
  78. e.Password = "pp"
  79. e.Status = "New"
  80. e.EmailAddress = "abc@gmail.com"
  81. e.WechatHitxyID = "someopenid"
  82. b, _ := json.Marshal(e)
  83. entity, err := crmCreateEntity("Lead", b)
  84. if err != nil {
  85. log.Println("--------------")
  86. log.Println(err)
  87. log.Println("--------------")
  88. }
  89. AssertEqual(t, err, nil, "create record should be successful")
  90. AssertEqual(t, isErrIndicateDuplicate(err), false, "this should not be a duplicate error")
  91. id := entity.(crmdLead).ID
  92. //put
  93. e.WechatHitxyID = "newid"
  94. e.Password = "newpass"
  95. nb, _ := json.Marshal(e)
  96. entity, err = crmReplaceEntity("Lead", id, nb)
  97. AssertEqual(t, err, nil, "put should have no error")
  98. AssertEqual(t, entity.(crmdLead).WechatHitxyID, "newid", "wechat_hitxy_id should be updated")
  99. AssertEqual(t, entity.(crmdLead).Password, "newpass", "password should have been changed to newpass")
  100. //delete
  101. deleted, _ := crmDeleteEntity("Lead", id)
  102. AssertEqual(t, deleted, true, "test record should have been deleted.")
  103. }