Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

417 lines
14KB

  1. package main
  2. import (
  3. "encoding/json"
  4. "testing"
  5. "time"
  6. )
  7. func TestDecodeLeadInfo(t *testing.T) {
  8. msg := `{
  9. "id": "58f4aa0682ea74bb8",
  10. "name": "same email",
  11. "deleted": false,
  12. "salutationName": "Mr",
  13. "firstName": "same",
  14. "lastName": "email",
  15. "title": "title",
  16. "status": "New",
  17. "source": "",
  18. "industry": "",
  19. "opportunityAmount": null,
  20. "website": "",
  21. "addressStreet": "",
  22. "addressCity": "",
  23. "addressState": "",
  24. "addressCountry": "",
  25. "addressPostalCode": "",
  26. "emailAddress": "test@gmail.com",
  27. "phoneNumber": "456",
  28. "doNotCall": false,
  29. "description": "",
  30. "createdAt": "2017-04-17 11:41:58",
  31. "modifiedAt": "2017-04-18 04:41:06",
  32. "accountName": "",
  33. "password": "abcdefg",
  34. "wechatOpenID": "the user id obtained from wechat public account",
  35. "opportunityAmountCurrency": null,
  36. "opportunityAmountConverted": null,
  37. "createdById": "1",
  38. "createdByName": "Admin",
  39. "modifiedById": "58ef420cac3cf6c95",
  40. "modifiedByName": "wechat robot",
  41. "assignedUserId": "1",
  42. "assignedUserName": "Admin",
  43. "campaignId": null,
  44. "createdAccountId": null,
  45. "createdContactId": null,
  46. "createdOpportunityId": null,
  47. "avatarName": "speed-icon.jpg",
  48. "avatarId": "5959bdaa7b7714a12"
  49. }`
  50. r := crmdLead{}
  51. err := json.Unmarshal([]byte(msg), &r)
  52. //log.Println(r)
  53. AssertEqual(t, err, nil, "Decode CRM Lead Json shold be correct")
  54. AssertEqual(t, r.ID, "58f4aa0682ea74bb8", "ID mismatch ")
  55. AssertEqual(t, r.Name, "same email", "Name mismatch")
  56. AssertEqual(t, r.Deleted, false, "")
  57. AssertEqual(t, r.SalutationName, "Mr", "")
  58. AssertEqual(t, r.FirstName, "same", "")
  59. AssertEqual(t, r.LastName, "email", "")
  60. AssertEqual(t, r.Title, "title", "")
  61. AssertEqual(t, r.Status, "New", "")
  62. AssertEqual(t, r.Source, "", "")
  63. AssertEqual(t, r.Industry, "", "")
  64. AssertEqual(t, r.OpportunityAmount, 0, "")
  65. AssertEqual(t, r.Website, "", "")
  66. AssertEqual(t, r.AddressStreet, "", "")
  67. AssertEqual(t, r.AddressCity, "", "")
  68. AssertEqual(t, r.AddressState, "", "")
  69. AssertEqual(t, r.AddressCountry, "", "")
  70. AssertEqual(t, r.AddressPostalCode, "", "")
  71. AssertEqual(t, r.EmailAddress, "test@gmail.com", "")
  72. AssertEqual(t, r.PhoneNumber, "456", "")
  73. AssertEqual(t, r.DoNotCall, false, "")
  74. AssertEqual(t, r.Description, "", "")
  75. AssertEqual(t, r.CreatedAt, "2017-04-17 11:41:58", "")
  76. AssertEqual(t, r.ModifiedAt, "2017-04-18 04:41:06", "")
  77. AssertEqual(t, r.AccountName, "", "")
  78. AssertEqual(t, r.Password, "abcdefg", "")
  79. AssertEqual(t, r.WechatHitxyID, "the user id obtained from wechat public account", "")
  80. AssertEqual(t, r.OpportunityAmountCurrency, "", "")
  81. AssertEqual(t, r.OpportunityAmountConverted, 0, "")
  82. AssertEqual(t, r.CreatedByID, "1", "")
  83. AssertEqual(t, r.CreatedByName, "Admin", "")
  84. AssertEqual(t, r.ModifiedByID, "58ef420cac3cf6c95", "")
  85. AssertEqual(t, r.ModifiedByName, "wechat robot", "")
  86. AssertEqual(t, r.AssignedUserID, "1", "")
  87. AssertEqual(t, r.AssignedUserName, "Admin", "")
  88. AssertEqual(t, r.CampaignID, "", "")
  89. AssertEqual(t, r.CreatedAccountID, "", "")
  90. AssertEqual(t, r.CreatedContactID, "", "")
  91. AssertEqual(t, r.CreatedOpportunityID, "", "")
  92. AssertEqual(t, r.AvatarID, "5959bdaa7b7714a12", "")
  93. AssertEqual(t, r.AvatarName, "speed-icon.jpg", "")
  94. }
  95. func TestCrmdLeadByCompleteInfo(t *testing.T) {
  96. msg := `{
  97. "id": "58f4aa0682ea74bb8",
  98. "name": "same email",
  99. "deleted": false,
  100. "salutationName": "",
  101. "firstName": "same",
  102. "lastName": "email",
  103. "title": "",
  104. "status": "New",
  105. "source": "",
  106. "industry": "",
  107. "opportunityAmount": 120,
  108. "website": "",
  109. "addressStreet": "",
  110. "addressCity": "",
  111. "addressState": "",
  112. "addressCountry": "",
  113. "addressPostalCode": "",
  114. "emailAddress": "test@gmail.com",
  115. "phoneNumber": "456",
  116. "doNotCall": false,
  117. "description": "",
  118. "createdAt": "2017-04-17 11:41:58",
  119. "modifiedAt": "2017-06-04 04:08:16",
  120. "accountName": "",
  121. "password": "abcdefg",
  122. "wechatOpenID": "the user id obtained from wechat public account",
  123. "opportunityAmountCurrency": "AUD",
  124. "opportunityAmountConverted": 120,
  125. "emailAddressData": [
  126. {
  127. "emailAddress": "test@gmail.com",
  128. "lower": "test@gmail.com",
  129. "primary": true,
  130. "optOut": false,
  131. "invalid": false
  132. },
  133. {
  134. "emailAddress": "abc@hotmail.com",
  135. "lower": "abc@hotmail.com",
  136. "primary": false,
  137. "optOut": false,
  138. "invalid": false
  139. },
  140. {
  141. "emailAddress": "def@jjx.com.au",
  142. "lower": "def@jjx.com.au",
  143. "primary": false,
  144. "optOut": false,
  145. "invalid": false
  146. }
  147. ],
  148. "phoneNumberData": [
  149. {
  150. "phoneNumber": "456",
  151. "primary": true,
  152. "type": "Home"
  153. },
  154. {
  155. "phoneNumber": "123",
  156. "primary": false,
  157. "type": "Mobile"
  158. }
  159. ],
  160. "createdById": "1",
  161. "createdByName": "Admin",
  162. "modifiedById": "1",
  163. "modifiedByName": "Admin",
  164. "assignedUserId": "1",
  165. "assignedUserName": "Admin",
  166. "teamsIds": [],
  167. "teamsNames": {},
  168. "campaignId": null,
  169. "campaignName": null,
  170. "createdAccountId": null,
  171. "createdAccountName": null,
  172. "createdContactId": null,
  173. "createdContactName": null,
  174. "createdOpportunityId": null,
  175. "createdOpportunityName": null,
  176. "avatarName": "speed-icon.jpg",
  177. "avatarId": "5959bdaa7b7714a12",
  178. "isFollowed": true,
  179. "followersIds": [
  180. "1"
  181. ],
  182. "followersNames": {
  183. "1": "Admin"
  184. },
  185. "imagesTypes": {}
  186. }`
  187. r := crmdLead{}
  188. err := json.Unmarshal([]byte(msg), &r)
  189. //log.Println(r)
  190. AssertEqual(t, err, nil, "")
  191. AssertEqual(t, r.ID, "58f4aa0682ea74bb8", "ID mismatch ")
  192. AssertEqual(t, r.Name, "same email", "Name mismatch")
  193. AssertEqual(t, r.Deleted, false, "")
  194. AssertEqual(t, r.SalutationName, "", "")
  195. AssertEqual(t, r.FirstName, "same", "")
  196. AssertEqual(t, r.LastName, "email", "")
  197. AssertEqual(t, r.Title, "", "")
  198. AssertEqual(t, r.Status, "New", "")
  199. AssertEqual(t, r.Source, "", "")
  200. AssertEqual(t, r.Industry, "", "")
  201. AssertEqual(t, r.OpportunityAmount, 120, "")
  202. AssertEqual(t, r.Website, "", "")
  203. AssertEqual(t, r.AddressStreet, "", "")
  204. AssertEqual(t, r.AddressCity, "", "")
  205. AssertEqual(t, r.AddressState, "", "")
  206. AssertEqual(t, r.AddressCountry, "", "")
  207. AssertEqual(t, r.AddressPostalCode, "", "")
  208. AssertEqual(t, r.EmailAddress, "test@gmail.com", "")
  209. AssertEqual(t, r.PhoneNumber, "456", "")
  210. AssertEqual(t, r.DoNotCall, false, "")
  211. AssertEqual(t, r.Description, "", "")
  212. AssertEqual(t, r.CreatedAt, "2017-04-17 11:41:58", "")
  213. AssertEqual(t, r.ModifiedAt, "2017-06-04 04:08:16", "")
  214. AssertEqual(t, r.AccountName, "", "")
  215. AssertEqual(t, r.Password, "abcdefg", "")
  216. AssertEqual(t, r.WechatHitxyID, "the user id obtained from wechat public account", "")
  217. AssertEqual(t, r.OpportunityAmountCurrency, "AUD", "")
  218. AssertEqual(t, r.OpportunityAmountConverted, 120, "")
  219. AssertEqual(t, r.CreatedByID, "1", "")
  220. AssertEqual(t, r.CreatedByName, "Admin", "")
  221. AssertEqual(t, r.ModifiedByID, "1", "")
  222. AssertEqual(t, r.ModifiedByName, "Admin", "")
  223. AssertEqual(t, r.AssignedUserID, "1", "")
  224. AssertEqual(t, r.AssignedUserName, "Admin", "")
  225. AssertEqual(t, r.CampaignID, "", "")
  226. AssertEqual(t, r.CreatedAccountID, "", "")
  227. AssertEqual(t, r.CreatedContactID, "", "")
  228. AssertEqual(t, r.CreatedOpportunityID, "", "")
  229. AssertEqual(t, r.EmailAddressData[0].EmailAddress, "test@gmail.com", "")
  230. AssertEqual(t, r.EmailAddressData[0].Lower, "test@gmail.com", "")
  231. AssertEqual(t, r.EmailAddressData[0].Primary, true, "")
  232. AssertEqual(t, r.EmailAddressData[0].OptOut, false, "")
  233. AssertEqual(t, r.EmailAddressData[0].Invalid, false, "")
  234. AssertEqual(t, r.EmailAddressData[1].EmailAddress, "abc@hotmail.com", "")
  235. AssertEqual(t, r.EmailAddressData[1].Lower, "abc@hotmail.com", "")
  236. AssertEqual(t, r.EmailAddressData[1].Primary, false, "")
  237. AssertEqual(t, r.EmailAddressData[1].OptOut, false, "")
  238. AssertEqual(t, r.EmailAddressData[1].Invalid, false, "")
  239. AssertEqual(t, r.EmailAddressData[2].EmailAddress, "def@jjx.com.au", "")
  240. AssertEqual(t, r.EmailAddressData[2].Lower, "def@jjx.com.au", "")
  241. AssertEqual(t, r.EmailAddressData[2].Primary, false, "")
  242. AssertEqual(t, r.EmailAddressData[2].OptOut, false, "")
  243. AssertEqual(t, r.EmailAddressData[2].Invalid, false, "")
  244. AssertEqual(t, r.PhoneNumberData[0].PhoneNumber, "456", "")
  245. AssertEqual(t, r.PhoneNumberData[0].Primary, true, "")
  246. AssertEqual(t, r.PhoneNumberData[0].Type, "Home", "")
  247. AssertEqual(t, r.PhoneNumberData[1].PhoneNumber, "123", "")
  248. AssertEqual(t, r.PhoneNumberData[1].Primary, false, "")
  249. AssertEqual(t, r.PhoneNumberData[1].Type, "Mobile", "")
  250. AssertEqual(t, r.AvatarID, "5959bdaa7b7714a12", "")
  251. AssertEqual(t, r.AvatarName, "speed-icon.jpg", "")
  252. }
  253. func TestSearchResult(t *testing.T) {
  254. msg := `{
  255. "total": 2,
  256. "list": [
  257. {
  258. "id": "58f4aa0682ea74bb8",
  259. "name": "same email",
  260. "deleted": false,
  261. "salutationName": "",
  262. "firstName": "same",
  263. "lastName": "email",
  264. "title": "",
  265. "status": "New",
  266. "source": "",
  267. "industry": "",
  268. "opportunityAmount": 120,
  269. "website": "",
  270. "addressStreet": "",
  271. "addressCity": "",
  272. "addressState": "",
  273. "addressCountry": "",
  274. "addressPostalCode": "",
  275. "emailAddress": "test@gmail.com",
  276. "phoneNumber": "456",
  277. "doNotCall": true,
  278. "description": "",
  279. "createdAt": "2017-04-17 11:41:58",
  280. "modifiedAt": "2017-06-04 06:57:48",
  281. "accountName": "",
  282. "password": "abcdefg",
  283. "wechatOpenID": "the user id obtained from wechat public account",
  284. "opportunityAmountCurrency": "AUD",
  285. "opportunityAmountConverted": 120,
  286. "createdById": "1",
  287. "createdByName": "Admin",
  288. "modifiedById": "1",
  289. "modifiedByName": "Admin",
  290. "assignedUserId": "1",
  291. "assignedUserName": "Admin",
  292. "campaignId": null,
  293. "createdAccountId": null,
  294. "createdContactId": null,
  295. "createdOpportunityId": null
  296. },
  297. {
  298. "id": "58f4a849502da6f33",
  299. "name": "not searchable",
  300. "deleted": false,
  301. "salutationName": "Mr.",
  302. "firstName": "not",
  303. "lastName": "searchable",
  304. "title": "",
  305. "status": "New",
  306. "source": "",
  307. "industry": "",
  308. "opportunityAmount": null,
  309. "website": "",
  310. "addressStreet": "",
  311. "addressCity": "",
  312. "addressState": "",
  313. "addressCountry": "",
  314. "addressPostalCode": "",
  315. "emailAddress": null,
  316. "phoneNumber": null,
  317. "doNotCall": false,
  318. "description": "",
  319. "createdAt": "2017-04-17 11:34:33",
  320. "modifiedAt": "2017-04-18 05:09:36",
  321. "accountName": "",
  322. "password": null,
  323. "wechatOpenID": "the user id obtained from wechat public account",
  324. "opportunityAmountCurrency": null,
  325. "opportunityAmountConverted": null,
  326. "createdById": "1",
  327. "createdByName": "Admin",
  328. "modifiedById": "58ef420cac3cf6c95",
  329. "modifiedByName": "wechat robot",
  330. "assignedUserId": "1",
  331. "assignedUserName": "Admin",
  332. "campaignId": null,
  333. "createdAccountId": null,
  334. "createdContactId": null,
  335. "createdOpportunityId": null
  336. }
  337. ]
  338. }`
  339. r := crmdSearchLead{}
  340. err := json.Unmarshal([]byte(msg), &r)
  341. AssertEqual(t, err, nil, "")
  342. AssertEqual(t, r.Total, 2, "")
  343. AssertEqual(t, len(r.List), 2, "")
  344. AssertEqual(t, r.List[0].ID, "58f4aa0682ea74bb8", "")
  345. AssertEqual(t, r.List[1].ID, "58f4a849502da6f33", "")
  346. AssertEqual(t, r.List[1].AssignedUserName, "Admin", "")
  347. }
  348. func TestSearchResultZero(t *testing.T) {
  349. msg := `{"total":0,"list":[]}`
  350. r := crmdSearchLead{}
  351. err := json.Unmarshal([]byte(msg), &r)
  352. AssertEqual(t, err, nil, "")
  353. AssertEqual(t, r.Total, 0, "")
  354. AssertEqual(t, len(r.List), 0, "")
  355. }
  356. func TestGetLead(t *testing.T) {
  357. e := crmdLead{}
  358. e.FirstName = "testGetLeadById" + time.Now().Format("2006-Jan-02 15:04:05")
  359. e.LastName = "crmLead/TestGetLead"
  360. e.WechatHitxyID = "predefined-openid" + time.Now().Format("2006-Jan-02 15:04:05")
  361. e.Password = "some password"
  362. b, _ := json.Marshal(e)
  363. entity, err := crmCreateEntity("Lead", b)
  364. AssertEqual(t, err, nil, "create sample Lead should be successful")
  365. lead := entity.(crmdLead)
  366. id := lead.ID
  367. AssertEqual(t, lead.FirstName, e.FirstName, "first name should match")
  368. AssertEqual(t, lead.LastName, e.LastName, "lastname should match")
  369. AssertEqual(t, lead.WechatHitxyID, e.WechatHitxyID, "wechatOpenID should match")
  370. AssertEqual(t, lead.Password, e.Password, "password should match")
  371. //start query
  372. info, found, err := crmFindLeadByOpenID(e.WechatHitxyID)
  373. AssertEqual(t, err, nil, "finding Lead record by ID should be nil")
  374. AssertEqual(t, found, true, "we should have found our record of Lead")
  375. AssertEqual(t, info.WechatHitxyID, e.WechatHitxyID, "wechat id should be the same")
  376. //test patch lead
  377. newStatus := crmdLead{}
  378. newStatus.Status = "Dead"
  379. newStatus.ID = id
  380. newLead, err := crmPatchLeadInfo(newStatus)
  381. AssertEqual(t, err, nil, "patch status for lead shold be correct")
  382. AssertEqual(t, newLead.Status, "Dead", "Newstatus should be dead")
  383. //delete temp record
  384. deleted, _ := crmDeleteEntity("Lead", id)
  385. AssertEqual(t, deleted, true, "test record shold be deleted correctly")
  386. }
  387. func TestRegisterExistingUser(t *testing.T) {
  388. importExistingWechatUserAsLead()
  389. }