Skip to content

Commit 36ceaf4

Browse files
author
Tyler Mendes de Brito
authored
Merge pull request #12 from uneecorn/ReworkUnicornConfig
rework config
2 parents b783e1d + 33596c9 commit 36ceaf4

File tree

6 files changed

+45
-117
lines changed

6 files changed

+45
-117
lines changed

Tests/HttUnicorn.Tests/DeleteTest.cs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using HttUnicorn.Tests.Model;
77
using HttUnicorn.Tests.Util;
88
using Microsoft.VisualStudio.TestTools.UnitTesting;
9+
using static HttUnicorn.Config.UnicornConfig;
910

1011
namespace HttUnicorn.Tests
1112
{
@@ -15,20 +16,20 @@ public class DeleteTest
1516
[TestMethod]
1617
public void DeleteResponse()
1718
{
18-
List<Todo> oldTodos = new Unicorn(new UnicornConfig(Constants.URL))
19+
List<Todo> oldTodos = new Unicorn(UnicornConfigFactory.NewInstance(Constants.URL))
1920
.GetModelAsync<List<Todo>>().Result;
2021
Assert.IsTrue(oldTodos != null && oldTodos.Count > 0);
2122

2223
int oldCount = oldTodos.Count;
2324

2425
Todo first = oldTodos.FirstOrDefault();
2526

26-
HttpResponseMessage result = new Unicorn(new UnicornConfig(Constants.URL))
27+
HttpResponseMessage result = new Unicorn(UnicornConfigFactory.NewInstance(Constants.URL))
2728
.DeleteResponseAsync(first.Id).Result;
2829

2930
Assert.IsTrue(result.IsSuccessStatusCode);
3031

31-
List<Todo> newTodos = new Unicorn(new UnicornConfig(Constants.URL))
32+
List<Todo> newTodos = new Unicorn(UnicornConfigFactory.NewInstance(Constants.URL))
3233
.GetModelAsync<List<Todo>>().Result;
3334

3435
Assert.IsTrue(newTodos != null && newTodos.Count > 0);
@@ -41,18 +42,18 @@ public void DeleteResponse()
4142
[TestMethod]
4243
public void DeleteJson()
4344
{
44-
List<Todo> oldTodos = new Unicorn(new UnicornConfig(Constants.URL))
45+
List<Todo> oldTodos = new Unicorn(UnicornConfigFactory.NewInstance(Constants.URL))
4546
.GetModelAsync<List<Todo>>().Result;
4647
Assert.IsTrue(oldTodos != null && oldTodos.Count > 0);
4748

4849
int oldCount = oldTodos.Count;
4950

5051
Todo first = oldTodos.FirstOrDefault();
5152

52-
string result = new Unicorn(new UnicornConfig(Constants.URL))
53+
string result = new Unicorn(UnicornConfigFactory.NewInstance(Constants.URL))
5354
.DeleteStringAsync(first.Id).Result;
5455

55-
List<Todo> newTodos = new Unicorn(new UnicornConfig(Constants.URL))
56+
List<Todo> newTodos = new Unicorn(UnicornConfigFactory.NewInstance(Constants.URL))
5657
.GetModelAsync<List<Todo>>().Result;
5758

5859
Assert.IsTrue(newTodos != null && newTodos.Count > 0);

Tests/HttUnicorn.Tests/GetTest.cs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using HttUnicorn.Tests.Model;
77
using HttUnicorn.Tests.Util;
88
using Microsoft.VisualStudio.TestTools.UnitTesting;
9+
using static HttUnicorn.Config.UnicornConfig;
910

1011
namespace HttUnicorn.Tests
1112
{
@@ -16,7 +17,7 @@ public class GetTest
1617
public void GetResponse()
1718
{
1819
using (HttpResponseMessage responseMessage =
19-
new Unicorn(new UnicornConfig(Constants.URL))
20+
new Unicorn(UnicornConfigFactory.NewInstance(Constants.URL))
2021
.GetResponseAsync().Result)
2122
{
2223
Assert.IsTrue(responseMessage.IsSuccessStatusCode);
@@ -26,18 +27,18 @@ public void GetResponse()
2627
[TestMethod]
2728
public void GetString()
2829
{
29-
string jsonString = new Unicorn(new UnicornConfig(Constants.URL)).GetStringAync().Result;
30+
string jsonString = new Unicorn(UnicornConfigFactory.NewInstance(Constants.URL)).GetStringAync().Result;
3031
Assert.IsTrue(jsonString.Length > 0);
3132
}
3233

3334
[TestMethod]
3435
public void GetModel()
3536
{
36-
List<Todo> todos = new Unicorn(new UnicornConfig(Constants.URL)).GetModelAsync<List<Todo>>().Result;
37+
List<Todo> todos = new Unicorn(UnicornConfigFactory.NewInstance(Constants.URL)).GetModelAsync<List<Todo>>().Result;
3738

3839
Assert.IsTrue(todos != null && todos.Count > 0);
3940

40-
Todo model = new Unicorn(new UnicornConfig(Constants.URL + "/" + todos.FirstOrDefault().Id)).GetModelAsync<Todo>().Result;
41+
Todo model = new Unicorn(UnicornConfigFactory.NewInstance(Constants.URL + "/" + todos.FirstOrDefault().Id)).GetModelAsync<Todo>().Result;
4142
Assert.IsNotNull(model);
4243
Assert.IsTrue(model.Id > 0);
4344
}

Tests/HttUnicorn.Tests/PostTest.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using HttUnicorn.Tests.Model;
55
using HttUnicorn.Tests.Util;
66
using Microsoft.VisualStudio.TestTools.UnitTesting;
7+
using static HttUnicorn.Config.UnicornConfig;
78

89
namespace HttUnicorn.Tests
910
{
@@ -15,7 +16,7 @@ public void PostResponse()
1516
{
1617

1718
using (HttpResponseMessage result =
18-
new Unicorn(new UnicornConfig(Constants.URL))
19+
new Unicorn(UnicornConfigFactory.NewInstance(Constants.URL))
1920
.PostRespnseAsync(new Todo
2021
{
2122
Completed = true,
@@ -30,7 +31,7 @@ public void PostResponse()
3031
[TestMethod]
3132
public void PostString()
3233
{
33-
string result = new Unicorn(new UnicornConfig(Constants.URL))
34+
string result = new Unicorn(UnicornConfigFactory.NewInstance(Constants.URL))
3435
.PostStringAsync(new Todo
3536
{
3637
Completed = true,
@@ -44,7 +45,7 @@ public void PostString()
4445
[TestMethod]
4546
public void PostModel()
4647
{
47-
Todo result = new Unicorn(new UnicornConfig(Constants.URL)).PostModelAsync<Todo, Todo>(new Todo
48+
Todo result = new Unicorn(UnicornConfigFactory.NewInstance(Constants.URL)).PostModelAsync<Todo, Todo>(new Todo
4849
{
4950
Completed = true,
5051
Title = "My todo",

Tests/HttUnicorn.Tests/PutTest.cs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using HttUnicorn.Tests.Model;
66
using HttUnicorn.Tests.Util;
77
using Microsoft.VisualStudio.TestTools.UnitTesting;
8+
using static HttUnicorn.Config.UnicornConfig;
89

910
namespace HttUnicorn.Tests
1011
{
@@ -15,14 +16,14 @@ public class PutTest
1516
public void PutResponse()
1617
{
1718
string url = Constants.URL + "/21";
18-
Todo oldModel = new Unicorn(new UnicornConfig(url)).GetModelAsync<Todo>().Result;
19+
Todo oldModel = new Unicorn(UnicornConfigFactory.NewInstance(url)).GetModelAsync<Todo>().Result;
1920
Assert.IsNotNull(oldModel);
2021
Assert.IsTrue(oldModel.Id > 0);
2122

2223
oldModel.Title = "My edited todo";
2324

2425
using (HttpResponseMessage responseMessage =
25-
new Unicorn(new UnicornConfig(Constants.URL))
26+
new Unicorn(UnicornConfigFactory.NewInstance(Constants.URL))
2627
.PutResponseAsync(oldModel, oldModel.Id).Result)
2728
{
2829
Assert.IsTrue(responseMessage.IsSuccessStatusCode);
@@ -37,14 +38,14 @@ public void PutResponse()
3738
public void PutString()
3839
{
3940
string urlGet = Constants.URL + "/22";
40-
Todo oldModel = new Unicorn(new UnicornConfig(urlGet))
41+
Todo oldModel = new Unicorn(UnicornConfigFactory.NewInstance(urlGet))
4142
.GetModelAsync<Todo>().Result;
4243
Assert.IsNotNull(oldModel);
4344
Assert.IsTrue(oldModel.Id > 0);
4445

4546
oldModel.Title = "My edited todo";
4647

47-
string stringResult = new Unicorn(new UnicornConfig(Constants.URL))
48+
string stringResult = new Unicorn(UnicornConfigFactory.NewInstance(Constants.URL))
4849
.PutStringAsync(oldModel, oldModel.Id).Result;
4950

5051
Todo newModel = Serializer.Deserialize<Todo>(stringResult);
@@ -57,14 +58,14 @@ public void PutString()
5758
public void PutModel()
5859
{
5960
string urlGet = Constants.URL + "/23";
60-
Todo oldModel = new Unicorn(new UnicornConfig(urlGet))
61+
Todo oldModel = new Unicorn(UnicornConfigFactory.NewInstance(urlGet))
6162
.GetModelAsync<Todo>().Result;
6263
Assert.IsNotNull(oldModel);
6364
Assert.IsTrue(oldModel.Id > 0);
6465

6566
oldModel.Title = "My edited todo";
6667

67-
Todo newModel = new Unicorn(new UnicornConfig(Constants.URL))
68+
Todo newModel = new Unicorn(UnicornConfigFactory.NewInstance(Constants.URL))
6869
.PutModelAsync<Todo, Todo>(oldModel, oldModel.Id).Result;
6970

7071
Assert.IsNotNull(newModel);

src/HttUnicorn/HttUnicorn/Config/UnicornConfig.cs

Lines changed: 22 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -34,69 +34,31 @@ private set
3434
/// </summary>
3535
public IList<UnicornHeader> Headers { get; private set; }
3636

37-
/// <summary>
38-
/// Creates a new config object with default timeout (20 seconds),
39-
/// default header list (empty list), specified url and method.
40-
/// </summary>
41-
/// <param name="url">Request's url</param>
42-
public UnicornConfig(string url)
43-
{
44-
Url = url;
45-
Timeout = Constants.DEFAULT_TIMEOUT_VALUE;
46-
Headers = Constants.DEFAULT_HEADERS;
47-
}
48-
49-
/// <summary>
50-
/// Creates a new config object with default header list (empty list),
51-
/// specified url, method and timeout
52-
/// </summary>
53-
/// <param name="url">Request's url</param>
54-
/// <param name="timeout">Request's timeout</param>
55-
public UnicornConfig(string url, TimeSpan timeout)
56-
{
57-
Url = url;
58-
Timeout = timeout;
59-
Headers = Constants.DEFAULT_HEADERS;
60-
}
61-
62-
/// <summary>
63-
/// Creates a new config object with default header list (empty list),
64-
/// specified url, method and timeout
65-
/// </summary>
66-
/// <param name="url">Request's url</param>
67-
/// <param name="timeout">Request's timeout</param>
68-
public UnicornConfig(string url, short timeoutSeconds)
37+
public static class UnicornConfigFactory
6938
{
70-
Url = url;
71-
Timeout = TimeSpan.FromSeconds(timeoutSeconds);
72-
Headers = Constants.DEFAULT_HEADERS;
73-
}
39+
/// <summary>
40+
/// Creates a new config object
41+
/// </summary>
42+
/// <param name="url">Request's url</param>
43+
/// <param name="timeout">Request's timeout</param>
44+
/// <param name="headers">Request's headers</param>
45+
/// <returns>New instance of UnicornConfig class</returns>
46+
public static UnicornConfig NewInstance(string url,
47+
TimeSpan? timeout = null,
48+
IList<UnicornHeader> headers = null)
49+
{
50+
return new UnicornConfig
51+
{
52+
Url = url,
53+
Timeout = GetTimeout(timeout),
54+
Headers = GetHeaders(headers),
55+
};
56+
}
7457

75-
/// <summary>
76-
/// Creates a new config object with default timeout (20 seconds),
77-
/// specified url, method and header list
78-
/// </summary>
79-
/// <param name="url">Request's url</param>
80-
/// <param name="headers">Request's headers</param>
81-
public UnicornConfig(string url, IList<UnicornHeader> headers)
82-
{
83-
Url = url;
84-
Headers = headers;
85-
Timeout = Constants.DEFAULT_TIMEOUT_VALUE;
58+
static TimeSpan GetTimeout(TimeSpan? timeout = null) => timeout ?? Constants.DEFAULT_TIMEOUT_VALUE;
59+
static IList<UnicornHeader> GetHeaders(IList<UnicornHeader> headers = null) => headers ?? Constants.DEFAULT_HEADERS;
8660
}
8761

88-
/// <summary>
89-
/// Creates a new config object with specified url,
90-
/// method, timeout and header list
91-
/// </summary>
92-
/// <param name="url">Request's url</param>
93-
/// <param name="timeout">Request's timeout</param>
94-
/// <param name="headers">Request's headers</param>
95-
public UnicornConfig(string url, TimeSpan timeout, IList<UnicornHeader> headers)
96-
{
97-
Url = url;
98-
Timeout = timeout;
99-
Headers = headers;
100-
}
62+
private UnicornConfig() { }
10163
}
10264
}

src/HttUnicorn/HttUnicorn/Request/UnicornRequest.cs

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

0 commit comments

Comments
 (0)