From fcf49bfae3442f7adbdd997ac6947e8eed23e808 Mon Sep 17 00:00:00 2001 From: Tommy Parnell Date: Sun, 24 May 2015 17:19:23 -0400 Subject: [PATCH] fix up functionality, add tests --- NetrunnerDb.Net.sln | 8 ++- appveyor.yml | 4 ++ .../NetrunnerDb.Net.AcceptanceTests.csproj | 68 +++++++++++++++++++ .../Properties/AssemblyInfo.cs | 35 ++++++++++ .../QueryThings.cs | 47 +++++++++++++ .../packages.config | 4 ++ .../Class1.cs | 6 +- .../NetrunnerDb.Net.UnitTests.csproj} | 8 ++- .../Properties/AssemblyInfo.cs | 1 - .../RequestTests/EndpointInterfaceTesting.cs | 43 ++++++++++++ .../packages.config | 1 + src/NetrunnerDb.Net/Repository.cs | 7 +- src/NetrunnerDb.Net/Responses/BaseRequest.cs | 8 +-- src/NetrunnerDb.Net/Responses/Cards.cs | 6 ++ src/NetrunnerDb.Net/Responses/Decklist.cs | 3 - .../Responses/DecklistByDay.cs | 5 +- src/NetrunnerDb.Net/Responses/OneCard.cs | 6 +- 17 files changed, 231 insertions(+), 29 deletions(-) create mode 100644 src/NetrunnerDb.Net.AcceptanceTests/NetrunnerDb.Net.AcceptanceTests.csproj create mode 100644 src/NetrunnerDb.Net.AcceptanceTests/Properties/AssemblyInfo.cs create mode 100644 src/NetrunnerDb.Net.AcceptanceTests/QueryThings.cs create mode 100644 src/NetrunnerDb.Net.AcceptanceTests/packages.config rename src/{NetrunnerDb.Net.Tests => NetrunnerDb.Net.UnitTests}/Class1.cs (78%) rename src/{NetrunnerDb.Net.Tests/NetrunnerDb.Net.Tests.csproj => NetrunnerDb.Net.UnitTests/NetrunnerDb.Net.UnitTests.csproj} (92%) rename src/{NetrunnerDb.Net.Tests => NetrunnerDb.Net.UnitTests}/Properties/AssemblyInfo.cs (97%) create mode 100644 src/NetrunnerDb.Net.UnitTests/RequestTests/EndpointInterfaceTesting.cs rename src/{NetrunnerDb.Net.Tests => NetrunnerDb.Net.UnitTests}/packages.config (74%) diff --git a/NetrunnerDb.Net.sln b/NetrunnerDb.Net.sln index 9f2e8ac..ee49ed2 100644 --- a/NetrunnerDb.Net.sln +++ b/NetrunnerDb.Net.sln @@ -5,7 +5,9 @@ VisualStudioVersion = 12.0.31101.0 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetrunnerDb.Net", "src\NetrunnerDb.Net\NetrunnerDb.Net.csproj", "{1B508DCB-3207-4597-B938-9218D32A41A4}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetrunnerDb.Net.Tests", "src\NetrunnerDb.Net.Tests\NetrunnerDb.Net.Tests.csproj", "{60115585-7F0E-438F-BC86-CCA9D6575062}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetrunnerDb.Net.UnitTests", "src\NetrunnerDb.Net.UnitTests\NetrunnerDb.Net.UnitTests.csproj", "{60115585-7F0E-438F-BC86-CCA9D6575062}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetrunnerDb.Net.AcceptanceTests", "src\NetrunnerDb.Net.AcceptanceTests\NetrunnerDb.Net.AcceptanceTests.csproj", "{B2585CDE-E2A6-4B28-8FC6-AD11CB28B13E}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -21,6 +23,10 @@ Global {60115585-7F0E-438F-BC86-CCA9D6575062}.Debug|Any CPU.Build.0 = Debug|Any CPU {60115585-7F0E-438F-BC86-CCA9D6575062}.Release|Any CPU.ActiveCfg = Release|Any CPU {60115585-7F0E-438F-BC86-CCA9D6575062}.Release|Any CPU.Build.0 = Release|Any CPU + {B2585CDE-E2A6-4B28-8FC6-AD11CB28B13E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B2585CDE-E2A6-4B28-8FC6-AD11CB28B13E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B2585CDE-E2A6-4B28-8FC6-AD11CB28B13E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B2585CDE-E2A6-4B28-8FC6-AD11CB28B13E}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/appveyor.yml b/appveyor.yml index b32e45a..8efbef8 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -24,3 +24,7 @@ deploy: secure: fGNwXOtebe3kxu5SrB90CrbaCxVxuzuCQh3Ipcc0G/3cutoNZf7d7G6AaQ4fRv2l on: branch: master +test: + categories: + - [Unit] + - [Acceptance] diff --git a/src/NetrunnerDb.Net.AcceptanceTests/NetrunnerDb.Net.AcceptanceTests.csproj b/src/NetrunnerDb.Net.AcceptanceTests/NetrunnerDb.Net.AcceptanceTests.csproj new file mode 100644 index 0000000..658f6f5 --- /dev/null +++ b/src/NetrunnerDb.Net.AcceptanceTests/NetrunnerDb.Net.AcceptanceTests.csproj @@ -0,0 +1,68 @@ + + + + + Debug + AnyCPU + {B2585CDE-E2A6-4B28-8FC6-AD11CB28B13E} + Library + Properties + NetrunnerDb.Net.AcceptanceTests + NetrunnerDb.Net.AcceptanceTests + v4.5 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\..\packages\NUnit.2.6.4\lib\nunit.framework.dll + + + + + + + + + + + + + + + + + + + {1b508dcb-3207-4597-b938-9218d32a41a4} + NetrunnerDb.Net + + + + + + + + \ No newline at end of file diff --git a/src/NetrunnerDb.Net.AcceptanceTests/Properties/AssemblyInfo.cs b/src/NetrunnerDb.Net.AcceptanceTests/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..04d1982 --- /dev/null +++ b/src/NetrunnerDb.Net.AcceptanceTests/Properties/AssemblyInfo.cs @@ -0,0 +1,35 @@ +using System.Reflection; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("NetrunnerDb.Net.AcceptanceTests")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("NetrunnerDb.Net.AcceptanceTests")] +[assembly: AssemblyCopyright("Copyright © 2015")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("a723e4fe-f081-4ca9-ac04-801a5f9b30e7")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/src/NetrunnerDb.Net.AcceptanceTests/QueryThings.cs b/src/NetrunnerDb.Net.AcceptanceTests/QueryThings.cs new file mode 100644 index 0000000..b5c2684 --- /dev/null +++ b/src/NetrunnerDb.Net.AcceptanceTests/QueryThings.cs @@ -0,0 +1,47 @@ +using System; +using System.Linq; +using NetrunnerDb.Net.Responses; +using NUnit.Framework; + +namespace NetrunnerDb.Net.AcceptanceTests +{ + [TestFixture(Category = "Acceptance", Description = "Basic, hey can we do the things this project intends to do")] + public class QueryThings + { + [Test] + public void OneCard() + { + Assert.AreEqual(new Repository().GetCard("01001").First().Title, "Noise: Hacker Extraordinaire"); + } + [Test] + public void Cards() + { + Assert.IsTrue(new Repository().GetCards().Count > 100); + } + [Test] + public void Set() + { + Assert.IsTrue(new Repository().GetSet("tsb").Count > 10); + } + [Test] + public void Sets() + { + Assert.IsTrue(new Repository().GetSets().Count > 10); + } + [Test] + public void Decklist() + { + Assert.AreEqual(20866, new Repository().GetRequest("20866").First().Id); + } + [Test] + public void DecklistByDate() + { + var targetDate = new DateTime(2014, 01, 01); + Assert.IsTrue(new Repository().GetRequest(targetDate.ToString("MM/dd/yyyy")).All(a => + { + var parseDate = DateTime.Parse(a.Creation); + return (parseDate >= targetDate && parseDate <= parseDate.AddDays(1).AddMinutes(-1)); + })); + } + } +} diff --git a/src/NetrunnerDb.Net.AcceptanceTests/packages.config b/src/NetrunnerDb.Net.AcceptanceTests/packages.config new file mode 100644 index 0000000..c714ef3 --- /dev/null +++ b/src/NetrunnerDb.Net.AcceptanceTests/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/NetrunnerDb.Net.Tests/Class1.cs b/src/NetrunnerDb.Net.UnitTests/Class1.cs similarity index 78% rename from src/NetrunnerDb.Net.Tests/Class1.cs rename to src/NetrunnerDb.Net.UnitTests/Class1.cs index d4d1877..973d69b 100644 --- a/src/NetrunnerDb.Net.Tests/Class1.cs +++ b/src/NetrunnerDb.Net.UnitTests/Class1.cs @@ -1,12 +1,8 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using NetrunnerDb.Net.Responses; using NUnit.Framework; -namespace NetrunnerDb.Net.Tests +namespace NetrunnerDb.Net.UnitTests { [TestFixture] public class Class1 diff --git a/src/NetrunnerDb.Net.Tests/NetrunnerDb.Net.Tests.csproj b/src/NetrunnerDb.Net.UnitTests/NetrunnerDb.Net.UnitTests.csproj similarity index 92% rename from src/NetrunnerDb.Net.Tests/NetrunnerDb.Net.Tests.csproj rename to src/NetrunnerDb.Net.UnitTests/NetrunnerDb.Net.UnitTests.csproj index b69358e..1ed5414 100644 --- a/src/NetrunnerDb.Net.Tests/NetrunnerDb.Net.Tests.csproj +++ b/src/NetrunnerDb.Net.UnitTests/NetrunnerDb.Net.UnitTests.csproj @@ -7,8 +7,8 @@ {60115585-7F0E-438F-BC86-CCA9D6575062} Library Properties - NetrunnerDb.Net.Tests - NetrunnerDb.Net.Tests + NetrunnerDb.Net.UnitTests + NetrunnerDb.Net.UnitTests v4.5 512 @@ -30,6 +30,9 @@ 4 + + ..\..\packages\Moq.4.2.1502.0911\lib\net40\Moq.dll + ..\..\packages\NUnitTestAdapter.2.0.0\lib\nunit.core.dll False @@ -61,6 +64,7 @@ + diff --git a/src/NetrunnerDb.Net.Tests/Properties/AssemblyInfo.cs b/src/NetrunnerDb.Net.UnitTests/Properties/AssemblyInfo.cs similarity index 97% rename from src/NetrunnerDb.Net.Tests/Properties/AssemblyInfo.cs rename to src/NetrunnerDb.Net.UnitTests/Properties/AssemblyInfo.cs index 7a39f67..0552c43 100644 --- a/src/NetrunnerDb.Net.Tests/Properties/AssemblyInfo.cs +++ b/src/NetrunnerDb.Net.UnitTests/Properties/AssemblyInfo.cs @@ -1,5 +1,4 @@ using System.Reflection; -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; // General Information about an assembly is controlled through the following diff --git a/src/NetrunnerDb.Net.UnitTests/RequestTests/EndpointInterfaceTesting.cs b/src/NetrunnerDb.Net.UnitTests/RequestTests/EndpointInterfaceTesting.cs new file mode 100644 index 0000000..e111562 --- /dev/null +++ b/src/NetrunnerDb.Net.UnitTests/RequestTests/EndpointInterfaceTesting.cs @@ -0,0 +1,43 @@ +using System; +using System.Linq; +using NetrunnerDb.Net.Responses; +using NUnit.Framework; + +namespace NetrunnerDb.Net.UnitTests.RequestTests +{ + [TestFixture(Category = "Unit")] + public class EndpointInterfaceTesting + { + [Test] + public void TestSmallEndpoints() + { + Assert.Throws(()=>new Cards().EndPoint("not null string")); + Assert.Throws(() => new Sets().EndPoint("not null string")); + Assert.Throws(() => new Decklist().EndPoint(String.Empty)); + Assert.Throws(() => new Set().EndPoint(String.Empty)); + Assert.Throws(() => new OneCard().EndPoint(String.Empty)); + + } + + [Test] + public void TestDecklistEndpointDateTimeOverride() + { + var mockedDatetime = new DateTime(2014, 1, 1); + var decklistByDate = new DecklistByDate(mockedDatetime); + var decklistEndpoint = decklistByDate.EndPoint(); + var date = decklistEndpoint.Split('/').Last(); + Assert.AreEqual(date, "2014-01-01"); + } + + [Test] + public void TestDecklistEndpoint() + { + Assert.Throws(() => new DecklistByDate().EndPoint(String.Empty)); + Assert.Throws(() => new DecklistByDate().EndPoint("awesome")); + var decklistByDate = new DecklistByDate(); + var decklistEndpoint = decklistByDate.EndPoint("01/01/2014"); + var date = decklistEndpoint.Split('/').Last(); + Assert.AreEqual(date, "2014-01-01"); + } + } +} diff --git a/src/NetrunnerDb.Net.Tests/packages.config b/src/NetrunnerDb.Net.UnitTests/packages.config similarity index 74% rename from src/NetrunnerDb.Net.Tests/packages.config rename to src/NetrunnerDb.Net.UnitTests/packages.config index 1f8800b..d75a8c1 100644 --- a/src/NetrunnerDb.Net.Tests/packages.config +++ b/src/NetrunnerDb.Net.UnitTests/packages.config @@ -1,5 +1,6 @@  + \ No newline at end of file diff --git a/src/NetrunnerDb.Net/Repository.cs b/src/NetrunnerDb.Net/Repository.cs index 87a3f79..0e00b23 100644 --- a/src/NetrunnerDb.Net/Repository.cs +++ b/src/NetrunnerDb.Net/Repository.cs @@ -22,7 +22,8 @@ namespace NetrunnerDb.Net where TResult : class, IRequest, new() { var s = new TResult(); - var request = new RestRequest(){ + var request = new RestRequest + { Resource = s.EndPoint(parameter) }; var client = new RestClient("http://netrunnerdb.com"); @@ -52,9 +53,9 @@ namespace NetrunnerDb.Net /// /// /// - public IList GetSet(string code) + public IList GetSet(string code) { - return GetRequest(code); + return GetRequest(code); } /// /// /api/cards/ returns data about all the cards in the database. diff --git a/src/NetrunnerDb.Net/Responses/BaseRequest.cs b/src/NetrunnerDb.Net/Responses/BaseRequest.cs index ddb7154..4b6655d 100644 --- a/src/NetrunnerDb.Net/Responses/BaseRequest.cs +++ b/src/NetrunnerDb.Net/Responses/BaseRequest.cs @@ -1,10 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace NetrunnerDb.Net.Responses +namespace NetrunnerDb.Net.Responses { public abstract class BaseRequest : IRequest { diff --git a/src/NetrunnerDb.Net/Responses/Cards.cs b/src/NetrunnerDb.Net/Responses/Cards.cs index 6f0b822..9d5384e 100644 --- a/src/NetrunnerDb.Net/Responses/Cards.cs +++ b/src/NetrunnerDb.Net/Responses/Cards.cs @@ -111,6 +111,12 @@ namespace NetrunnerDb.Net.Responses [JsonProperty("trash")] public int? Trash { get; set; } + /// + /// Configure Endpoint + /// + /// + /// + /// parameter public override string EndPoint(string parameter = "") { //this endpoint should not be passed a parameter diff --git a/src/NetrunnerDb.Net/Responses/Decklist.cs b/src/NetrunnerDb.Net/Responses/Decklist.cs index 14c6ba1..ffe287e 100644 --- a/src/NetrunnerDb.Net/Responses/Decklist.cs +++ b/src/NetrunnerDb.Net/Responses/Decklist.cs @@ -1,8 +1,5 @@ using System; using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using Newtonsoft.Json; namespace NetrunnerDb.Net.Responses diff --git a/src/NetrunnerDb.Net/Responses/DecklistByDay.cs b/src/NetrunnerDb.Net/Responses/DecklistByDay.cs index ee15dd8..6037b2b 100644 --- a/src/NetrunnerDb.Net/Responses/DecklistByDay.cs +++ b/src/NetrunnerDb.Net/Responses/DecklistByDay.cs @@ -4,6 +4,7 @@ using Newtonsoft.Json; namespace NetrunnerDb.Net.Responses { + public class DecklistByDate : BaseRequest { public DecklistByDate() { } @@ -36,7 +37,7 @@ namespace NetrunnerDb.Net.Responses { if (Endpoint.HasValue) { - return string.Format("/api/decklists/by_date/{0}", Endpoint.Value.ToString("yy-MM-dd")); + return string.Format("/api/decklists/by_date/{0}", Endpoint.Value.ToString("yyyy-MM-dd")); } if (string.IsNullOrWhiteSpace(parameter)) { @@ -45,7 +46,7 @@ namespace NetrunnerDb.Net.Responses DateTime dateTime; if (DateTime.TryParse(parameter, out dateTime)) { - return string.Format("/api/decklists/by_date/{0}", dateTime.ToString("yy-MM-dd")); + return string.Format("/api/decklists/by_date/{0}", dateTime.ToString("yyyy-MM-dd")); } throw new FormatException(string.Format("{0} is not a valid date format")); } diff --git a/src/NetrunnerDb.Net/Responses/OneCard.cs b/src/NetrunnerDb.Net/Responses/OneCard.cs index 74f60df..e8a21b9 100644 --- a/src/NetrunnerDb.Net/Responses/OneCard.cs +++ b/src/NetrunnerDb.Net/Responses/OneCard.cs @@ -1,8 +1,4 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using Newtonsoft.Json; namespace NetrunnerDb.Net.Responses @@ -93,7 +89,7 @@ namespace NetrunnerDb.Net.Responses //we should be passed an actual param if (string.IsNullOrWhiteSpace(parameter)) { - throw new ArgumentNullException("parameter"); + throw new ArgumentOutOfRangeException("parameter", "Endpoint OneCard requires a parameter"); } return string.Format("/api/card/{0}", parameter); }