Skip to content

Commit 0e58501

Browse files
committed
Improved Networking test coverage
1 parent b6f9f9b commit 0e58501

6 files changed

Lines changed: 373 additions & 0 deletions
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
namespace MADE.Networking.Tests.Tests
2+
{
3+
using System.Diagnostics.CodeAnalysis;
4+
using System.Net;
5+
using System.Net.Http;
6+
using System.Threading.Tasks;
7+
using MADE.Networking.Http.Requests.Json;
8+
using Newtonsoft.Json.Linq;
9+
using NUnit.Framework;
10+
using Shouldly;
11+
12+
[ExcludeFromCodeCoverage]
13+
[TestFixture]
14+
public class JsonDeleteNetworkRequestTests
15+
{
16+
public class WhenExecutingRequest
17+
{
18+
[Test]
19+
public async Task ShouldReturnSuccessFromDeleteEndpointWithResponse()
20+
{
21+
// Arrange
22+
const string query = "test";
23+
const bool queryValue = true;
24+
25+
var requestUrl = $"https://httpbin.org/delete?{query}={queryValue}";
26+
var request = new JsonDeleteNetworkRequest(new HttpClient(), requestUrl);
27+
28+
// Act
29+
var response = await request.ExecuteAsync<RequestResponse>();
30+
31+
// Assert
32+
response.ShouldNotBeNull();
33+
response.Url.ShouldBe(requestUrl);
34+
response.Args.Value<bool>(query).ShouldBe(queryValue);
35+
}
36+
37+
[Test]
38+
public async Task ShouldReturnErrorFromGetEndpoint()
39+
{
40+
// Arrange
41+
const string query = "test";
42+
const bool queryValue = true;
43+
44+
var requestUrl = $"https://httpbin.org/get?{query}={queryValue}";
45+
var request = new JsonDeleteNetworkRequest(new HttpClient(), requestUrl);
46+
47+
// Act
48+
var exception = await request.ExecuteAsync<RequestResponse>().ShouldThrowAsync<HttpRequestException>();
49+
50+
// Assert
51+
exception.StatusCode.ShouldBe(HttpStatusCode.MethodNotAllowed);
52+
}
53+
}
54+
55+
public class RequestResponse
56+
{
57+
public JObject Args { get; set; }
58+
59+
public string Url { get; set; }
60+
}
61+
}
62+
}
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
namespace MADE.Networking.Tests.Tests
2+
{
3+
using System.Diagnostics.CodeAnalysis;
4+
using System.Net;
5+
using System.Net.Http;
6+
using System.Threading.Tasks;
7+
using MADE.Networking.Http.Requests.Json;
8+
using Newtonsoft.Json.Linq;
9+
using NUnit.Framework;
10+
using Shouldly;
11+
12+
[ExcludeFromCodeCoverage]
13+
[TestFixture]
14+
public class JsonGetNetworkRequestTests
15+
{
16+
public class WhenExecutingRequest
17+
{
18+
[Test]
19+
public async Task ShouldReturnSuccessFromGetEndpointWithResponse()
20+
{
21+
// Arrange
22+
const string query = "test";
23+
const bool queryValue = true;
24+
25+
var requestUrl = $"https://httpbin.org/get?{query}={queryValue}";
26+
var request = new JsonGetNetworkRequest(new HttpClient(), requestUrl);
27+
28+
// Act
29+
var response = await request.ExecuteAsync<RequestResponse>();
30+
31+
// Assert
32+
response.ShouldNotBeNull();
33+
response.Url.ShouldBe(requestUrl);
34+
response.Args.Value<bool>(query).ShouldBe(queryValue);
35+
}
36+
37+
[Test]
38+
public async Task ShouldReturnErrorFromDeleteEndpoint()
39+
{
40+
// Arrange
41+
const string query = "test";
42+
const bool queryValue = true;
43+
44+
var requestUrl = $"https://httpbin.org/delete?{query}={queryValue}";
45+
var request = new JsonGetNetworkRequest(new HttpClient(), requestUrl);
46+
47+
// Act
48+
var exception = await request.ExecuteAsync<RequestResponse>().ShouldThrowAsync<HttpRequestException>();
49+
50+
// Assert
51+
exception.StatusCode.ShouldBe(HttpStatusCode.MethodNotAllowed);
52+
}
53+
}
54+
55+
public class RequestResponse
56+
{
57+
public JObject Args { get; set; }
58+
59+
public string Url { get; set; }
60+
}
61+
}
62+
}
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
namespace MADE.Networking.Tests.Tests
2+
{
3+
using System.Diagnostics.CodeAnalysis;
4+
using System.Net;
5+
using System.Net.Http;
6+
using System.Threading.Tasks;
7+
using MADE.Networking.Http.Requests.Json;
8+
using Newtonsoft.Json;
9+
using Newtonsoft.Json.Linq;
10+
using NUnit.Framework;
11+
using Shouldly;
12+
13+
[ExcludeFromCodeCoverage]
14+
[TestFixture]
15+
public class JsonPatchNetworkRequestTests
16+
{
17+
public class WhenExecutingRequest
18+
{
19+
[Test]
20+
public async Task ShouldReturnSuccessFromPatchEndpointWithResponse()
21+
{
22+
// Arrange
23+
var requestData = new RequestData { Key = "test", Enabled = true };
24+
25+
const string requestUrl = "https://httpbin.org/patch";
26+
var request = new JsonPatchNetworkRequest(
27+
new HttpClient(),
28+
requestUrl,
29+
JsonConvert.SerializeObject(requestData));
30+
31+
// Act
32+
var response = await request.ExecuteAsync<RequestResponse>();
33+
34+
// Assert
35+
response.ShouldNotBeNull();
36+
response.Url.ShouldBe(requestUrl);
37+
response.Data.ShouldNotBeNull();
38+
39+
var responseData = JsonConvert.DeserializeObject<RequestData>(response.Data);
40+
responseData.ShouldNotBeNull();
41+
responseData.Key.ShouldBe(requestData.Key);
42+
responseData.Enabled.ShouldBe(requestData.Enabled);
43+
}
44+
45+
[Test]
46+
public async Task ShouldReturnErrorFromGetEndpoint()
47+
{
48+
// Arrange
49+
var requestData = new RequestData { Key = "test", Enabled = true };
50+
51+
const string requestUrl = "https://httpbin.org/get";
52+
var request = new JsonPatchNetworkRequest(
53+
new HttpClient(),
54+
requestUrl,
55+
JsonConvert.SerializeObject(requestData));
56+
57+
// Act
58+
var exception = await request.ExecuteAsync<RequestResponse>().ShouldThrowAsync<HttpRequestException>();
59+
60+
// Assert
61+
exception.StatusCode.ShouldBe(HttpStatusCode.MethodNotAllowed);
62+
}
63+
}
64+
65+
public class RequestData
66+
{
67+
public string Key { get; set; }
68+
69+
public bool Enabled { get; set; }
70+
}
71+
72+
public class RequestResponse
73+
{
74+
public JObject Args { get; set; }
75+
76+
public string Data { get; set; }
77+
78+
public string Url { get; set; }
79+
}
80+
}
81+
}
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
namespace MADE.Networking.Tests.Tests
2+
{
3+
using System.Diagnostics.CodeAnalysis;
4+
using System.Net;
5+
using System.Net.Http;
6+
using System.Threading.Tasks;
7+
using MADE.Networking.Http.Requests.Json;
8+
using Newtonsoft.Json;
9+
using Newtonsoft.Json.Linq;
10+
using NUnit.Framework;
11+
using Shouldly;
12+
13+
[ExcludeFromCodeCoverage]
14+
[TestFixture]
15+
public class JsonPostNetworkRequestTests
16+
{
17+
public class WhenExecutingRequest
18+
{
19+
[Test]
20+
public async Task ShouldReturnSuccessFromPostEndpointWithResponse()
21+
{
22+
// Arrange
23+
var requestData = new RequestData { Key = "test", Enabled = true };
24+
25+
const string requestUrl = "https://httpbin.org/post";
26+
var request = new JsonPostNetworkRequest(
27+
new HttpClient(),
28+
requestUrl,
29+
JsonConvert.SerializeObject(requestData));
30+
31+
// Act
32+
var response = await request.ExecuteAsync<RequestResponse>();
33+
34+
// Assert
35+
response.ShouldNotBeNull();
36+
response.Url.ShouldBe(requestUrl);
37+
response.Data.ShouldNotBeNull();
38+
39+
var responseData = JsonConvert.DeserializeObject<RequestData>(response.Data);
40+
responseData.ShouldNotBeNull();
41+
responseData.Key.ShouldBe(requestData.Key);
42+
responseData.Enabled.ShouldBe(requestData.Enabled);
43+
}
44+
45+
[Test]
46+
public async Task ShouldReturnErrorFromGetEndpoint()
47+
{
48+
// Arrange
49+
var requestData = new RequestData { Key = "test", Enabled = true };
50+
51+
const string requestUrl = "https://httpbin.org/get";
52+
var request = new JsonPatchNetworkRequest(
53+
new HttpClient(),
54+
requestUrl,
55+
JsonConvert.SerializeObject(requestData));
56+
57+
// Act
58+
var exception = await request.ExecuteAsync<RequestResponse>().ShouldThrowAsync<HttpRequestException>();
59+
60+
// Assert
61+
exception.StatusCode.ShouldBe(HttpStatusCode.MethodNotAllowed);
62+
}
63+
}
64+
65+
public class RequestData
66+
{
67+
public string Key { get; set; }
68+
69+
public bool Enabled { get; set; }
70+
}
71+
72+
public class RequestResponse
73+
{
74+
public JObject Args { get; set; }
75+
76+
public string Data { get; set; }
77+
78+
public string Url { get; set; }
79+
}
80+
}
81+
}
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
namespace MADE.Networking.Tests.Tests
2+
{
3+
using System.Diagnostics.CodeAnalysis;
4+
using System.Net;
5+
using System.Net.Http;
6+
using System.Threading.Tasks;
7+
using MADE.Networking.Http.Requests.Json;
8+
using Newtonsoft.Json;
9+
using Newtonsoft.Json.Linq;
10+
using NUnit.Framework;
11+
using Shouldly;
12+
13+
[ExcludeFromCodeCoverage]
14+
[TestFixture]
15+
public class JsonPutNetworkRequestTests
16+
{
17+
public class WhenExecutingRequest
18+
{
19+
[Test]
20+
public async Task ShouldReturnSuccessFromPutEndpointWithResponse()
21+
{
22+
// Arrange
23+
var requestData = new RequestData { Key = "test", Enabled = true };
24+
25+
const string requestUrl = "https://httpbin.org/put";
26+
var request = new JsonPutNetworkRequest(
27+
new HttpClient(),
28+
requestUrl,
29+
JsonConvert.SerializeObject(requestData));
30+
31+
// Act
32+
var response = await request.ExecuteAsync<RequestResponse>();
33+
34+
// Assert
35+
response.ShouldNotBeNull();
36+
response.Url.ShouldBe(requestUrl);
37+
response.Data.ShouldNotBeNull();
38+
39+
var responseData = JsonConvert.DeserializeObject<RequestData>(response.Data);
40+
responseData.ShouldNotBeNull();
41+
responseData.Key.ShouldBe(requestData.Key);
42+
responseData.Enabled.ShouldBe(requestData.Enabled);
43+
}
44+
45+
[Test]
46+
public async Task ShouldReturnErrorFromGetEndpoint()
47+
{
48+
// Arrange
49+
var requestData = new RequestData { Key = "test", Enabled = true };
50+
51+
const string requestUrl = "https://httpbin.org/get";
52+
var request = new JsonPatchNetworkRequest(
53+
new HttpClient(),
54+
requestUrl,
55+
JsonConvert.SerializeObject(requestData));
56+
57+
// Act
58+
var exception = await request.ExecuteAsync<RequestResponse>().ShouldThrowAsync<HttpRequestException>();
59+
60+
// Assert
61+
exception.StatusCode.ShouldBe(HttpStatusCode.MethodNotAllowed);
62+
}
63+
}
64+
65+
public class RequestData
66+
{
67+
public string Key { get; set; }
68+
69+
public bool Enabled { get; set; }
70+
}
71+
72+
public class RequestResponse
73+
{
74+
public JObject Args { get; set; }
75+
76+
public string Data { get; set; }
77+
78+
public string Url { get; set; }
79+
}
80+
}
81+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
namespace MADE.Networking.Tests.Tests
2+
{
3+
internal class NetworkRequestManagerTests
4+
{
5+
}
6+
}

0 commit comments

Comments
 (0)