From 90074ad8ecc39522074731d4780d3897c12bb962 Mon Sep 17 00:00:00 2001 From: Matthew Jorgensen Date: Fri, 4 Oct 2024 12:05:03 -0500 Subject: [PATCH 1/7] Add Tests project --- LinkAce.NET.Tests/GlobalUsings.cs | 1 + LinkAce.NET.Tests/LinkAce.NET.Tests.csproj | 24 ++++++++++++++++++++++ LinkAce.sln | 7 +++++++ 3 files changed, 32 insertions(+) create mode 100644 LinkAce.NET.Tests/GlobalUsings.cs create mode 100644 LinkAce.NET.Tests/LinkAce.NET.Tests.csproj diff --git a/LinkAce.NET.Tests/GlobalUsings.cs b/LinkAce.NET.Tests/GlobalUsings.cs new file mode 100644 index 0000000..540383d --- /dev/null +++ b/LinkAce.NET.Tests/GlobalUsings.cs @@ -0,0 +1 @@ +global using Microsoft.VisualStudio.TestTools.UnitTesting; diff --git a/LinkAce.NET.Tests/LinkAce.NET.Tests.csproj b/LinkAce.NET.Tests/LinkAce.NET.Tests.csproj new file mode 100644 index 0000000..081932f --- /dev/null +++ b/LinkAce.NET.Tests/LinkAce.NET.Tests.csproj @@ -0,0 +1,24 @@ + + + + net7.0;net8.0 + enable + enable + + false + true + + + + + + + + + + + + + + + diff --git a/LinkAce.sln b/LinkAce.sln index 8c2681b..04618ab 100644 --- a/LinkAce.sln +++ b/LinkAce.sln @@ -19,6 +19,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LinkAce.NET", "src\LinkAce. EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestApp", "src\TestApp\TestApp.csproj", "{97052387-BAA1-40E8-A861-C412B373FBDC}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LinkAce.NET.Tests", "LinkAce.NET.Tests\LinkAce.NET.Tests.csproj", "{671997C6-2DA3-45AB-87C2-4A335C976685}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -33,10 +35,15 @@ Global {97052387-BAA1-40E8-A861-C412B373FBDC}.Debug|Any CPU.Build.0 = Debug|Any CPU {97052387-BAA1-40E8-A861-C412B373FBDC}.Release|Any CPU.ActiveCfg = Release|Any CPU {97052387-BAA1-40E8-A861-C412B373FBDC}.Release|Any CPU.Build.0 = Release|Any CPU + {671997C6-2DA3-45AB-87C2-4A335C976685}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {671997C6-2DA3-45AB-87C2-4A335C976685}.Debug|Any CPU.Build.0 = Debug|Any CPU + {671997C6-2DA3-45AB-87C2-4A335C976685}.Release|Any CPU.ActiveCfg = Release|Any CPU + {671997C6-2DA3-45AB-87C2-4A335C976685}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(NestedProjects) = preSolution {7E05B1B4-5625-4A84-A2B2-4D66C8059904} = {E1115509-DC42-44D8-A031-A207EF90073F} {6C83B6FB-E141-46BA-A446-8346BB11A7E3} = {22C844A6-ACCE-4473-9C7B-D53D613DA802} {97052387-BAA1-40E8-A861-C412B373FBDC} = {22C844A6-ACCE-4473-9C7B-D53D613DA802} + {671997C6-2DA3-45AB-87C2-4A335C976685} = {66EB4E20-E8C9-43B5-9B51-B3BB962AEEF2} EndGlobalSection EndGlobal From 2510512b2de85f4f43355481d4415c8dca38a4ef Mon Sep 17 00:00:00 2001 From: Matthew Jorgensen Date: Fri, 4 Oct 2024 12:06:33 -0500 Subject: [PATCH 2/7] Refactor LinkAceClient to allow for passing in an HttpClient --- src/LinkAce.NET/LinkAceClient.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/LinkAce.NET/LinkAceClient.cs b/src/LinkAce.NET/LinkAceClient.cs index cbf222d..5ee7fd1 100644 --- a/src/LinkAce.NET/LinkAceClient.cs +++ b/src/LinkAce.NET/LinkAceClient.cs @@ -16,7 +16,7 @@ namespace LinkAce.NET; public class LinkAceClient { private static string? _apiUrl; - private static HttpClient _client = new(); + private static HttpClient _client; /// /// Initializes a new instance of the class with the specified URL and HTTP client. /// @@ -32,10 +32,12 @@ public LinkAceClient(string linkAceUrl, HttpClient httpClient) /// /// The base URL of the LinkAce.NET instance. /// The API token for authentication. - public LinkAceClient(string linkAceUrl, string apiToken) + /// The HTTP client to use for requests. + public LinkAceClient(string linkAceUrl, string apiToken, HttpClient? client = null) { _apiUrl = $"{linkAceUrl}/api/v1"; // Setup HttpClient + _client = client ?? new HttpClient(); _client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(MediaTypeNames.Application.Json)); _client.DefaultRequestHeaders.UserAgent.Add(Meta.UserAgent); _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", apiToken); From 1411280081dd4afcd26b6c35716f63654e889a72 Mon Sep 17 00:00:00 2001 From: Matthew Jorgensen Date: Fri, 4 Oct 2024 13:37:26 -0500 Subject: [PATCH 3/7] Add TestData --- LinkAce.NET.Tests/TestData.cs | 94 +++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 LinkAce.NET.Tests/TestData.cs diff --git a/LinkAce.NET.Tests/TestData.cs b/LinkAce.NET.Tests/TestData.cs new file mode 100644 index 0000000..6b008cf --- /dev/null +++ b/LinkAce.NET.Tests/TestData.cs @@ -0,0 +1,94 @@ +namespace LinkAce.NET.Tests; + +public class TestData +{ + public const string TestApiKey = "testing-token"; + public const string SearchLinkResponseJson = @"{ + ""current_page"": 1, + ""data"": [ + { + ""check_disabled"": false, + ""created_at"": ""2020-09-21T21:39:11.000000Z"", + ""deleted_at"": null, + ""description"": ""Pictures from my Atreus keyboard build"", + ""icon"": ""link"", + ""id"": 1098, + ""is_private"": false, + ""status"": 1, + ""tags"": [ + { + ""created_at"": ""2023-06-09T16:16:36.000000Z"", + ""deleted_at"": null, + ""id"": 603, + ""is_private"": false, + ""name"": ""atreus"", + ""pivot"": { + ""link_id"": 1098, + ""tag_id"": 603 + }, + ""updated_at"": ""2023-06-09T16:16:36.000000Z"", + ""user_id"": 1 + }, + { + ""created_at"": ""2023-06-09T16:07:30.000000Z"", + ""deleted_at"": null, + ""id"": 234, + ""is_private"": false, + ""name"": ""diy"", + ""pivot"": { + ""link_id"": 1098, + ""tag_id"": 234 + }, + ""updated_at"": ""2023-06-09T16:07:30.000000Z"", + ""user_id"": 1 + }, + { + ""created_at"": ""2023-06-09T16:16:37.000000Z"", + ""deleted_at"": null, + ""id"": 605, + ""is_private"": false, + ""name"": ""keyboard"", + ""pivot"": { + ""link_id"": 1098, + ""tag_id"": 605 + }, + ""updated_at"": ""2023-06-09T16:16:37.000000Z"", + ""user_id"": 1 + } + ], + ""thumbnail"": null, + ""title"": ""Classic Atreus Build - jphotos"", + ""updated_at"": ""2023-06-09T16:16:37.000000Z"", + ""url"": ""https://photos.jrgnsn.net/album/classic-atreus-build"", + ""user_id"": 1 + } + ], + ""first_page_url"": ""https://links.fminus.co/api/v1/search/links?page=1"", + ""from"": 1, + ""last_page"": 1, + ""last_page_url"": ""https://links.fminus.co/api/v1/search/links?page=1"", + ""links"": [ + { + ""active"": false, + ""label"": ""« Previous"", + ""url"": null + }, + { + ""active"": true, + ""label"": ""1"", + ""url"": ""https://links.fminus.co/api/v1/search/links?page=1"" + }, + { + ""active"": false, + ""label"": ""Next »"", + ""url"": null + } + ], + ""next_page_url"": null, + ""path"": ""https://links.fminus.co/api/v1/search/links"", + ""per_page"": 24, + ""prev_page_url"": null, + ""to"": 1, + ""total"": 1 +}"; +} From f154b63a88d7a892fde09333050838f7cc3229bf Mon Sep 17 00:00:00 2001 From: Matthew Jorgensen Date: Fri, 4 Oct 2024 13:38:39 -0500 Subject: [PATCH 4/7] Add tests --- .../ApiResponses/SearchLinkResponseTests.cs | 31 ++++++++++++++ LinkAce.NET.Tests/Entities/TagTests.cs | 40 +++++++++++++++++++ .../Extensions/StringArrayExtensionsTests.cs | 26 ++++++++++++ LinkAce.NET.Tests/Helpers/EntityTests.cs | 23 +++++++++++ LinkAce.NET.Tests/LinkAceClientTests.cs | 38 ++++++++++++++++++ LinkAce.NET.Tests/MetaTests.cs | 36 +++++++++++++++++ src/LinkAce.NET/AssemblyInfo.cs | 3 ++ 7 files changed, 197 insertions(+) create mode 100644 LinkAce.NET.Tests/ApiResponses/SearchLinkResponseTests.cs create mode 100644 LinkAce.NET.Tests/Entities/TagTests.cs create mode 100644 LinkAce.NET.Tests/Extensions/StringArrayExtensionsTests.cs create mode 100644 LinkAce.NET.Tests/Helpers/EntityTests.cs create mode 100644 LinkAce.NET.Tests/LinkAceClientTests.cs create mode 100644 LinkAce.NET.Tests/MetaTests.cs create mode 100644 src/LinkAce.NET/AssemblyInfo.cs diff --git a/LinkAce.NET.Tests/ApiResponses/SearchLinkResponseTests.cs b/LinkAce.NET.Tests/ApiResponses/SearchLinkResponseTests.cs new file mode 100644 index 0000000..7346d2f --- /dev/null +++ b/LinkAce.NET.Tests/ApiResponses/SearchLinkResponseTests.cs @@ -0,0 +1,31 @@ +using LinkAce.NET.ApiResponses; +using LinkAce.NET.Tests.Helpers; + +namespace LinkAce.NET.Tests.ApiResponses; + +[TestClass] +public class SearchLinkResponseTests +{ + [TestMethod] + public void SearchLinkResponse_HasProperties() + { + // Arrange + SearchLinkResponse obj = new(); + const int expectedCount = 12; + + // Assert + Assert.AreEqual(expectedCount, obj.PropertyCount()); + Assert.IsTrue(obj.HasProperty("CurrentPage")); + Assert.IsTrue(obj.HasProperty("Data")); + Assert.IsTrue(obj.HasProperty("FirstPageUrl")); + Assert.IsTrue(obj.HasProperty("From")); + Assert.IsTrue(obj.HasProperty("LastPage")); + Assert.IsTrue(obj.HasProperty("LastPageUrl")); + Assert.IsTrue(obj.HasProperty("NextPageUrl")); + Assert.IsTrue(obj.HasProperty("Path")); + Assert.IsTrue(obj.HasProperty("PerPage")); + Assert.IsTrue(obj.HasProperty("PreviousPageUrl")); + Assert.IsTrue(obj.HasProperty("To")); + Assert.IsTrue(obj.HasProperty("Total")); + } +} diff --git a/LinkAce.NET.Tests/Entities/TagTests.cs b/LinkAce.NET.Tests/Entities/TagTests.cs new file mode 100644 index 0000000..084cf6a --- /dev/null +++ b/LinkAce.NET.Tests/Entities/TagTests.cs @@ -0,0 +1,40 @@ +using LinkAce.NET.Entites; +using LinkAce.NET.Tests.Helpers; + +namespace LinkAce.NET.Tests.Entities; + +[TestClass] +public class TagTests +{ + [TestMethod] + public void Tag_HasProperties() + { + // Arrange + Tag obj = new(); + const int expectedCount = 8; + + // Act + Assert.AreEqual(expectedCount, obj.PropertyCount()); + Assert.IsTrue(obj.HasProperty("CreatedAt")); + Assert.IsTrue(obj.HasProperty("DeletedAt")); + Assert.IsTrue(obj.HasProperty("Id")); + Assert.IsTrue(obj.HasProperty("IsPrivate")); + Assert.IsTrue(obj.HasProperty("Name")); + Assert.IsTrue(obj.HasProperty("Pivot")); + Assert.IsTrue(obj.HasProperty("UpdatedAt")); + Assert.IsTrue(obj.HasProperty("UserId")); + } + + [TestMethod] + public void ImplicitConversion_String_To_Tag() + { + // Arrange + const string expectedName = "TestTag"; + + // Act + Tag tag = expectedName; + + // Assert + Assert.AreEqual(expectedName, tag.Name); + } +} diff --git a/LinkAce.NET.Tests/Extensions/StringArrayExtensionsTests.cs b/LinkAce.NET.Tests/Extensions/StringArrayExtensionsTests.cs new file mode 100644 index 0000000..ff3b0c7 --- /dev/null +++ b/LinkAce.NET.Tests/Extensions/StringArrayExtensionsTests.cs @@ -0,0 +1,26 @@ +using LinkAce.NET.Entites; +using LinkAce.NET.Extensions; + +namespace LinkAce.NET.Tests.Extensions; + +[TestClass] +public class StringArrayExtensionsTests +{ + + [TestMethod] + public void ToTagArray_Success() + { + // Arrange + string[] expectedNames = { "TestTag1", "TestTag2", "TestTag3" }; + + // Act + Tag[] tags = expectedNames.ToTagArray(); + + // Assert + Assert.AreEqual(expectedNames.Length, tags.Length); + for (int i = 0; i < expectedNames.Length; i++) + { + Assert.AreEqual(expectedNames[i], tags[i].Name); + } + } +} diff --git a/LinkAce.NET.Tests/Helpers/EntityTests.cs b/LinkAce.NET.Tests/Helpers/EntityTests.cs new file mode 100644 index 0000000..325c58b --- /dev/null +++ b/LinkAce.NET.Tests/Helpers/EntityTests.cs @@ -0,0 +1,23 @@ +using System.Reflection; + +namespace LinkAce.NET.Tests.Helpers; + +public static class EntityTests +{ + public static bool HasMethod(this object obj, string methodName) + { + var type = obj.GetType(); + try + { + return type.GetMethod(methodName) is not null; + } + catch (AmbiguousMatchException) + { + return true; + } + } + public static bool HasProperty(this object obj, string propertyName) + => obj.GetType().GetProperty(propertyName) is not null; + public static int PropertyCount(this object obj) + => obj.GetType().GetProperties().Length; +} diff --git a/LinkAce.NET.Tests/LinkAceClientTests.cs b/LinkAce.NET.Tests/LinkAceClientTests.cs new file mode 100644 index 0000000..af7297f --- /dev/null +++ b/LinkAce.NET.Tests/LinkAceClientTests.cs @@ -0,0 +1,38 @@ +using System.Net; +using Moq; +using Moq.Protected; + +namespace LinkAce.NET.Tests; + +[TestClass] +public class LinkAceClientTests +{ + private LinkAceClient _client; + private Mock _mockHttpMessageHandler; + [TestInitialize] + public void Init() + { + _mockHttpMessageHandler = new Mock(); + var httpClient = new HttpClient(_mockHttpMessageHandler.Object); + _client = new LinkAceClient("https://links.example.com", TestData.TestApiKey, httpClient); + } + [TestMethod] + public async Task GetDnsZones_Success() + { + // Arrange + _mockHttpMessageHandler.Protected() + .Setup>("SendAsync", ItExpr.IsAny(), + ItExpr.IsAny()) + .ReturnsAsync(new HttpResponseMessage + { + StatusCode = HttpStatusCode.OK, + Content = new StringContent(TestData.SearchLinkResponseJson) + }); + + // Act + var result = await _client.SearchLinksByUrl("jrgnsn.net"); + + // Assert + Assert.IsNotNull(result); + } +} \ No newline at end of file diff --git a/LinkAce.NET.Tests/MetaTests.cs b/LinkAce.NET.Tests/MetaTests.cs new file mode 100644 index 0000000..b8fcc4d --- /dev/null +++ b/LinkAce.NET.Tests/MetaTests.cs @@ -0,0 +1,36 @@ +using System.Net.Http.Headers; +using System.Reflection; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace LinkAce.NET.Tests +{ + [TestClass] + public class MetaTests + { + [TestMethod] + public void UserAgent_ShouldContainCorrectNameAndVersion() + { + // Arrange + var expectedName = "LinkAce.NET"; + var expectedVersion = Assembly.GetEntryAssembly()!.GetName().Version!.ToString(); + var expectedUserAgent = new ProductInfoHeaderValue(expectedName, expectedVersion); + + // Act + var actualUserAgent = Meta.UserAgent; + + // Assert + Assert.AreEqual(expectedUserAgent.Product.Name, actualUserAgent.Product.Name); + Assert.AreEqual(expectedUserAgent.Product.Version, actualUserAgent.Product.Version); + } + + [TestMethod] + public void AssemblyVersion_ShouldNotBeNullOrEmpty() + { + // Act + var assemblyVersion = Meta.AssemblyVersion; + + // Assert + Assert.IsFalse(string.IsNullOrEmpty(assemblyVersion)); + } + } +} diff --git a/src/LinkAce.NET/AssemblyInfo.cs b/src/LinkAce.NET/AssemblyInfo.cs new file mode 100644 index 0000000..f928090 --- /dev/null +++ b/src/LinkAce.NET/AssemblyInfo.cs @@ -0,0 +1,3 @@ +using System.Runtime.CompilerServices; + +[assembly: InternalsVisibleTo("LinkAce.NET.Tests")] From 322b18e0105aa32fba35b5846ea25e4a73529f0f Mon Sep 17 00:00:00 2001 From: Matthew Jorgensen Date: Fri, 4 Oct 2024 14:08:04 -0500 Subject: [PATCH 5/7] Fix test name --- LinkAce.NET.Tests/LinkAceClientTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LinkAce.NET.Tests/LinkAceClientTests.cs b/LinkAce.NET.Tests/LinkAceClientTests.cs index af7297f..1f8b904 100644 --- a/LinkAce.NET.Tests/LinkAceClientTests.cs +++ b/LinkAce.NET.Tests/LinkAceClientTests.cs @@ -17,7 +17,7 @@ public void Init() _client = new LinkAceClient("https://links.example.com", TestData.TestApiKey, httpClient); } [TestMethod] - public async Task GetDnsZones_Success() + public async Task SearchLinksByUrl_Success() { // Arrange _mockHttpMessageHandler.Protected() From ff29514b4cd5cee931f5edf676497d40d4597b59 Mon Sep 17 00:00:00 2001 From: Matthew Jorgensen Date: Fri, 4 Oct 2024 14:41:54 -0500 Subject: [PATCH 6/7] Add CreateLink_Success test --- LinkAce.NET.Tests/LinkAceClientTests.cs | 28 +++++++++++++++++++++++ LinkAce.NET.Tests/TestData.cs | 30 +++++++++++++++++++++++++ 2 files changed, 58 insertions(+) diff --git a/LinkAce.NET.Tests/LinkAceClientTests.cs b/LinkAce.NET.Tests/LinkAceClientTests.cs index 1f8b904..b054847 100644 --- a/LinkAce.NET.Tests/LinkAceClientTests.cs +++ b/LinkAce.NET.Tests/LinkAceClientTests.cs @@ -1,4 +1,6 @@ using System.Net; +using LinkAce.NET.Entites; +using LinkAce.NET.Extensions; using Moq; using Moq.Protected; @@ -35,4 +37,30 @@ public async Task SearchLinksByUrl_Success() // Assert Assert.IsNotNull(result); } + [TestMethod] + public async Task CreateLink_Success() + { + // Arrange + _mockHttpMessageHandler.Protected() + .Setup>("SendAsync", ItExpr.IsAny(), + ItExpr.IsAny()) + .ReturnsAsync(new HttpResponseMessage + { + StatusCode = HttpStatusCode.OK, + Content = new StringContent(TestData.CreateLinkResponseJson) + }); + + // Act + var result = await _client.CreateLink(new Link() + { + Title = "Test Link", + Url = "https://jrgnsn.net", + Description = "A test link", + Tags = new[]{ "test" }.ToTagArray() + }); + + // Assert + Assert.IsNotNull(result); + + } } \ No newline at end of file diff --git a/LinkAce.NET.Tests/TestData.cs b/LinkAce.NET.Tests/TestData.cs index 6b008cf..a6bafd0 100644 --- a/LinkAce.NET.Tests/TestData.cs +++ b/LinkAce.NET.Tests/TestData.cs @@ -90,5 +90,35 @@ public class TestData ""prev_page_url"": null, ""to"": 1, ""total"": 1 +}"; + public const string CreateLinkResponseJson = @"{ + ""check_disabled"": false, + ""created_at"": ""2024-10-04T19:32:31.000000Z"", + ""description"": ""A test link"", + ""icon"": ""link"", + ""id"": 1819, + ""is_private"": false, + ""lists"": [], + ""status"": 0, + ""tags"": [ + { + ""created_at"": ""2023-06-13T23:27:14.000000Z"", + ""deleted_at"": null, + ""id"": 880, + ""is_private"": false, + ""name"": ""test"", + ""pivot"": { + ""link_id"": 1819, + ""tag_id"": 880 + }, + ""updated_at"": ""2023-06-13T23:27:14.000000Z"", + ""user_id"": 1 + } + ], + ""thumbnail"": null, + ""title"": ""Test Link"", + ""updated_at"": ""2024-10-04T19:32:31.000000Z"", + ""url"": ""https://jrgnsn.net"", + ""user_id"": 1 }"; } From ab4a47dc7e6536f19a3f58490f2b0d1f31a6331d Mon Sep 17 00:00:00 2001 From: Matthew Jorgensen Date: Fri, 4 Oct 2024 14:48:54 -0500 Subject: [PATCH 7/7] Move test projects to tests/ dir --- LinkAce.sln | 2 +- .../LinkAce.NET.Tests}/ApiResponses/SearchLinkResponseTests.cs | 0 .../LinkAce.NET.Tests}/Entities/TagTests.cs | 0 .../LinkAce.NET.Tests}/Extensions/StringArrayExtensionsTests.cs | 0 {LinkAce.NET.Tests => tests/LinkAce.NET.Tests}/GlobalUsings.cs | 0 .../LinkAce.NET.Tests}/Helpers/EntityTests.cs | 0 .../LinkAce.NET.Tests}/LinkAce.NET.Tests.csproj | 2 +- .../LinkAce.NET.Tests}/LinkAceClientTests.cs | 0 {LinkAce.NET.Tests => tests/LinkAce.NET.Tests}/MetaTests.cs | 0 {LinkAce.NET.Tests => tests/LinkAce.NET.Tests}/TestData.cs | 0 10 files changed, 2 insertions(+), 2 deletions(-) rename {LinkAce.NET.Tests => tests/LinkAce.NET.Tests}/ApiResponses/SearchLinkResponseTests.cs (100%) rename {LinkAce.NET.Tests => tests/LinkAce.NET.Tests}/Entities/TagTests.cs (100%) rename {LinkAce.NET.Tests => tests/LinkAce.NET.Tests}/Extensions/StringArrayExtensionsTests.cs (100%) rename {LinkAce.NET.Tests => tests/LinkAce.NET.Tests}/GlobalUsings.cs (100%) rename {LinkAce.NET.Tests => tests/LinkAce.NET.Tests}/Helpers/EntityTests.cs (100%) rename {LinkAce.NET.Tests => tests/LinkAce.NET.Tests}/LinkAce.NET.Tests.csproj (90%) rename {LinkAce.NET.Tests => tests/LinkAce.NET.Tests}/LinkAceClientTests.cs (100%) rename {LinkAce.NET.Tests => tests/LinkAce.NET.Tests}/MetaTests.cs (100%) rename {LinkAce.NET.Tests => tests/LinkAce.NET.Tests}/TestData.cs (100%) diff --git a/LinkAce.sln b/LinkAce.sln index 04618ab..a0825c1 100644 --- a/LinkAce.sln +++ b/LinkAce.sln @@ -19,7 +19,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LinkAce.NET", "src\LinkAce. EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestApp", "src\TestApp\TestApp.csproj", "{97052387-BAA1-40E8-A861-C412B373FBDC}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LinkAce.NET.Tests", "LinkAce.NET.Tests\LinkAce.NET.Tests.csproj", "{671997C6-2DA3-45AB-87C2-4A335C976685}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LinkAce.NET.Tests", "tests\LinkAce.NET.Tests\LinkAce.NET.Tests.csproj", "{671997C6-2DA3-45AB-87C2-4A335C976685}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/LinkAce.NET.Tests/ApiResponses/SearchLinkResponseTests.cs b/tests/LinkAce.NET.Tests/ApiResponses/SearchLinkResponseTests.cs similarity index 100% rename from LinkAce.NET.Tests/ApiResponses/SearchLinkResponseTests.cs rename to tests/LinkAce.NET.Tests/ApiResponses/SearchLinkResponseTests.cs diff --git a/LinkAce.NET.Tests/Entities/TagTests.cs b/tests/LinkAce.NET.Tests/Entities/TagTests.cs similarity index 100% rename from LinkAce.NET.Tests/Entities/TagTests.cs rename to tests/LinkAce.NET.Tests/Entities/TagTests.cs diff --git a/LinkAce.NET.Tests/Extensions/StringArrayExtensionsTests.cs b/tests/LinkAce.NET.Tests/Extensions/StringArrayExtensionsTests.cs similarity index 100% rename from LinkAce.NET.Tests/Extensions/StringArrayExtensionsTests.cs rename to tests/LinkAce.NET.Tests/Extensions/StringArrayExtensionsTests.cs diff --git a/LinkAce.NET.Tests/GlobalUsings.cs b/tests/LinkAce.NET.Tests/GlobalUsings.cs similarity index 100% rename from LinkAce.NET.Tests/GlobalUsings.cs rename to tests/LinkAce.NET.Tests/GlobalUsings.cs diff --git a/LinkAce.NET.Tests/Helpers/EntityTests.cs b/tests/LinkAce.NET.Tests/Helpers/EntityTests.cs similarity index 100% rename from LinkAce.NET.Tests/Helpers/EntityTests.cs rename to tests/LinkAce.NET.Tests/Helpers/EntityTests.cs diff --git a/LinkAce.NET.Tests/LinkAce.NET.Tests.csproj b/tests/LinkAce.NET.Tests/LinkAce.NET.Tests.csproj similarity index 90% rename from LinkAce.NET.Tests/LinkAce.NET.Tests.csproj rename to tests/LinkAce.NET.Tests/LinkAce.NET.Tests.csproj index 081932f..23b1216 100644 --- a/LinkAce.NET.Tests/LinkAce.NET.Tests.csproj +++ b/tests/LinkAce.NET.Tests/LinkAce.NET.Tests.csproj @@ -18,7 +18,7 @@ - + diff --git a/LinkAce.NET.Tests/LinkAceClientTests.cs b/tests/LinkAce.NET.Tests/LinkAceClientTests.cs similarity index 100% rename from LinkAce.NET.Tests/LinkAceClientTests.cs rename to tests/LinkAce.NET.Tests/LinkAceClientTests.cs diff --git a/LinkAce.NET.Tests/MetaTests.cs b/tests/LinkAce.NET.Tests/MetaTests.cs similarity index 100% rename from LinkAce.NET.Tests/MetaTests.cs rename to tests/LinkAce.NET.Tests/MetaTests.cs diff --git a/LinkAce.NET.Tests/TestData.cs b/tests/LinkAce.NET.Tests/TestData.cs similarity index 100% rename from LinkAce.NET.Tests/TestData.cs rename to tests/LinkAce.NET.Tests/TestData.cs