From d7905d6b0f86e41a2d09056e6081822bf61baa37 Mon Sep 17 00:00:00 2001 From: Patrick Peng Sun Date: Sat, 15 Jul 2017 21:13:32 +1000 Subject: [PATCH] save meeting entity test.. pass --- crmMeeting_test.go | 56 ++++++++++++++++++++++++++++++++++++++++++++-- crmdMeeting.go | 29 ++++++++++++++++++++++++ 2 files changed, 83 insertions(+), 2 deletions(-) diff --git a/crmMeeting_test.go b/crmMeeting_test.go index e0a7205..5d4182a 100644 --- a/crmMeeting_test.go +++ b/crmMeeting_test.go @@ -1,7 +1,10 @@ package main -import "testing" -import "encoding/json" +import ( + "encoding/json" + "testing" + "time" +) func TestDecodeMeetingJson(t *testing.T) { msg := ` @@ -177,3 +180,52 @@ func TestDecodeMeetingJson(t *testing.T) { AssertEqual(t, e.CoverName, "covername", "") } + +func TestCreateMeeting(t *testing.T) { + + lead := crmdLead{} + lead.FirstName = "ff" + RandStringRunes(10) + lead.LastName = "ll" + RandStringRunes(10) + lead.Status = "testonly" + lead.Password = "apa" + lead.ForceDuplicate = true + newLead, err := lead.Save() + AssertEqual(t, err, nil, "create temp lead for meeting test should be ok") + AssertEqual(t, newLead.ID != "", true, "temp new lead should have ID") + + meeting := crmdMeeting{} + meeting.Name = "至高无上的会议" + meeting.DateStart = time.Now().Format(getCrmTimeLayout()) + meeting.Duration = 3600 //1hr + meeting.Description = "一些无聊的文字,凑在一起" + meeting.ParentID = newLead.ID + meeting.ParentType = "Lead" + + newMeeting, err := meeting.save() + AssertEqual(t, err, nil, "create meeting should be successful") + AssertEqual(t, newMeeting.ID != "", true, "newly created meeting should have ID") + + AssertEqual(t, newMeeting.Name, meeting.Name, "meeting name test fail") + AssertEqual(t, newMeeting.DateStart, meeting.DateStart, "meeting dateSTart test fail") + AssertEqual(t, newMeeting.Duration, meeting.Duration, "meeting duration test fail") + AssertEqual(t, newMeeting.Description, meeting.Description, "meeting Description test fail") + AssertEqual(t, newMeeting.ParentID, meeting.ParentID, "meeting parentID test fail") + AssertEqual(t, newMeeting.ParentType, meeting.ParentType, "meeting ParentType test fail") + AssertEqual(t, newMeeting.Status, "Planned", "meeting status is planned") + + AssertEqual(t, newMeeting.ParentName, "", "parentName not expected to be updated") + entity, err := crmFindEntityByID("Meeting", newMeeting.ID) + AssertEqual(t, err, nil, "re read saved meeting should be ok") + anotherRead, ok := entity.(crmdMeeting) + AssertEqual(t, ok, true, "reading entity shold be crmdMeeting") + AssertEqual(t, anotherRead.ParentName, newLead.Name, "") + + deleted, err := crmDeleteEntity("Meeting", newMeeting.ID) + AssertEqual(t, err, nil, "delet testmeeting should be successful") + AssertEqual(t, deleted, true, "temp meeting should have been deleted") + + deleted, err = crmDeleteEntity("Lead", newLead.ID) + AssertEqual(t, err, nil, "delet tmp lead should be successful") + AssertEqual(t, deleted, true, "temp lead should have been deleted") + +} diff --git a/crmdMeeting.go b/crmdMeeting.go index b4aca41..a38fe07 100644 --- a/crmdMeeting.go +++ b/crmdMeeting.go @@ -1,5 +1,9 @@ package main +import ( + "encoding/json" +) + type crmdMeetingAttendance struct { Status string `json:"status,omitempty"` } @@ -38,3 +42,28 @@ type crmdMeeting struct { CoverID string `json:"coverId,omitempty"` CoverName string `json:"coverName,omitempty"` } + +func (m crmdMeeting) save() (newMeeting crmdMeeting, err error) { + jsonB, err := json.Marshal(m) + if err != nil { + return + } + + if m.ID == "" { //create + entity, e := crmCreateEntity("Meeting", jsonB) + if e != nil { + err = e + return + } + newMeeting = entity.(crmdMeeting) + + } else { //patch + entity, e := crmUpdateEntity("Meeting", m.ID, jsonB) + if e != nil { + err = e + return + } + newMeeting = entity.(crmdMeeting) + } + return +}