-
Notifications
You must be signed in to change notification settings - Fork 17
Expand file tree
/
Copy pathcampaign_test.go
More file actions
104 lines (96 loc) · 6.07 KB
/
campaign_test.go
File metadata and controls
104 lines (96 loc) · 6.07 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
package opslevel_test
import (
"testing"
ol "github.com/opslevel/opslevel-go/v2026"
"github.com/rocktavious/autopilot/v2023"
)
func TestListCampaigns(t *testing.T) {
// Arrange
testRequestOne := autopilot.NewTestRequest(
`query CampaignsList($after:String!$first:Int!$sortBy:CampaignSortEnum!$status:String!){account{campaigns(first: $first, after: $after, sortBy: $sortBy, filter: [{key: status, arg: $status}]){nodes{checkStats{total,totalSuccessful},endedDate,filter{id,name},htmlUrl,id,name,owner{alias,id},projectBrief,rawProjectBrief,reminder{channels,daysOfWeek,defaultSlackChannel,frequency,frequencyUnit,message,nextOccurrence,timeOfDay,timezone},serviceStats{total,totalSuccessful},startDate,status,targetDate},pageInfo{hasNextPage,hasPreviousPage,startCursor,endCursor}}}}`,
`{ "after": "", "first": 500, "sortBy": "start_date_DESC", "status": "in_progress" }`,
`{ "data": { "account": { "campaigns": { "nodes": [ {{ template "campaign1_response" }}, {{ template "campaign2_response" }} ], {{ template "pagination_initial_pageInfo_response" }} }}}}`,
)
testRequestTwo := autopilot.NewTestRequest(
`query CampaignsList($after:String!$first:Int!$sortBy:CampaignSortEnum!$status:String!){account{campaigns(first: $first, after: $after, sortBy: $sortBy, filter: [{key: status, arg: $status}]){nodes{checkStats{total,totalSuccessful},endedDate,filter{id,name},htmlUrl,id,name,owner{alias,id},projectBrief,rawProjectBrief,reminder{channels,daysOfWeek,defaultSlackChannel,frequency,frequencyUnit,message,nextOccurrence,timeOfDay,timezone},serviceStats{total,totalSuccessful},startDate,status,targetDate},pageInfo{hasNextPage,hasPreviousPage,startCursor,endCursor}}}}`,
`{ "after": "OA", "first": 500, "sortBy": "start_date_DESC", "status": "in_progress" }`,
`{ "data": { "account": { "campaigns": { "nodes": [ {{ template "campaign3_response" }} ], {{ template "pagination_second_pageInfo_response" }} }}}}`,
)
requests := []autopilot.TestRequest{testRequestOne, testRequestTwo}
client := BestTestClient(t, "campaign/list", requests...)
// Act
response, err := client.ListCampaigns(nil)
result := response.Nodes
// Assert
autopilot.Ok(t, err)
autopilot.Equals(t, 3, response.TotalCount)
autopilot.Equals(t, "Campaign 1", result[0].Name)
autopilot.Equals(t, ol.CampaignStatusEnumInProgress, result[0].Status)
autopilot.Equals(t, "Campaign 2", result[1].Name)
autopilot.Equals(t, ol.CampaignStatusEnumInProgress, result[1].Status)
autopilot.Equals(t, "Campaign 3", result[2].Name)
autopilot.Equals(t, ol.CampaignStatusEnumInProgress, result[2].Status)
autopilot.Equals(t, "#engineering", result[0].Reminder.DefaultSlackChannel)
autopilot.Equals(t, "America/Chicago", result[0].Reminder.Timezone)
autopilot.Equals(t, "Uses Go", result[1].Filter.Name)
autopilot.Equals(t, "2024-01-01 00:00:00 +0000 UTC", result[0].StartDate.String())
}
// TestListCampaignsVariables_AsPayloadVariables verifies that ListCampaignsVariables produces the correct payload map.
func TestListCampaignsVariables_AsPayloadVariables(t *testing.T) {
after := "cursor"
first := 5
sortBy := ol.CampaignSortEnumStartDateAsc
status := ol.CampaignStatusEnumScheduled
variables := (&ol.ListCampaignsVariables{
After: &after,
First: &first,
SortBy: &sortBy,
Status: &status,
}).AsPayloadVariables()
expected := ol.PayloadVariables{
"after": after,
"first": first,
"sortBy": sortBy,
"status": string(status),
}
autopilot.Equals(t, expected, *variables)
}
// TestListCampaignsWithCustomVariables verifies that custom ListCampaignsVariables values are sent in the GraphQL request.
func TestListCampaignsWithCustomVariables(t *testing.T) {
after := "cursor"
first := 5
sortBy := ol.CampaignSortEnumStartDateAsc
status := ol.CampaignStatusEnumDelayed
testRequest := autopilot.NewTestRequest(
`query CampaignsList($after:String!$first:Int!$sortBy:CampaignSortEnum!$status:String!){account{campaigns(first: $first, after: $after, sortBy: $sortBy, filter: [{key: status, arg: $status}]){nodes{checkStats{total,totalSuccessful},endedDate,filter{id,name},htmlUrl,id,name,owner{alias,id},projectBrief,rawProjectBrief,reminder{channels,daysOfWeek,defaultSlackChannel,frequency,frequencyUnit,message,nextOccurrence,timeOfDay,timezone},serviceStats{total,totalSuccessful},startDate,status,targetDate},pageInfo{hasNextPage,hasPreviousPage,startCursor,endCursor}}}}`,
`{ "after": "cursor", "first": 5, "sortBy": "start_date_ASC", "status": "delayed" }`,
`{ "data": { "account": { "campaigns": { "nodes": [ {{ template "campaign1_response" }} ], "pageInfo": { "hasNextPage": false, "hasPreviousPage": false, "startCursor": null, "endCursor": null } }}}}`,
)
client := BestTestClient(t, "campaign/list_custom", testRequest)
// Act
response, err := client.ListCampaigns(&ol.ListCampaignsVariables{
After: &after,
First: &first,
SortBy: &sortBy,
Status: &status,
})
// Assert
autopilot.Ok(t, err)
autopilot.Equals(t, 1, response.TotalCount)
autopilot.Equals(t, "Campaign 1", response.Nodes[0].Name)
}
func TestListCampaignsEmpty(t *testing.T) {
// Arrange
testRequest := autopilot.NewTestRequest(
`query CampaignsList($after:String!$first:Int!$sortBy:CampaignSortEnum!$status:String!){account{campaigns(first: $first, after: $after, sortBy: $sortBy, filter: [{key: status, arg: $status}]){nodes{checkStats{total,totalSuccessful},endedDate,filter{id,name},htmlUrl,id,name,owner{alias,id},projectBrief,rawProjectBrief,reminder{channels,daysOfWeek,defaultSlackChannel,frequency,frequencyUnit,message,nextOccurrence,timeOfDay,timezone},serviceStats{total,totalSuccessful},startDate,status,targetDate},pageInfo{hasNextPage,hasPreviousPage,startCursor,endCursor}}}}`,
`{ "after": "", "first": 500, "sortBy": "start_date_DESC", "status": "in_progress" }`,
`{ "data": { "account": { "campaigns": { "nodes": [], "pageInfo": { "hasNextPage": false, "hasPreviousPage": false, "startCursor": null, "endCursor": null } }}}}`,
)
client := BestTestClient(t, "campaign/list_empty", testRequest)
// Act
response, err := client.ListCampaigns(nil)
// Assert
autopilot.Ok(t, err)
autopilot.Equals(t, 0, response.TotalCount)
autopilot.Equals(t, 0, len(response.Nodes))
}