package main import ( "encoding/json" "log" "testing" "time" ) func TestGetEntity(t *testing.T) { SetupConfig() leadID := "595071f8450974b72" entity, err := crmGetEntity("Lead", leadID) AssertEqual(t, err, nil, "get entity should return nil error") lead, ok := entity.(crmdLead) AssertEqual(t, ok, true, "type assertion should be true") AssertEqual(t, leadID, lead.ID, "lead id mismatch") lead1 := entity.(crmdLead) AssertEqual(t, lead.ID, lead1.ID, "type casting should work") } func TestCreateEntity(t *testing.T) { SetupConfig() e := crmdLead{} e.FirstName = "ff" + time.Now().Format("2006-jan-02 03:04:05") e.LastName = "ll" e.Password = "pp" e.Status = "New" b, _ := json.Marshal(e) log.Println(string(b)) entity, _ := createEntity("Lead", b) lead1 := entity.(crmdLead) log.Println(lead1) lead2, _ := crmGetLead(lead1.ID) AssertEqual(t, lead2.ID, lead1.ID, "lead id should be equal") e.Password = "newpass" b, _ = json.Marshal(e) entity, _ = updateEntity("Lead", lead2.ID, b) lead3 := entity.(crmdLead) log.Println(lead3) AssertEqual(t, lead3.ID, lead1.ID, "should be same lead") AssertEqual(t, lead3.Password, "newpass", "password should have been changed") AssertEqual(t, lead1.Password, "pp", "old password should be PP") //delete this test lead. deleted, _ := deleteEntity("Lead", lead1.ID) AssertEqual(t, deleted, true, "record should be deleted") } func TestCreateDuplicate(t *testing.T) { SetupConfig() e := crmdLead{} e.FirstName = "ff" + time.Now().Format("2006-jan-02 03:04:05") e.LastName = "ll" e.Password = "pp" e.Status = "New" e.WechatHitxyID = "someopenid" b, _ := json.Marshal(e) entity, _ := createEntity("Lead", b) lead1 := entity.(crmdLead) entity, _ = crmGetEntity("Lead", lead1.ID) lead2 := entity.(crmdLead) AssertEqual(t, lead1.ID, lead2.ID, "lead should have been created successfully") //try to create it again entity, err := createEntity("Lead", b) ehttp := err.(errorHTTPResponse) AssertEqual(t, err == nil, false, "should have error for duplicates") }