|
| 1 | +package opslevel_test |
| 2 | + |
| 3 | +import ( |
| 4 | + "testing" |
| 5 | + |
| 6 | + ol "github.com/opslevel/opslevel-go/v2025" |
| 7 | + "github.com/rocktavious/autopilot/v2023" |
| 8 | +) |
| 9 | + |
| 10 | +var ( |
| 11 | + input ol.RelationshipDefinitionInput |
| 12 | + resp1 ol.RelationshipDefinitionType |
| 13 | + resp2 ol.RelationshipDefinitionType |
| 14 | +) |
| 15 | + |
| 16 | +func init() { |
| 17 | + AddSetup(func(m *testing.M) { |
| 18 | + input = autopilot.Register[ol.RelationshipDefinitionInput]("relationship_definition_input", |
| 19 | + ol.RelationshipDefinitionInput{ |
| 20 | + Alias: &alias1, |
| 21 | + Name: &name1, |
| 22 | + Description: ol.RefOf("Example Description"), |
| 23 | + ComponentType: ol.NewIdentifier("example"), |
| 24 | + Metadata: &ol.RelationshipDefinitionMetadataInput{ |
| 25 | + AllowedTypes: []string{"example"}, |
| 26 | + }, |
| 27 | + }) |
| 28 | + resp1 = autopilot.Register[ol.RelationshipDefinitionType]("relationship_definition1_response", |
| 29 | + ol.RelationshipDefinitionType{ |
| 30 | + Id: id1, |
| 31 | + Alias: alias1, |
| 32 | + Name: name1, |
| 33 | + Metadata: ol.RelationshipDefinitionMetadata{ |
| 34 | + AllowedTypes: []string{"example"}, |
| 35 | + }, |
| 36 | + }) |
| 37 | + resp2 = autopilot.Register[ol.RelationshipDefinitionType]("relationship_definition2_response", |
| 38 | + ol.RelationshipDefinitionType{ |
| 39 | + Id: id2, |
| 40 | + Alias: alias2, |
| 41 | + Name: name2, |
| 42 | + Metadata: ol.RelationshipDefinitionMetadata{ |
| 43 | + AllowedTypes: []string{"example2", "example3"}, |
| 44 | + }, |
| 45 | + }) |
| 46 | + }) |
| 47 | +} |
| 48 | + |
| 49 | +func TestRelationshipDefinitionCreate(t *testing.T) { |
| 50 | + // Arrange |
| 51 | + testRequest := autopilot.NewTestRequest( |
| 52 | + `mutation RelationshipDefinitionCreate($input:RelationshipDefinitionInput!){relationshipDefinitionCreate(input: $input){definition{alias,componentType{id,aliases},description,id,metadata{allowedTypes,maxItems,minItems},name},errors{message,path}}}`, |
| 53 | + `{"input": {{ template "relationship_definition_input" }} }`, |
| 54 | + `{"data": {"relationshipDefinitionCreate": {"definition": {{ template "relationship_definition1_response" }} }}}`, |
| 55 | + ) |
| 56 | + |
| 57 | + client := BestTestClient(t, "relationship_definition/create", testRequest) |
| 58 | + // Act |
| 59 | + result, err := client.CreateRelationshipDefinition(input) |
| 60 | + // Assert |
| 61 | + autopilot.Ok(t, err) |
| 62 | + autopilot.Equals(t, resp1.Id, result.Id) |
| 63 | + autopilot.Equals(t, resp1.Alias, result.Alias) |
| 64 | + autopilot.Equals(t, resp1.Metadata.AllowedTypes, result.Metadata.AllowedTypes) |
| 65 | +} |
| 66 | + |
| 67 | +func TestRelationshipDefinitionGet(t *testing.T) { |
| 68 | + // Arrange |
| 69 | + testRequest := autopilot.NewTestRequest( |
| 70 | + `query RelationshipDefinitionGet($input:IdentifierInput!){account{relationshipDefinition(input: $input){alias,componentType{id,aliases},description,id,metadata{allowedTypes,maxItems,minItems},name}}}`, |
| 71 | + `{"input": { {{ template "id1" }} }}`, |
| 72 | + `{"data": {"account": {"relationshipDefinition": {{ template "relationship_definition1_response" }} }}}`, |
| 73 | + ) |
| 74 | + |
| 75 | + client := BestTestClient(t, "relationship_definition/get", testRequest) |
| 76 | + // Act |
| 77 | + result, err := client.GetRelationshipDefinition(string(id1)) |
| 78 | + // Assert |
| 79 | + autopilot.Ok(t, err) |
| 80 | + autopilot.Equals(t, resp1.Id, result.Id) |
| 81 | + autopilot.Equals(t, resp1.Alias, result.Alias) |
| 82 | + autopilot.Equals(t, resp1.Metadata.AllowedTypes, result.Metadata.AllowedTypes) |
| 83 | +} |
| 84 | + |
| 85 | +func TestRelationshipDefinitionList(t *testing.T) { |
| 86 | + // Arrange |
| 87 | + testRequestOne := autopilot.NewTestRequest( |
| 88 | + `query RelationshipDefinitionList($after:String!$componentType:IdentifierInput$first:Int!$resource:ID){account{relationshipDefinitions(after: $after, first: $first, componentType: $componentType, resource: $resource){nodes{alias,componentType{id,aliases},description,id,metadata{allowedTypes,maxItems,minItems},name},pageInfo{hasNextPage,hasPreviousPage,startCursor,endCursor}}}}`, |
| 89 | + `{ {{ template "first_page_variables" }}, "componentType": null, "resource": null}`, |
| 90 | + `{ "data": { "account": { "relationshipDefinitions": { "nodes": [ {{ template "relationship_definition1_response" }} ], {{ template "pagination_initial_pageInfo_response" }} }}}}`, |
| 91 | + ) |
| 92 | + testRequestTwo := autopilot.NewTestRequest( |
| 93 | + `query RelationshipDefinitionList($after:String!$componentType:IdentifierInput$first:Int!$resource:ID){account{relationshipDefinitions(after: $after, first: $first, componentType: $componentType, resource: $resource){nodes{alias,componentType{id,aliases},description,id,metadata{allowedTypes,maxItems,minItems},name},pageInfo{hasNextPage,hasPreviousPage,startCursor,endCursor}}}}`, |
| 94 | + `{ {{ template "second_page_variables" }}, "componentType": null, "resource": null}`, |
| 95 | + `{ "data": { "account": { "relationshipDefinitions": { "nodes": [ {{ template "relationship_definition2_response" }} ], {{ template "pagination_second_pageInfo_response" }} }}}}`, |
| 96 | + ) |
| 97 | + requests := []autopilot.TestRequest{testRequestOne, testRequestTwo} |
| 98 | + |
| 99 | + client := BestTestClient(t, "relationship_definition/list", requests...) |
| 100 | + // Act |
| 101 | + result, err := client.ListRelationshipDefinitions(nil) |
| 102 | + // Assert |
| 103 | + autopilot.Ok(t, err) |
| 104 | + autopilot.Equals(t, 2, result.TotalCount) |
| 105 | + autopilot.Equals(t, resp1.Id, result.Nodes[0].Id) |
| 106 | + autopilot.Equals(t, resp1.Alias, result.Nodes[0].Alias) |
| 107 | + autopilot.Equals(t, resp1.Metadata.AllowedTypes, result.Nodes[0].Metadata.AllowedTypes) |
| 108 | + autopilot.Equals(t, resp2.Id, result.Nodes[1].Id) |
| 109 | + autopilot.Equals(t, resp2.Alias, result.Nodes[1].Alias) |
| 110 | + autopilot.Equals(t, resp2.Metadata.AllowedTypes, result.Nodes[1].Metadata.AllowedTypes) |
| 111 | +} |
| 112 | + |
| 113 | +func TestRelationshipDefinitionUpdate(t *testing.T) { |
| 114 | + // Arrange |
| 115 | + testRequest := autopilot.NewTestRequest( |
| 116 | + `mutation RelationshipDefinitionUpdate($identifier:IdentifierInput$input:RelationshipDefinitionInput!){relationshipDefinitionUpdate(relationshipDefinition: $identifier, input: $input){definition{alias,componentType{id,aliases},description,id,metadata{allowedTypes,maxItems,minItems},name},errors{message,path}}}`, |
| 117 | + `{"identifier": { {{ template "id1" }} }, "input": {{ template "relationship_definition_input" }} }`, |
| 118 | + `{"data": {"relationshipDefinitionUpdate": {"definition": {{ template "relationship_definition1_response" }} }}}`, |
| 119 | + ) |
| 120 | + |
| 121 | + client := BestTestClient(t, "relationship_definition/update", testRequest) |
| 122 | + // Act |
| 123 | + result, err := client.UpdateRelationshipDefinition(string(id1), input) |
| 124 | + // Assert |
| 125 | + autopilot.Ok(t, err) |
| 126 | + autopilot.Equals(t, id1, result.Id) |
| 127 | + autopilot.Equals(t, resp1.Id, result.Id) |
| 128 | + autopilot.Equals(t, resp1.Alias, result.Alias) |
| 129 | + autopilot.Equals(t, resp1.Metadata.AllowedTypes, result.Metadata.AllowedTypes) |
| 130 | +} |
| 131 | + |
| 132 | +func TestRelationshipDefinitionDelete(t *testing.T) { |
| 133 | + // Arrange |
| 134 | + testRequest := autopilot.NewTestRequest( |
| 135 | + `mutation RelationshipDefinitionDelete($input:IdentifierInput!){relationshipDefinitionDelete(resource: $input){deletedId,errors{message,path}}}`, |
| 136 | + `{"input": { {{ template "id1" }} }}`, |
| 137 | + `{"data": {"relationshipDefinitionDelete": {"deletedId": "{{ template "id1_string" }}", "errors": [] }}}`, |
| 138 | + ) |
| 139 | + |
| 140 | + client := BestTestClient(t, "relationship_definition/delete", testRequest) |
| 141 | + // Act |
| 142 | + _, err := client.DeleteRelationshipDefinition(string(id1)) |
| 143 | + // Assert |
| 144 | + autopilot.Ok(t, err) |
| 145 | +} |
0 commit comments