diff --git a/job.go b/job.go index f740ce9a..aa933fb3 100644 --- a/job.go +++ b/job.go @@ -124,14 +124,21 @@ type RunnerScale struct { RecommendedReplicaCount int `json:"recommendedReplicaCount"` } -func (client *Client) RunnerRegister() (*Runner, error) { +func (client *Client) RunnerRegister(subscribedTemplateIds ...int) (*Runner, error) { var m struct { Payload struct { Runner Runner Errors []Error - } `graphql:"runnerRegister"` + } `graphql:"runnerRegister(subscribedTemplateIds: $subscribedTemplateIds)"` } v := PayloadVariables{} + if len(subscribedTemplateIds) > 0 { + ids := make([]int, len(subscribedTemplateIds)) + copy(ids, subscribedTemplateIds) + v["subscribedTemplateIds"] = &ids + } else { + v["subscribedTemplateIds"] = (*[]int)(nil) + } err := client.Mutate(&m, v, WithName("RunnerRegister")) return &m.Payload.Runner, HandleErrors(err, m.Payload.Errors) } diff --git a/job_test.go b/job_test.go index ff5c063a..03f58901 100644 --- a/job_test.go +++ b/job_test.go @@ -10,8 +10,8 @@ import ( func TestRunnerRegister(t *testing.T) { // Arrange testRequest := autopilot.NewTestRequest( - `mutation RunnerRegister{runnerRegister{runner{id,status},errors{message,path}}}`, - `{}`, + `mutation RunnerRegister($subscribedTemplateIds:[Int!]){runnerRegister(subscribedTemplateIds: $subscribedTemplateIds){runner{id,status},errors{message,path}}}`, + `{"subscribedTemplateIds": null}`, `{"data": {"runnerRegister": { "runner": { "id": "1234", "status": "registered" }, "errors": [] }}}`, ) @@ -23,6 +23,22 @@ func TestRunnerRegister(t *testing.T) { autopilot.Equals(t, ol.ID("1234"), result.Id) } +func TestRunnerRegisterWithTemplateIds(t *testing.T) { + // Arrange + testRequest := autopilot.NewTestRequest( + `mutation RunnerRegister($subscribedTemplateIds:[Int!]){runnerRegister(subscribedTemplateIds: $subscribedTemplateIds){runner{id,status},errors{message,path}}}`, + `{"subscribedTemplateIds": [1, 2, 3]}`, + `{"data": {"runnerRegister": { "runner": { "id": "1234", "status": "registered" }, "errors": [] }}}`, + ) + + client := BestTestClient(t, "job/register_with_templates", testRequest) + // Act + result, err := client.RunnerRegister(1, 2, 3) + // Assert + autopilot.Ok(t, err) + autopilot.Equals(t, ol.ID("1234"), result.Id) +} + func TestRunnerGetScale(t *testing.T) { // Arrange testRequest := autopilot.NewTestRequest(