-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathclient_methods_test.go
More file actions
115 lines (106 loc) · 3.49 KB
/
client_methods_test.go
File metadata and controls
115 lines (106 loc) · 3.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
package sfdc_test
import (
"fmt"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"go.stellar.af/go-sfdc"
)
func Test_PostToCase(t *testing.T) {
subject := createCaseSubject(t)
caseData := &sfdc.CaseCreate{
AccountID: Env.TestData.AccountID,
Comments: "go-sfdc unit test case",
ContactID: Env.TestData.ContactID,
Description: subject,
Origin: "Web",
Status: "New",
Subject: subject,
}
newCase, err := Client.CreateCase(caseData)
require.NoError(t, err)
require.NotNil(t, newCase)
t.Run("post plain text update", func(t *testing.T) {
t.Parallel()
postResult, err := Client.PostToCase(newCase.ID, "go-sfdc test plain text comment", nil)
require.NoError(t, err)
feedItem, err := Client.FeedItem(postResult.ID)
require.NoError(t, err)
assert.True(t, postResult.Success)
assert.Equal(t, postResult.ID, feedItem.ID)
assert.Greater(t, len(postResult.ID), 1)
})
t.Run("post html update", func(t *testing.T) {
t.Parallel()
body := "<b>go-sfdc test HTML comment</b>"
postResult, err := Client.PostToCase(newCase.ID, body, &sfdc.FeedItemOptions{
IsRichText: true,
})
require.NoError(t, err)
feedItem, err := Client.FeedItem(postResult.ID)
require.NoError(t, err)
assert.True(t, postResult.Success)
assert.Equal(t, postResult.ID, feedItem.ID)
assert.Greater(t, len(postResult.ID), 1)
assert.True(t, feedItem.IsRichText)
assert.Equal(t, body, feedItem.Body)
})
t.Cleanup(func() {
Client.UpdateCase(newCase.ID, &sfdc.CaseUpdate{Status: "Canceled"})
})
}
func Test_CloseCase(t *testing.T) {
t.Run("create a case and close it", func(t *testing.T) {
t.Parallel()
subject := createCaseSubject(t)
caseData := &sfdc.CaseCreate{
AccountID: Env.TestData.AccountID,
Comments: "go-sfdc unit test case",
ContactID: Env.TestData.ContactID,
Description: subject,
Origin: "Web",
Status: "New",
Subject: subject,
}
newCase, err := Client.CreateCase(caseData)
require.NoError(t, err)
err = Client.CloseCase(newCase.ID)
require.NoError(t, err)
closedCase, err := Client.Case(newCase.ID)
require.NoError(t, err)
assert.Equal(t, "Closed", closedCase.Status)
})
}
func Test_GetObject(t *testing.T) {
t.Parallel()
path := fmt.Sprintf("/services/data/%s/sobjects/Account/%s", sfdc.API_VERSION, Env.TestData.AccountID)
account, err := Client.GetObject(path)
require.NoError(t, err)
id := account.GetString("Id")
assert.Equal(t, Env.TestData.AccountID, id, "mismatched id")
name := account.GetString("Name")
assert.Equal(t, Env.TestData.AccountName, name, "mismatched name")
assert.Equal(t, "", account.GetString("AccountSource"))
}
func Test_PostObject(t *testing.T) {
t.Parallel()
t.Run("create contact", func(t *testing.T) {
t.Parallel()
// Create (POST)
path := fmt.Sprintf("/services/data/%s/sobjects/Contact", sfdc.API_VERSION)
res, err := Client.PostObject(path, map[string]any{"LastName": t.Name()})
require.NoError(t, err, "failed to create")
require.True(t, res.Success, "success=%v", res.Success)
// Update (PATCH)
objPath := fmt.Sprintf("%s/%s", path, res.ID)
err = Client.PatchObject(objPath, map[string]any{"FirstName": t.Name()})
require.NoError(t, err, "failed to update")
// Verify (GET)
obj, err := Client.GetObject(objPath)
require.NoError(t, err, "failed to get after update")
assert.Equal(t, t.Name(), obj.GetString("FirstName"))
// Delete (DELETE)
err = Client.DeleteObject(objPath)
require.NoError(t, err, "failed to delete")
})
}