Skip to content

Commit fa63b18

Browse files
author
Greg Sochanik
authored
Merge pull request #242 from rhargreaves/FT-803
Provide ForUsageTypes extension method to make it easy to specify usageTypes parameter
2 parents 5e93c3d + d05a5f2 commit fa63b18

File tree

16 files changed

+127
-50
lines changed

16 files changed

+127
-50
lines changed

.nuget/NuGet.exe

3.77 MB
Binary file not shown.

src/SevenDigital.Api.Wrapper.Integration.Tests/SevenDigital.Api.Wrapper.Integration.Tests.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,16 +38,16 @@
3838
</PropertyGroup>
3939
<ItemGroup>
4040
<Reference Include="Microsoft.CSharp" />
41-
<Reference Include="Newtonsoft.Json, Version=7.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
42-
<HintPath>..\..\packages\Newtonsoft.Json.7.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
41+
<Reference Include="Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
42+
<HintPath>..\..\packages\Newtonsoft.Json.10.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
4343
<Private>True</Private>
4444
</Reference>
4545
<Reference Include="nunit.framework, Version=2.6.4.14350, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
4646
<HintPath>..\..\packages\NUnit.2.6.4\lib\nunit.framework.dll</HintPath>
4747
<Private>True</Private>
4848
</Reference>
4949
<Reference Include="SevenDigital.Api.Schema, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
50-
<HintPath>..\..\packages\SevenDigital.Api.Schema.1.3.1\lib\net40\SevenDigital.Api.Schema.dll</HintPath>
50+
<HintPath>..\..\packages\SevenDigital.Api.Schema.2.0.0\lib\net40\SevenDigital.Api.Schema.dll</HintPath>
5151
<Private>True</Private>
5252
</Reference>
5353
<Reference Include="System" />
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<packages>
3-
<package id="Newtonsoft.Json" version="7.0.1" targetFramework="net45" />
3+
<package id="Newtonsoft.Json" version="10.0.2" targetFramework="net45" />
44
<package id="NUnit" version="2.6.4" targetFramework="net45" />
5-
<package id="SevenDigital.Api.Schema" version="1.3.1" targetFramework="net45" />
5+
<package id="SevenDigital.Api.Schema" version="2.0.0" targetFramework="net45" />
66
</packages>

src/SevenDigital.Api.Wrapper.Unit.Tests/Endpoints/Playlists/PlaylistXmlTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,11 @@ public void _then_the_playlist_tracks_have_deserialized_correctly()
5454
Assert.That(firstTrack.TrackId, Is.EqualTo("5495893"));
5555
Assert.That(firstTrack.TrackTitle, Is.EqualTo("No You Girls (Trentmoller Remix)"));
5656
Assert.That(firstTrack.TrackVersion, Is.EqualTo("Trentmoller Remix"));
57-
Assert.That(firstTrack.ArtistId, Is.Null);
57+
Assert.That(firstTrack.ArtistId, Is.EqualTo("1"));
5858
Assert.That(firstTrack.ArtistAppearsAs, Is.EqualTo("Franz Ferdinand"));
5959
Assert.That(firstTrack.ReleaseId, Is.EqualTo("496338"));
6060
Assert.That(firstTrack.ReleaseTitle, Is.EqualTo("No You Girls Remixes Part 2"));
61-
Assert.That(firstTrack.ReleaseArtistId, Is.Null);
61+
Assert.That(firstTrack.ReleaseArtistId, Is.EqualTo("2"));
6262
Assert.That(firstTrack.ReleaseArtistAppearsAs, Is.EqualTo("Franz Ferdinand"));
6363
Assert.That(firstTrack.ReleaseVersion, Is.EqualTo("Digital Download"));
6464
Assert.That(firstTrack.Source, Is.EqualTo("7digital"));
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
using NUnit.Framework;
2+
using SevenDigital.Api.Schema.Attributes;
3+
using SevenDigital.Api.Schema.ParameterDefinitions.Get;
4+
5+
namespace SevenDigital.Api.Wrapper.Unit.Tests.Extensions
6+
{
7+
[TestFixture]
8+
public class HasUsageTypesParameterExtensionsTests
9+
{
10+
private FluentApi<FakeUsageTypeEndpoint> _api;
11+
12+
[SetUp]
13+
public void Setup()
14+
{
15+
_api = new FluentApi<FakeUsageTypeEndpoint>(null, null, null);
16+
}
17+
18+
[Test]
19+
public void Adds_single_usageType()
20+
{
21+
_api.ForUsageTypes(UsageType.Download);
22+
23+
Assert.That(_api.Parameters["usageTypes"], Is.EqualTo("download"));
24+
}
25+
26+
[Test]
27+
public void Adds_multiple_usageTypes()
28+
{
29+
_api.ForUsageTypes(UsageType.Download, UsageType.SubscriptionStreaming, UsageType.AdSupportedStreaming);
30+
31+
Assert.That(_api.Parameters["usageTypes"], Is.EqualTo("download,subscriptionstreaming,adsupportedstreaming"));
32+
}
33+
34+
[ApiEndpoint("~/dummy")]
35+
private class FakeUsageTypeEndpoint : HasUsageTypesParameter
36+
{
37+
}
38+
}
39+
}

src/SevenDigital.Api.Wrapper.Unit.Tests/FluentAPITests.cs

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
using NUnit.Framework;
99
using SevenDigital.Api.Schema;
1010
using SevenDigital.Api.Schema.Artists;
11-
using SevenDigital.Api.Schema.Attributes;
1211
using SevenDigital.Api.Wrapper.Exceptions;
1312
using SevenDigital.Api.Wrapper.Http;
1413
using SevenDigital.Api.Wrapper.Requests;
@@ -272,15 +271,17 @@ public async void Should_allow_you_to_set_a_request_payload()
272271
[Test]
273272
public async void Should_allow_you_to_set_a_request_payload_using_an_entity()
274273
{
275-
const string expectedXmlOutput = "<?xml version=\"1.0\" encoding=\"utf-8\"?><artist id=\"143451\"><name>MGMT</name><appearsAs>MGMT</appearsAs><image>http://cdn.7static.com/static/img/artistimages/00/001/434/0000143451_150.jpg</image><url>http://www.7digital.com/artist/mgmt/?partner=1401</url></artist>";
274+
const string expectedXmlOutput = "<?xml version=\"1.0\" encoding=\"utf-8\"?><artist id=\"143451\"><name>MGMT</name><appearsAs>MGMT</appearsAs><image>http://cdn.7static.com/static/img/artistimages/00/001/434/0000143451_150.jpg</image><url>http://www.7digital.com/artist/mgmt/?partner=1401</url><slug>mgmt-slug</slug><isPlaceholderImage>false</isPlaceholderImage></artist>";
276275

277276
var artist = new Artist
278277
{
279278
AppearsAs = "MGMT",
280279
Name = "MGMT",
281280
Id = 143451,
282281
Image = "http://cdn.7static.com/static/img/artistimages/00/001/434/0000143451_150.jpg",
283-
Url = "http://www.7digital.com/artist/mgmt/?partner=1401"
282+
Url = "http://www.7digital.com/artist/mgmt/?partner=1401",
283+
IsPlaceholderImage = false,
284+
Slug = "mgmt-slug"
284285
};
285286

286287
var requestBuilder = StubRequestBuilder();
@@ -329,15 +330,17 @@ public async void Accept_header_defaults_to_xml()
329330
[Test]
330331
public async void Should_allow_you_to_set_a_request_payload_using_an_entity_transferred_as_json()
331332
{
332-
const string expectedOutput = "{\"id\":143451,\"name\":\"MGMT\",\"sortName\":null,\"appearsAs\":\"MGMT\",\"image\":\"http://cdn.7static.com/static/img/artistimages/00/001/434/0000143451_150.jpg\",\"url\":\"http://www.7digital.com/artist/mgmt/?partner=1401\"}";
333+
const string expectedOutput = "{\"id\":143451,\"name\":\"MGMT\",\"sortName\":null,\"appearsAs\":\"MGMT\",\"image\":\"http://cdn.7static.com/static/img/artistimages/00/001/434/0000143451_150.jpg\",\"url\":\"http://www.7digital.com/artist/mgmt/?partner=1401\",\"slug\":\"mgmt-slug\",\"isPlaceholderImage\":false}";
333334

334335
var artist = new Artist
335336
{
336337
AppearsAs = "MGMT",
337338
Name = "MGMT",
338339
Id = 143451,
339340
Image = "http://cdn.7static.com/static/img/artistimages/00/001/434/0000143451_150.jpg",
340-
Url = "http://www.7digital.com/artist/mgmt/?partner=1401"
341+
Url = "http://www.7digital.com/artist/mgmt/?partner=1401",
342+
IsPlaceholderImage = false,
343+
Slug = "mgmt-slug"
341344
};
342345

343346
var requestBuilder = StubRequestBuilder();
@@ -356,16 +359,18 @@ public async void Should_allow_you_to_set_a_request_payload_using_an_entity_tran
356359
[Test]
357360
public async void Should_allow_you_to_set_a_request_payload_using_an_entity_transferred_as_xml()
358361
{
359-
const string expectedOutput = "<?xml version=\"1.0\" encoding=\"utf-8\"?><artist id=\"143451\"><name>MGMT</name><appearsAs>MGMT</appearsAs><image>http://cdn.7static.com/static/img/artistimages/00/001/434/0000143451_150.jpg</image><url>http://www.7digital.com/artist/mgmt/?partner=1401</url></artist>";
362+
const string expectedOutput = "<?xml version=\"1.0\" encoding=\"utf-8\"?><artist id=\"143451\"><name>MGMT</name><appearsAs>MGMT</appearsAs><image>http://cdn.7static.com/static/img/artistimages/00/001/434/0000143451_150.jpg</image><url>http://www.7digital.com/artist/mgmt/?partner=1401</url><slug>mgmt-slug</slug><isPlaceholderImage>false</isPlaceholderImage></artist>";
360363

361364
var artist = new Artist
362365
{
363366
AppearsAs = "MGMT",
364367
Name = "MGMT",
365368
Id = 143451,
366369
Image = "http://cdn.7static.com/static/img/artistimages/00/001/434/0000143451_150.jpg",
367-
Url = "http://www.7digital.com/artist/mgmt/?partner=1401"
368-
};
370+
Url = "http://www.7digital.com/artist/mgmt/?partner=1401",
371+
IsPlaceholderImage = false,
372+
Slug = "mgmt-slug"
373+
};
369374

370375
var requestBuilder = StubRequestBuilder();
371376
var httpClient = StubHttpClient();

src/SevenDigital.Api.Wrapper.Unit.Tests/Requests/Serializing/JsonPayloadSerializerTests.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,17 @@ public void Should_have_correct_contenttype()
1818
[Test]
1919
public void Should_serialize_artist_as_expected()
2020
{
21-
const string expected = "{\"id\":143451,\"name\":\"MGMT\",\"sortName\":null,\"appearsAs\":\"MGMT\",\"image\":\"http://cdn.7static.com/static/img/artistimages/00/001/434/0000143451_150.jpg\",\"url\":\"http://www.7digital.com/artist/mgmt/?partner=1401\"}";
21+
const string expected = "{\"id\":143451,\"name\":\"MGMT\",\"sortName\":null,\"appearsAs\":\"MGMT\",\"image\":\"http://cdn.7static.com/static/img/artistimages/00/001/434/0000143451_150.jpg\",\"url\":\"http://www.7digital.com/artist/mgmt/?partner=1401\",\"slug\":\"mgmt-slug\",\"isPlaceholderImage\":null}";
2222

2323
var artist = new Artist
2424
{
2525
AppearsAs = "MGMT",
2626
Name = "MGMT",
2727
Id = 143451,
2828
Image = "http://cdn.7static.com/static/img/artistimages/00/001/434/0000143451_150.jpg",
29-
Url = "http://www.7digital.com/artist/mgmt/?partner=1401"
29+
Url = "http://www.7digital.com/artist/mgmt/?partner=1401",
30+
Slug = "mgmt-slug",
31+
IsPlaceholderImage = null
3032
};
3133

3234
var json = _payloadSerializer.Serialize(artist);

src/SevenDigital.Api.Wrapper.Unit.Tests/Requests/Serializing/XmlPayloadSerializerTests.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,16 @@ public void Should_have_correct_contenttype()
1818
[Test]
1919
public void Should_serialize_artist_as_expected()
2020
{
21-
const string expectedXmlOutput = "<?xml version=\"1.0\" encoding=\"utf-8\"?><artist id=\"143451\"><name>MGMT</name><appearsAs>MGMT</appearsAs><image>http://cdn.7static.com/static/img/artistimages/00/001/434/0000143451_150.jpg</image><url>http://www.7digital.com/artist/mgmt/?partner=1401</url></artist>";
21+
const string expectedXmlOutput = "<?xml version=\"1.0\" encoding=\"utf-8\"?><artist id=\"143451\"><name>MGMT</name><appearsAs>MGMT</appearsAs><image>http://cdn.7static.com/static/img/artistimages/00/001/434/0000143451_150.jpg</image><url>http://www.7digital.com/artist/mgmt/?partner=1401</url><isPlaceholderImage>false</isPlaceholderImage></artist>";
2222

2323
var artist = new Artist
2424
{
2525
AppearsAs = "MGMT",
2626
Name = "MGMT",
2727
Id = 143451,
2828
Image = "http://cdn.7static.com/static/img/artistimages/00/001/434/0000143451_150.jpg",
29-
Url = "http://www.7digital.com/artist/mgmt/?partner=1401"
29+
Url = "http://www.7digital.com/artist/mgmt/?partner=1401",
30+
IsPlaceholderImage = false
3031
};
3132

3233
var xml = _payloadSerializer.Serialize(artist);

src/SevenDigital.Api.Wrapper.Unit.Tests/SevenDigital.Api.Wrapper.Unit.Tests.csproj

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,16 +41,16 @@
4141
<HintPath>..\..\packages\FakeItEasy.1.25.3\lib\net40\FakeItEasy.dll</HintPath>
4242
<Private>True</Private>
4343
</Reference>
44-
<Reference Include="Newtonsoft.Json, Version=7.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
45-
<HintPath>..\..\packages\Newtonsoft.Json.7.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
44+
<Reference Include="Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
45+
<HintPath>..\..\packages\Newtonsoft.Json.10.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
4646
<Private>True</Private>
4747
</Reference>
4848
<Reference Include="nunit.framework, Version=2.6.4.14350, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
4949
<HintPath>..\..\packages\NUnit.2.6.4\lib\nunit.framework.dll</HintPath>
5050
<Private>True</Private>
5151
</Reference>
5252
<Reference Include="SevenDigital.Api.Schema, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
53-
<HintPath>..\..\packages\SevenDigital.Api.Schema.1.3.1\lib\net40\SevenDigital.Api.Schema.dll</HintPath>
53+
<HintPath>..\..\packages\SevenDigital.Api.Schema.2.0.0\lib\net40\SevenDigital.Api.Schema.dll</HintPath>
5454
<Private>True</Private>
5555
</Reference>
5656
<Reference Include="System" />
@@ -72,6 +72,7 @@
7272
<Compile Include="Endpoints\Playlists\UserPlaylistsXmlTests.cs" />
7373
<Compile Include="Environment\AttributeRequestDataBuilderTests.cs" />
7474
<Compile Include="Endpoints\Baskets\BasketEndpointTests.cs" />
75+
<Compile Include="Extensions\HasUsageTypesParameterExtensionsTests.cs" />
7576
<Compile Include="FluentApiBaseUriTests.cs" />
7677
<Compile Include="Http\HttpMethodHelpersTests.cs" />
7778
<Compile Include="ParameterExtensionsTests.cs" />

src/SevenDigital.Api.Wrapper.Unit.Tests/StubRequests/Playlist.xml

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,23 @@
33
<name>Test Playlist</name>
44
<visibility>Private</visibility>
55
<status>NotSpecified</status>
6+
<tags />
7+
<annotations />
68
<tracks>
7-
<trackId>123</trackId>
8-
<trackTitle>Weekend Wars</trackTitle>
9-
<trackVersion>deluxe</trackVersion>
10-
<artistId>123</artistId>
11-
<artistAppearsAs>MGMT</artistAppearsAs>
12-
<releaseId>123</releaseId>
13-
<releaseTitle>Oracula Spectacular</releaseTitle>
14-
<releaseArtistId>123</releaseArtistId>
15-
<releaseArtistAppearsAs>MGMT</releaseArtistAppearsAs>
16-
<releaseVersion>extended</releaseVersion>
17-
<source>local</source>
18-
<audioUrl>test.mp3</audioUrl>
19-
<image>http://my.image.com/image.jpg</image>
9+
<track>
10+
<trackId>123</trackId>
11+
<trackTitle>Weekend Wars</trackTitle>
12+
<trackVersion>deluxe</trackVersion>
13+
<artistId>123</artistId>
14+
<artistAppearsAs>MGMT</artistAppearsAs>
15+
<releaseId>123</releaseId>
16+
<releaseTitle>Oracula Spectacular</releaseTitle>
17+
<releaseArtistId>123</releaseArtistId>
18+
<releaseArtistAppearsAs>MGMT</releaseArtistAppearsAs>
19+
<releaseVersion>extended</releaseVersion>
20+
<source>local</source>
21+
<audioUrl>test.mp3</audioUrl>
22+
<image>http://my.image.com/image.jpg</image>
23+
</track>
2024
</tracks>
2125
</playlist>

0 commit comments

Comments
 (0)