Skip to content

Commit 08a0769

Browse files
feat(support-union-type): add the support for union types (#48)
closes #47 Co-authored-by: Asad Ali <[email protected]>
1 parent ab67431 commit 08a0769

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+4370
-464
lines changed

APIMatic.Core.Test/Api/HttpGet/ApiCallGetTest.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public void ApiCall_Get_OKResponse()
5151

5252
// Assert
5353
Assert.NotNull(actual);
54-
Assert.AreEqual(actual.StatusCode, (int)HttpStatusCode.OK);
54+
Assert.AreEqual((int)HttpStatusCode.OK, actual.StatusCode);
5555
Assert.NotNull(actual.Data);
5656
Assert.AreEqual(actual.Data, expected);
5757
}
@@ -136,7 +136,7 @@ public void ApiCall_GetWithDisableContentType_OKResponse()
136136

137137
// Assert
138138
Assert.NotNull(actual);
139-
Assert.AreEqual(actual.StatusCode, (int)HttpStatusCode.OK);
139+
Assert.AreEqual((int)HttpStatusCode.OK, actual.StatusCode);
140140
Assert.NotNull(actual.Data);
141141
Assert.AreEqual(actual.Data.Message, expected.Message);
142142
}
@@ -175,7 +175,7 @@ public void ApiCall_GetWithBasicAuthe_OKResponse()
175175

176176
// Assert
177177
Assert.NotNull(actual);
178-
Assert.AreEqual(actual.StatusCode, (int)HttpStatusCode.OK);
178+
Assert.AreEqual((int)HttpStatusCode.OK, actual.StatusCode);
179179
}
180180

181181
[Test]
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
using System.Net;
2+
using System.Net.Http;
3+
using System.Net.Http.Json;
4+
using APIMatic.Core.Test.MockTypes.Models;
5+
using APIMatic.Core.Test.MockTypes.Models.Containers;
6+
using APIMatic.Core.Utilities;
7+
using NUnit.Framework;
8+
using RichardSzalay.MockHttp;
9+
10+
namespace APIMatic.Core.Test.Api.HttpPost
11+
{
12+
[TestFixture]
13+
internal class ApiCallPostContainerTest : ApiCallTest
14+
{
15+
[Test]
16+
public void ApiCall_PostModelAsContainerData_OKResponse()
17+
{
18+
var oneOfAtomOrbit = CustomOneOfContainer.FromAtom(new Atom()
19+
{
20+
Name = "Hydrogen",
21+
NumberOfProtons = 1,
22+
NumberOfElectrons = 1,
23+
});
24+
var expected = new ServerResponse()
25+
{
26+
Passed = true,
27+
};
28+
var url = "/apicall/post-container-model/200";
29+
var contentType = "application/json; charset=utf-8";
30+
31+
var content = JsonContent.Create(expected);
32+
handlerMock.When(GetCompleteUrl(url))
33+
.With(req =>
34+
{
35+
Assert.AreEqual(CoreHelper.JsonSerialize(oneOfAtomOrbit), req.Content.ReadAsStringAsync().Result);
36+
Assert.AreEqual(contentType, req.Content.Headers.ContentType.ToString());
37+
Assert.AreEqual("application/json", req.Headers.Accept.ToString());
38+
return true;
39+
})
40+
.Respond(HttpStatusCode.OK, content);
41+
42+
var apiCall = CreateApiCall<ServerResponse>()
43+
.RequestBuilder(requestBuilderAction => requestBuilderAction
44+
.Setup(HttpMethod.Post, url)
45+
.Parameters(p => p
46+
.Body(b => b.Setup(oneOfAtomOrbit))))
47+
.ExecuteAsync();
48+
49+
// Act
50+
var actual = CoreHelper.RunTask(apiCall);
51+
52+
// Assert
53+
Assert.NotNull(actual);
54+
Assert.AreEqual((int)HttpStatusCode.OK, actual.StatusCode);
55+
Assert.AreEqual(expected, actual.Data);
56+
}
57+
58+
[Test]
59+
public void ApiCall_PostStringAsContainerData_OKResponse()
60+
{
61+
var anyOfStringDouble = NativeAnyOfContainer.FromString("some string as request body");
62+
var expected = new ServerResponse()
63+
{
64+
Passed = true,
65+
};
66+
var url = "/apicall/post-container-string/200";
67+
var contentType = "text/plain; charset=utf-8";
68+
69+
var content = JsonContent.Create(expected);
70+
handlerMock.When(GetCompleteUrl(url))
71+
.With(req =>
72+
{
73+
Assert.AreEqual(anyOfStringDouble.ToString(), req.Content.ReadAsStringAsync().Result);
74+
Assert.AreEqual(contentType, req.Content.Headers.ContentType.ToString());
75+
Assert.AreEqual("application/json", req.Headers.Accept.ToString());
76+
return true;
77+
})
78+
.Respond(HttpStatusCode.OK, content);
79+
80+
var apiCall = CreateApiCall<ServerResponse>()
81+
.RequestBuilder(requestBuilderAction => requestBuilderAction
82+
.Setup(HttpMethod.Post, url)
83+
.Parameters(p => p
84+
.Body(b => b.Setup(anyOfStringDouble))))
85+
.ExecuteAsync();
86+
87+
// Act
88+
var actual = CoreHelper.RunTask(apiCall);
89+
90+
// Assert
91+
Assert.NotNull(actual);
92+
Assert.AreEqual((int)HttpStatusCode.OK, actual.StatusCode);
93+
Assert.AreEqual(expected, actual.Data);
94+
}
95+
}
96+
}

APIMatic.Core.Test/Api/HttpPost/ApiCallPostFileTest.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ public void ApiCall_PostFileData_OKResponse()
5858

5959
// Assert
6060
Assert.NotNull(actual);
61-
Assert.AreEqual(actual.StatusCode, (int)HttpStatusCode.OK);
61+
Assert.AreEqual((int)HttpStatusCode.OK, actual.StatusCode);
6262
Assert.NotNull(actual.Data);
6363
}
6464

@@ -109,7 +109,7 @@ public void ApiCall_PostFileDataWithFileContentType_OKResponse()
109109

110110
// Assert
111111
Assert.NotNull(actual);
112-
Assert.AreEqual(actual.StatusCode, (int)HttpStatusCode.OK);
112+
Assert.AreEqual((int)HttpStatusCode.OK, actual.StatusCode);
113113
Assert.NotNull(actual.Data);
114114
}
115115

@@ -156,7 +156,7 @@ public void ApiCall_PostFileDataWithContentType_OKResponse()
156156

157157
// Assert
158158
Assert.NotNull(actual);
159-
Assert.AreEqual(actual.StatusCode, (int)HttpStatusCode.OK);
159+
Assert.AreEqual((int)HttpStatusCode.OK, actual.StatusCode);
160160
Assert.NotNull(actual.Data);
161161
}
162162

@@ -208,7 +208,7 @@ public void ApiCall_PostMultipartForm_OKResponse()
208208

209209
// Assert
210210
Assert.NotNull(actual);
211-
Assert.AreEqual(actual.StatusCode, (int)HttpStatusCode.OK);
211+
Assert.AreEqual((int)HttpStatusCode.OK, actual.StatusCode);
212212
Assert.NotNull(actual.Data);
213213
}
214214
}

APIMatic.Core.Test/Api/HttpPost/ApiCallPostStreamTest.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public void ApiCall_PostBodyStream_OKResponse()
5252

5353
// Assert
5454
Assert.NotNull(actual);
55-
Assert.AreEqual(actual.StatusCode, (int)HttpStatusCode.OK);
55+
Assert.AreEqual((int)HttpStatusCode.OK, actual.StatusCode);
5656
Assert.NotNull(actual.Data);
5757
}
5858

@@ -94,7 +94,7 @@ public void ApiCall_PostBodyStreamWithWrongContentType_OKResponse()
9494

9595
// Assert
9696
Assert.NotNull(actual);
97-
Assert.AreEqual(actual.StatusCode, (int)HttpStatusCode.OK);
97+
Assert.AreEqual((int)HttpStatusCode.OK, actual.StatusCode);
9898
Assert.NotNull(actual.Data);
9999
}
100100
}

APIMatic.Core.Test/Api/HttpPost/ApiCallPostTest.cs

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
using System;
2-
using System.Collections.Generic;
3-
using System.Linq;
2+
using System.Collections.Generic;
43
using System.Net;
54
using System.Net.Http;
65
using System.Net.Http.Json;
@@ -52,7 +51,7 @@ public void ApiCall_PostBody_OKResponse()
5251

5352
// Assert
5453
Assert.NotNull(actual);
55-
Assert.AreEqual(actual.StatusCode, (int)HttpStatusCode.OK);
54+
Assert.AreEqual((int)HttpStatusCode.OK, actual.StatusCode);
5655
Assert.NotNull(actual.Data);
5756
Assert.AreEqual(actual.Data.Message, expected.Message);
5857
}
@@ -101,7 +100,7 @@ public void ApiCall_PostMultipleBody_OKResponse()
101100

102101
// Assert
103102
Assert.NotNull(actual);
104-
Assert.AreEqual(actual.StatusCode, (int)HttpStatusCode.OK);
103+
Assert.AreEqual((int)HttpStatusCode.OK, actual.StatusCode);
105104
Assert.NotNull(actual.Data);
106105
Assert.AreEqual(actual.Data.Message, expected.Message);
107106
}
@@ -143,7 +142,7 @@ public void ApiCall_PostBodyNonScalar_OKResponse()
143142

144143
// Assert
145144
Assert.NotNull(actual);
146-
Assert.AreEqual(actual.StatusCode, (int)HttpStatusCode.OK);
145+
Assert.AreEqual((int)HttpStatusCode.OK, actual.StatusCode);
147146
Assert.NotNull(actual.Data);
148147
Assert.AreEqual(expected.Message, actual.Data.Message);
149148
}
@@ -188,7 +187,7 @@ public void ApiCall_PostBodyWithContentType_OKResponse()
188187

189188
// Assert
190189
Assert.NotNull(actual);
191-
Assert.AreEqual(actual.StatusCode, (int)HttpStatusCode.OK);
190+
Assert.AreEqual((int)HttpStatusCode.OK, actual.StatusCode);
192191
Assert.NotNull(actual.Data);
193192
Assert.AreEqual(expected.Message, actual.Data.Message);
194193
}
@@ -231,7 +230,7 @@ public void ApiCall_PostBodyWithEmptyContentType_OKResponse()
231230

232231
// Assert
233232
Assert.NotNull(actual);
234-
Assert.AreEqual(actual.StatusCode, (int)HttpStatusCode.OK);
233+
Assert.AreEqual((int)HttpStatusCode.OK, actual.StatusCode);
235234
Assert.NotNull(actual.Data);
236235
Assert.AreEqual(actual.Data.Message, expected.Message);
237236
}
@@ -273,7 +272,7 @@ public void ApiCall_PostBinaryBody_OKResponse()
273272

274273
// Assert
275274
Assert.NotNull(actual);
276-
Assert.AreEqual(actual.StatusCode, (int)HttpStatusCode.OK);
275+
Assert.AreEqual((int)HttpStatusCode.OK, actual.StatusCode);
277276
Assert.NotNull(actual.Data);
278277
}
279278

@@ -401,7 +400,7 @@ public void ApiCall_PostFormData_OKResponse()
401400

402401
// Assert
403402
Assert.NotNull(actual);
404-
Assert.AreEqual(actual.StatusCode, (int)HttpStatusCode.OK);
403+
Assert.AreEqual((int)HttpStatusCode.OK, actual.StatusCode);
405404
Assert.NotNull(actual.Data);
406405
Assert.AreEqual(actual.Data.Message, expected.Message);
407406
}
@@ -449,7 +448,7 @@ public void ApiCall_PostQueryData_OKResponse()
449448

450449
// Assert
451450
Assert.NotNull(actual);
452-
Assert.AreEqual(actual.StatusCode, (int)HttpStatusCode.OK);
451+
Assert.AreEqual((int)HttpStatusCode.OK, actual.StatusCode);
453452
Assert.NotNull(actual.Data);
454453
Assert.AreEqual(actual.Data.Message, expected.Message);
455454
}
@@ -473,8 +472,7 @@ public void ApiCall_PostNullHeaderValue_OKResponse()
473472
.With(req =>
474473
{
475474
Assert.AreEqual(text, req.Content.ReadAsStringAsync().Result);
476-
Assert.IsTrue(req.Headers.Contains(headerKey));
477-
Assert.AreEqual(string.Empty, req.Headers.GetValues(headerKey).FirstOrDefault());
475+
Assert.False(req.Headers.Contains(headerKey));
478476
return true;
479477
})
480478
.Respond(HttpStatusCode.OK, content);
@@ -492,7 +490,7 @@ public void ApiCall_PostNullHeaderValue_OKResponse()
492490

493491
// Assert
494492
Assert.NotNull(actual);
495-
Assert.AreEqual(actual.StatusCode, (int)HttpStatusCode.OK);
493+
Assert.AreEqual((int)HttpStatusCode.OK, actual.StatusCode);
496494
Assert.NotNull(actual.Data);
497495
Assert.AreEqual(actual.Data.Message, expected.Message);
498496
}

APIMatic.Core.Test/Api/HttpPost/ApiCallPostXMLTest.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public void ApiCall_PostXmlLong_OKResponse()
4848

4949
// Assert
5050
Assert.NotNull(actual);
51-
Assert.AreEqual(actual.StatusCode, (int)HttpStatusCode.OK);
51+
Assert.AreEqual((int)HttpStatusCode.OK, actual.StatusCode);
5252
Assert.NotNull(actual.Data);
5353
Assert.AreEqual(actual.Data.Message, expected.Message);
5454
}
@@ -90,7 +90,7 @@ public void ApiCall_PostXmlString_OKResponse()
9090

9191
// Assert
9292
Assert.NotNull(actual);
93-
Assert.AreEqual(actual.StatusCode, (int)HttpStatusCode.OK);
93+
Assert.AreEqual((int)HttpStatusCode.OK, actual.StatusCode);
9494
Assert.NotNull(actual.Data);
9595
Assert.AreEqual(actual.Data.Message, expected.Message);
9696
}

APIMatic.Core.Test/Http/HttpClientWrapperTest.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ public async Task HttpClient_GetCall_200Response()
5353

5454
var actual = await _client.ExecuteAsync(request);
5555

56-
Assert.AreEqual(actual.StatusCode, (int)HttpStatusCode.OK);
56+
Assert.AreEqual((int)HttpStatusCode.OK, actual.StatusCode);
5757
Assert.AreEqual(actual.Body, request.Body);
5858
}
5959

@@ -73,7 +73,7 @@ public async Task TestHttpClientGetCall_400Response()
7373

7474
var actual = await _client.ExecuteAsync(request);
7575

76-
Assert.AreEqual(actual.StatusCode, (int)HttpStatusCode.BadRequest);
76+
Assert.AreEqual((int)HttpStatusCode.BadRequest, actual.StatusCode);
7777
Assert.AreEqual(actual.Body, request.Body);
7878
}
7979

@@ -105,7 +105,7 @@ public async Task TestHttpClientGetCall_200Response()
105105
// Act
106106
var actual = await _client.ExecuteAsync(request);
107107

108-
Assert.AreEqual(actual.StatusCode, (int)HttpStatusCode.OK);
108+
Assert.AreEqual((int)HttpStatusCode.OK, actual.StatusCode);
109109
Assert.AreEqual(customHeaderValue, actual.Headers[customHeaderKey]);
110110
}
111111
}

APIMatic.Core.Test/MockTypes/Convertors/ListDateTimeConverter.cs

Lines changed: 0 additions & 33 deletions
This file was deleted.

APIMatic.Core.Test/MockTypes/Convertors/MapDateTimeConverter.cs

Lines changed: 0 additions & 35 deletions
This file was deleted.

0 commit comments

Comments
 (0)