Skip to content

Commit eeabf06

Browse files
committed
Reduce nesting in kiota tests
1 parent 473b647 commit eeabf06

File tree

7 files changed

+416
-492
lines changed

7 files changed

+416
-492
lines changed

test/OpenApiKiotaEndToEndTests/QueryStrings/FilterTests.cs

Lines changed: 66 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -43,30 +43,27 @@ await _testContext.RunOnDatabaseAsync(async dbContext =>
4343
using HttpClientRequestAdapter requestAdapter = _requestAdapterFactory.CreateAdapter(_testContext.Factory);
4444
var apiClient = new QueryStringsClient(requestAdapter);
4545

46-
var queryString = new Dictionary<string, string?>
46+
using IDisposable scope = _requestAdapterFactory.WithQueryString(new Dictionary<string, string?>
4747
{
4848
["filter"] = "equals(name,'Brian O''Quote')"
49-
};
49+
});
50+
51+
// Act
52+
NodeCollectionResponseDocument? response = await apiClient.Nodes.GetAsync();
5053

51-
using (_requestAdapterFactory.WithQueryString(queryString))
54+
// Assert
55+
response.Should().NotBeNull();
56+
response.Data.Should().HaveCount(1);
57+
response.Data.ElementAt(0).Id.Should().Be(nodes[1].StringId);
58+
59+
response.Data.ElementAt(0).Attributes.RefShould().NotBeNull().And.Subject.With(attributes =>
5260
{
53-
// Act
54-
NodeCollectionResponseDocument? response = await apiClient.Nodes.GetAsync();
55-
56-
// Assert
57-
response.Should().NotBeNull();
58-
response.Data.Should().HaveCount(1);
59-
response.Data.ElementAt(0).Id.Should().Be(nodes[1].StringId);
60-
61-
response.Data.ElementAt(0).Attributes.RefShould().NotBeNull().And.Subject.With(attributes =>
62-
{
63-
attributes.Name.Should().Be(nodes[1].Name);
64-
attributes.Comment.Should().Be(nodes[1].Comment);
65-
});
66-
67-
response.Meta.Should().NotBeNull();
68-
response.Meta.AdditionalData.Should().ContainKey("total").WhoseValue.Should().Be(1);
69-
}
61+
attributes.Name.Should().Be(nodes[1].Name);
62+
attributes.Comment.Should().Be(nodes[1].Comment);
63+
});
64+
65+
response.Meta.Should().NotBeNull();
66+
response.Meta.AdditionalData.Should().ContainKey("total").WhoseValue.Should().Be(1);
7067
}
7168

7269
[Fact]
@@ -88,30 +85,27 @@ await _testContext.RunOnDatabaseAsync(async dbContext =>
8885
using HttpClientRequestAdapter requestAdapter = _requestAdapterFactory.CreateAdapter(_testContext.Factory);
8986
var apiClient = new QueryStringsClient(requestAdapter);
9087

91-
var queryString = new Dictionary<string, string?>
88+
using IDisposable scope = _requestAdapterFactory.WithQueryString(new Dictionary<string, string?>
9289
{
9390
["filter"] = "and(startsWith(comment,'Discount:'),contains(comment,'%'))"
94-
};
91+
});
92+
93+
// Act
94+
NodeCollectionResponseDocument? response = await apiClient.Nodes[node.StringId!].Children.GetAsync();
9595

96-
using (_requestAdapterFactory.WithQueryString(queryString))
96+
// Assert
97+
response.Should().NotBeNull();
98+
response.Data.Should().HaveCount(1);
99+
response.Data.ElementAt(0).Id.Should().Be(node.Children.ElementAt(1).StringId);
100+
101+
response.Data.ElementAt(0).Attributes.RefShould().NotBeNull().And.Subject.With(attributes =>
97102
{
98-
// Act
99-
NodeCollectionResponseDocument? response = await apiClient.Nodes[node.StringId!].Children.GetAsync();
100-
101-
// Assert
102-
response.Should().NotBeNull();
103-
response.Data.Should().HaveCount(1);
104-
response.Data.ElementAt(0).Id.Should().Be(node.Children.ElementAt(1).StringId);
105-
106-
response.Data.ElementAt(0).Attributes.RefShould().NotBeNull().And.Subject.With(attributes =>
107-
{
108-
attributes.Name.Should().Be(node.Children.ElementAt(1).Name);
109-
attributes.Comment.Should().Be(node.Children.ElementAt(1).Comment);
110-
});
111-
112-
response.Meta.Should().NotBeNull();
113-
response.Meta.AdditionalData.Should().ContainKey("total").WhoseValue.Should().Be(1);
114-
}
103+
attributes.Name.Should().Be(node.Children.ElementAt(1).Name);
104+
attributes.Comment.Should().Be(node.Children.ElementAt(1).Comment);
105+
});
106+
107+
response.Meta.Should().NotBeNull();
108+
response.Meta.AdditionalData.Should().ContainKey("total").WhoseValue.Should().Be(1);
115109
}
116110

117111
[Fact]
@@ -133,25 +127,22 @@ await _testContext.RunOnDatabaseAsync(async dbContext =>
133127
using HttpClientRequestAdapter requestAdapter = _requestAdapterFactory.CreateAdapter(_testContext.Factory);
134128
var apiClient = new QueryStringsClient(requestAdapter);
135129

136-
var queryString = new Dictionary<string, string?>
130+
using IDisposable scope = _requestAdapterFactory.WithQueryString(new Dictionary<string, string?>
137131
{
138132
["filter"] = "greaterThan(count(children),'1')"
139-
};
133+
});
140134

141-
using (_requestAdapterFactory.WithQueryString(queryString))
142-
{
143-
// Act
144-
NodeIdentifierCollectionResponseDocument? response = await apiClient.Nodes[node.StringId!].Relationships.Children.GetAsync();
145-
146-
// Assert
147-
response.Should().NotBeNull();
148-
response.Data.Should().HaveCount(1);
149-
response.Data.ElementAt(0).Id.Should().Be(node.Children.ElementAt(1).StringId);
150-
response.Meta.Should().NotBeNull();
151-
response.Meta.AdditionalData.Should().ContainKey("total").WhoseValue.Should().Be(1);
152-
response.Links.Should().NotBeNull();
153-
response.Links.Describedby.Should().Be("/swagger/v1/swagger.json");
154-
}
135+
// Act
136+
NodeIdentifierCollectionResponseDocument? response = await apiClient.Nodes[node.StringId!].Relationships.Children.GetAsync();
137+
138+
// Assert
139+
response.Should().NotBeNull();
140+
response.Data.Should().HaveCount(1);
141+
response.Data.ElementAt(0).Id.Should().Be(node.Children.ElementAt(1).StringId);
142+
response.Meta.Should().NotBeNull();
143+
response.Meta.AdditionalData.Should().ContainKey("total").WhoseValue.Should().Be(1);
144+
response.Links.Should().NotBeNull();
145+
response.Links.Describedby.Should().Be("/swagger/v1/swagger.json");
155146
}
156147

157148
[Fact]
@@ -161,31 +152,28 @@ public async Task Cannot_use_empty_filter()
161152
using HttpClientRequestAdapter requestAdapter = _requestAdapterFactory.CreateAdapter(_testContext.Factory);
162153
var apiClient = new QueryStringsClient(requestAdapter);
163154

164-
var queryString = new Dictionary<string, string?>
155+
using IDisposable scope = _requestAdapterFactory.WithQueryString(new Dictionary<string, string?>
165156
{
166157
["filter"] = null
167-
};
158+
});
168159

169-
using (_requestAdapterFactory.WithQueryString(queryString))
170-
{
171-
// Act
172-
Func<Task> action = async () => _ = await apiClient.Nodes[Unknown.StringId.Int64].GetAsync();
173-
174-
// Assert
175-
ErrorResponseDocument exception = (await action.Should().ThrowExactlyAsync<ErrorResponseDocument>()).Which;
176-
exception.ResponseStatusCode.Should().Be((int)HttpStatusCode.BadRequest);
177-
exception.Message.Should().Be($"Exception of type '{typeof(ErrorResponseDocument).FullName}' was thrown.");
178-
exception.Links.Should().NotBeNull();
179-
exception.Links.Describedby.Should().Be("/swagger/v1/swagger.json");
180-
exception.Errors.Should().HaveCount(1);
181-
182-
ErrorObject error = exception.Errors[0];
183-
error.Status.Should().Be("400");
184-
error.Title.Should().Be("Missing query string parameter value.");
185-
error.Detail.Should().Be("Missing value for 'filter' query string parameter.");
186-
error.Source.Should().NotBeNull();
187-
error.Source.Parameter.Should().Be("filter");
188-
}
160+
// Act
161+
Func<Task> action = async () => _ = await apiClient.Nodes[Unknown.StringId.Int64].GetAsync();
162+
163+
// Assert
164+
ErrorResponseDocument exception = (await action.Should().ThrowExactlyAsync<ErrorResponseDocument>()).Which;
165+
exception.ResponseStatusCode.Should().Be((int)HttpStatusCode.BadRequest);
166+
exception.Message.Should().Be($"Exception of type '{typeof(ErrorResponseDocument).FullName}' was thrown.");
167+
exception.Links.Should().NotBeNull();
168+
exception.Links.Describedby.Should().Be("/swagger/v1/swagger.json");
169+
exception.Errors.Should().HaveCount(1);
170+
171+
ErrorObject error = exception.Errors[0];
172+
error.Status.Should().Be("400");
173+
error.Title.Should().Be("Missing query string parameter value.");
174+
error.Detail.Should().Be("Missing value for 'filter' query string parameter.");
175+
error.Source.Should().NotBeNull();
176+
error.Source.Parameter.Should().Be("filter");
189177
}
190178

191179
public void Dispose()

test/OpenApiKiotaEndToEndTests/QueryStrings/IncludeTests.cs

Lines changed: 62 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -42,25 +42,22 @@ await _testContext.RunOnDatabaseAsync(async dbContext =>
4242
using HttpClientRequestAdapter requestAdapter = _requestAdapterFactory.CreateAdapter(_testContext.Factory);
4343
var apiClient = new QueryStringsClient(requestAdapter);
4444

45-
var queryString = new Dictionary<string, string?>
45+
using IDisposable scope = _requestAdapterFactory.WithQueryString(new Dictionary<string, string?>
4646
{
4747
["include"] = "values.owner"
48-
};
48+
});
4949

50-
using (_requestAdapterFactory.WithQueryString(queryString))
51-
{
52-
// Act
53-
NodeCollectionResponseDocument? response = await apiClient.Nodes.GetAsync();
54-
55-
// Assert
56-
response.Should().NotBeNull();
57-
response.Data.Should().HaveCount(1);
58-
response.Data.ElementAt(0).Id.Should().Be(node.StringId);
59-
60-
response.Included.Should().HaveCount(2);
61-
response.Included.OfType<NameValuePairDataInResponse>().Should().ContainSingle(include => include.Id == node.Values.ElementAt(0).StringId);
62-
response.Included.OfType<NameValuePairDataInResponse>().Should().ContainSingle(include => include.Id == node.Values.ElementAt(1).StringId);
63-
}
50+
// Act
51+
NodeCollectionResponseDocument? response = await apiClient.Nodes.GetAsync();
52+
53+
// Assert
54+
response.Should().NotBeNull();
55+
response.Data.Should().HaveCount(1);
56+
response.Data.ElementAt(0).Id.Should().Be(node.StringId);
57+
58+
response.Included.Should().HaveCount(2);
59+
response.Included.OfType<NameValuePairDataInResponse>().Should().ContainSingle(include => include.Id == node.Values.ElementAt(0).StringId);
60+
response.Included.OfType<NameValuePairDataInResponse>().Should().ContainSingle(include => include.Id == node.Values.ElementAt(1).StringId);
6461
}
6562

6663
[Fact]
@@ -81,26 +78,23 @@ await _testContext.RunOnDatabaseAsync(async dbContext =>
8178
using HttpClientRequestAdapter requestAdapter = _requestAdapterFactory.CreateAdapter(_testContext.Factory);
8279
var apiClient = new QueryStringsClient(requestAdapter);
8380

84-
var queryString = new Dictionary<string, string?>
81+
using IDisposable scope = _requestAdapterFactory.WithQueryString(new Dictionary<string, string?>
8582
{
8683
["include"] = "children.parent,values"
87-
};
84+
});
8885

89-
using (_requestAdapterFactory.WithQueryString(queryString))
90-
{
91-
// Act
92-
NodePrimaryResponseDocument? response = await apiClient.Nodes[node.StringId!].GetAsync();
93-
94-
// Assert
95-
response.Should().NotBeNull();
96-
response.Data.Should().NotBeNull();
97-
response.Data.Id.Should().Be(node.StringId);
98-
99-
response.Included.Should().HaveCount(3);
100-
response.Included.OfType<NodeDataInResponse>().Should().ContainSingle(include => include.Id == node.Children.ElementAt(0).StringId);
101-
response.Included.OfType<NodeDataInResponse>().Should().ContainSingle(include => include.Id == node.Children.ElementAt(1).StringId);
102-
response.Included.OfType<NameValuePairDataInResponse>().Should().ContainSingle(include => include.Id == node.Values[0].StringId);
103-
}
86+
// Act
87+
NodePrimaryResponseDocument? response = await apiClient.Nodes[node.StringId!].GetAsync();
88+
89+
// Assert
90+
response.Should().NotBeNull();
91+
response.Data.Should().NotBeNull();
92+
response.Data.Id.Should().Be(node.StringId);
93+
94+
response.Included.Should().HaveCount(3);
95+
response.Included.OfType<NodeDataInResponse>().Should().ContainSingle(include => include.Id == node.Children.ElementAt(0).StringId);
96+
response.Included.OfType<NodeDataInResponse>().Should().ContainSingle(include => include.Id == node.Children.ElementAt(1).StringId);
97+
response.Included.OfType<NameValuePairDataInResponse>().Should().ContainSingle(include => include.Id == node.Values[0].StringId);
10498
}
10599

106100
[Fact]
@@ -121,24 +115,21 @@ await _testContext.RunOnDatabaseAsync(async dbContext =>
121115
using HttpClientRequestAdapter requestAdapter = _requestAdapterFactory.CreateAdapter(_testContext.Factory);
122116
var apiClient = new QueryStringsClient(requestAdapter);
123117

124-
var queryString = new Dictionary<string, string?>
118+
using IDisposable scope = _requestAdapterFactory.WithQueryString(new Dictionary<string, string?>
125119
{
126120
["include"] = "owner.parent,owner.values"
127-
};
121+
});
128122

129-
using (_requestAdapterFactory.WithQueryString(queryString))
130-
{
131-
// Act
132-
NameValuePairCollectionResponseDocument? response = await apiClient.Nodes[node.StringId!].Values.GetAsync();
123+
// Act
124+
NameValuePairCollectionResponseDocument? response = await apiClient.Nodes[node.StringId!].Values.GetAsync();
133125

134-
// Assert
135-
response.Should().NotBeNull();
136-
response.Data.Should().HaveCount(2);
126+
// Assert
127+
response.Should().NotBeNull();
128+
response.Data.Should().HaveCount(2);
137129

138-
response.Included.Should().HaveCount(2);
139-
response.Included.OfType<NodeDataInResponse>().Should().ContainSingle(include => include.Id == node.StringId);
140-
response.Included.OfType<NodeDataInResponse>().Should().ContainSingle(include => include.Id == node.Parent.StringId);
141-
}
130+
response.Included.Should().HaveCount(2);
131+
response.Included.OfType<NodeDataInResponse>().Should().ContainSingle(include => include.Id == node.StringId);
132+
response.Included.OfType<NodeDataInResponse>().Should().ContainSingle(include => include.Id == node.Parent.StringId);
142133
}
143134

144135
[Fact]
@@ -159,30 +150,26 @@ await _testContext.RunOnDatabaseAsync(async dbContext =>
159150
using HttpClientRequestAdapter requestAdapter = _requestAdapterFactory.CreateAdapter(_testContext.Factory);
160151
var apiClient = new QueryStringsClient(requestAdapter);
161152

162-
var queryString = new Dictionary<string, string?>
153+
using IDisposable scope = _requestAdapterFactory.WithQueryString(new Dictionary<string, string?>
163154
{
164155
["include"] = "parent.parent"
165-
};
156+
});
157+
158+
// Act
159+
NullableNodeSecondaryResponseDocument? response = await apiClient.Nodes[node.StringId!].Parent.GetAsync();
160+
161+
// Assert
162+
response.Should().NotBeNull();
163+
response.Data.Should().NotBeNull();
164+
response.Data.Id.Should().Be(node.Parent.StringId);
166165

167-
using (_requestAdapterFactory.WithQueryString(queryString))
166+
response.Included.Should().HaveCount(1);
167+
168+
response.Included.OfType<NodeDataInResponse>().Should().ContainSingle(nodeData => nodeData.Id == node.Parent.Parent.StringId).Subject.With(nodeData =>
168169
{
169-
// Act
170-
NullableNodeSecondaryResponseDocument? response = await apiClient.Nodes[node.StringId!].Parent.GetAsync();
171-
172-
// Assert
173-
response.Should().NotBeNull();
174-
response.Data.Should().NotBeNull();
175-
response.Data.Id.Should().Be(node.Parent.StringId);
176-
177-
response.Included.Should().HaveCount(1);
178-
179-
response.Included.OfType<NodeDataInResponse>().Should().ContainSingle(nodeData => nodeData.Id == node.Parent.Parent.StringId).Subject.With(
180-
nodeData =>
181-
{
182-
nodeData.Attributes.Should().NotBeNull();
183-
nodeData.Attributes.Name.Should().Be(node.Parent.Parent.Name);
184-
});
185-
}
170+
nodeData.Attributes.Should().NotBeNull();
171+
nodeData.Attributes.Name.Should().Be(node.Parent.Parent.Name);
172+
});
186173
}
187174

188175
[Fact]
@@ -200,23 +187,20 @@ await _testContext.RunOnDatabaseAsync(async dbContext =>
200187
using HttpClientRequestAdapter requestAdapter = _requestAdapterFactory.CreateAdapter(_testContext.Factory);
201188
var apiClient = new QueryStringsClient(requestAdapter);
202189

203-
var queryString = new Dictionary<string, string?>
190+
using IDisposable scope = _requestAdapterFactory.WithQueryString(new Dictionary<string, string?>
204191
{
205192
["include"] = null
206-
};
193+
});
207194

208-
using (_requestAdapterFactory.WithQueryString(queryString))
209-
{
210-
// Act
211-
NodePrimaryResponseDocument? response = await apiClient.Nodes[node.StringId!].GetAsync();
195+
// Act
196+
NodePrimaryResponseDocument? response = await apiClient.Nodes[node.StringId!].GetAsync();
212197

213-
// Assert
214-
response.Should().NotBeNull();
215-
response.Data.Should().NotBeNull();
216-
response.Data.Id.Should().Be(node.StringId);
198+
// Assert
199+
response.Should().NotBeNull();
200+
response.Data.Should().NotBeNull();
201+
response.Data.Id.Should().Be(node.StringId);
217202

218-
response.Included.Should().BeEmpty();
219-
}
203+
response.Included.Should().BeEmpty();
220204
}
221205

222206
public void Dispose()

0 commit comments

Comments
 (0)