2015-10-23 20:25:13 +01:00
|
|
|
|
using Moq;
|
2015-07-07 17:11:11 +01:00
|
|
|
|
using Newtonsoft.Json;
|
|
|
|
|
using NUnit.Framework;
|
|
|
|
|
using SpotifyAPI.Web;
|
|
|
|
|
using SpotifyAPI.Web.Models;
|
2015-10-23 20:25:13 +01:00
|
|
|
|
using System;
|
|
|
|
|
using System.IO;
|
|
|
|
|
using System.Linq;
|
2015-07-07 17:11:11 +01:00
|
|
|
|
|
|
|
|
|
namespace SpotifyAPI.Tests
|
|
|
|
|
{
|
|
|
|
|
[TestFixture]
|
|
|
|
|
public class TestClass
|
|
|
|
|
{
|
2016-03-05 16:02:34 +00:00
|
|
|
|
private static readonly string FixtureDir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "../../fixtures/");
|
|
|
|
|
|
2015-07-07 17:11:11 +01:00
|
|
|
|
private Mock<IClient> _mock;
|
|
|
|
|
private SpotifyWebAPI _spotify;
|
|
|
|
|
|
|
|
|
|
[SetUp]
|
|
|
|
|
public void SetUp()
|
|
|
|
|
{
|
|
|
|
|
_mock = new Mock<IClient>();
|
|
|
|
|
_spotify = new SpotifyWebAPI()
|
|
|
|
|
{
|
|
|
|
|
WebClient = _mock.Object,
|
|
|
|
|
UseAuth = false
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static T GetFixture<T>(string file)
|
|
|
|
|
{
|
2016-03-05 16:02:34 +00:00
|
|
|
|
return JsonConvert.DeserializeObject<T>(File.ReadAllText(Path.Combine(FixtureDir, file)));
|
2015-07-07 17:11:11 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static bool ContainsValues(string str, params string[] values)
|
|
|
|
|
{
|
|
|
|
|
return values.All(str.Contains);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void ShouldGetPrivateProfile_WithoutAuth()
|
|
|
|
|
{
|
|
|
|
|
_spotify.UseAuth = false;
|
2016-03-05 15:24:54 +00:00
|
|
|
|
|
|
|
|
|
Assert.Throws<InvalidOperationException>(() => _spotify.GetPrivateProfile());
|
2015-07-07 17:11:11 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void ShouldGetPrivateProfile_WithAuth()
|
|
|
|
|
{
|
|
|
|
|
PrivateProfile profile = GetFixture<PrivateProfile>("private-user.json");
|
2016-07-07 20:38:07 +01:00
|
|
|
|
_mock.Setup(client => client.DownloadJson<PrivateProfile>(It.IsAny<string>()))
|
|
|
|
|
.Returns(new Tuple<ResponseInfo, PrivateProfile>(ResponseInfo.Empty, profile));
|
2015-07-07 17:11:11 +01:00
|
|
|
|
|
|
|
|
|
_spotify.UseAuth = true;
|
|
|
|
|
Assert.AreEqual(profile, _spotify.GetPrivateProfile());
|
|
|
|
|
_mock.Verify(client => client.DownloadJson<PrivateProfile>(It.Is<string>(str => ContainsValues(str, "/me"))), Times.Exactly(1));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void ShouldGetPublicProfile()
|
|
|
|
|
{
|
|
|
|
|
PublicProfile profile = GetFixture<PublicProfile>("public-user.json");
|
2016-07-07 20:38:07 +01:00
|
|
|
|
_mock.Setup(client => client.DownloadJson<PublicProfile>(It.IsAny<string>()))
|
|
|
|
|
.Returns(new Tuple<ResponseInfo, PublicProfile>(ResponseInfo.Empty, profile));
|
2015-07-07 17:11:11 +01:00
|
|
|
|
|
|
|
|
|
Assert.AreEqual(profile, _spotify.GetPublicProfile("wizzler"));
|
|
|
|
|
_mock.Verify(client => client.DownloadJson<PublicProfile>(It.Is<string>(str => ContainsValues(str, "/users/wizzler"))), Times.Exactly(1));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//Will add more tests once I decided if this is worth the effort (propably not?)
|
|
|
|
|
}
|
2015-10-23 20:25:13 +01:00
|
|
|
|
}
|