Parcourir la source

search lead with a specific openID is implemented and tested.

master
Patrick Peng Sun il y a 8 ans
Parent
révision
65784b83fa
2 fichiers modifiés avec 88 ajouts et 3 suppressions
  1. +68
    -1
      crmLead.go
  2. +20
    -2
      crmLead_test.go

+ 68
- 1
crmLead.go Voir le fichier

package main package main


import "time"
import (
"encoding/json"
"io/ioutil"
"log"
"net/http"
"time"
)


type crmLeadInfo struct { type crmLeadInfo struct {
ID string `json:"id"` ID string `json:"id"`
func (m *crmLeadInfo) getTimeLayout() string { func (m *crmLeadInfo) getTimeLayout() string {
return "2006-01-02 15:04:05" return "2006-01-02 15:04:05"
} }

func crmFindOpenID(openID string) (info crmLeadInfo, found bool, err error) {
found = false
req, err := http.NewRequest("GET", "https://c.hitxy.org.au/api/v1/Lead", nil)
if err != nil {
log.Println("crmGetRecord: cannot form good http Request")
log.Print(err)
return
}

//auth header
req.Header.Set("Authorization", crmAuthHeader())
req.Header.Set("Accept", "application/json, text/javascript, */*; q=0.01")
req.Header.Set("Content-Type", "application/json")

//query string
q := req.URL.Query()
q.Add("maxSize", "20")
q.Add("maxSize", "0")
q.Add("sortBy", "createdAt")
q.Add("asc", "false")
q.Add("where[0][type]", "equals")
q.Add("where[0][attribute]", "wechat_hitxy_id")
q.Add("where[0][value]", openID)
req.URL.RawQuery = q.Encode()

// dump, err := httputil.DumpRequest(req, true)
// if err != nil {
// log.Fatal(err)
// }
// fmt.Printf("dump : %q", dump)

client := &http.Client{}
r, err := client.Do(req)

if err != nil {
return
}
defer r.Body.Close()

b, _ := ioutil.ReadAll(r.Body)
search := crmSearchLead{}
err = json.Unmarshal(b, &search)

if err != nil || search.Total <= 0 {
return
}

if search.Total > 1 {
log.Printf("ERROR It's wrong to have multiple record for same wechat id %s", openID)
for _, v := range search.List {
log.Println(v)
}
return
}

//we successfully reach here
info = search.List[0]
found = true
return
}

+ 20
- 2
crmLead_test.go Voir le fichier



r := crmLeadInfo{} r := crmLeadInfo{}
err := json.Unmarshal([]byte(msg), &r) err := json.Unmarshal([]byte(msg), &r)
log.Println(r)
//log.Println(r)
AssertEqual(t, err, nil, "Decode CRM Lead Json shold be correct") AssertEqual(t, err, nil, "Decode CRM Lead Json shold be correct")


AssertEqual(t, r.ID, "58f4aa0682ea74bb8", "ID mismatch ") AssertEqual(t, r.ID, "58f4aa0682ea74bb8", "ID mismatch ")
}` }`
r := crmLeadInfo{} r := crmLeadInfo{}
err := json.Unmarshal([]byte(msg), &r) err := json.Unmarshal([]byte(msg), &r)
log.Println(r)
//log.Println(r)
AssertEqual(t, err, nil, "") AssertEqual(t, err, nil, "")


AssertEqual(t, r.ID, "58f4aa0682ea74bb8", "ID mismatch ") AssertEqual(t, r.ID, "58f4aa0682ea74bb8", "ID mismatch ")
AssertEqual(t, len(r.List), 2, "") AssertEqual(t, len(r.List), 2, "")
AssertEqual(t, r.List[0].ID, "58f4aa0682ea74bb8", "") AssertEqual(t, r.List[0].ID, "58f4aa0682ea74bb8", "")
AssertEqual(t, r.List[1].ID, "58f4a849502da6f33", "") AssertEqual(t, r.List[1].ID, "58f4a849502da6f33", "")
AssertEqual(t, r.List[1].AssignedUserName, "Admin", "")
}

func TestSearchResultZero(t *testing.T) {
msg := `{"total":0,"list":[]}`
r := crmSearchLead{}
err := json.Unmarshal([]byte(msg), &r)
AssertEqual(t, err, nil, "")
AssertEqual(t, r.Total, 0, "")
AssertEqual(t, len(r.List), 0, "")
}

func TestFindOpenIDOnline(t *testing.T) {
SetupConfig()
info, found, err := crmFindOpenID("weid1")
log.Println(info)
log.Println(found)
log.Println(err)
} }

Chargement…
Annuler
Enregistrer