mirror of
https://github.com/Sarsoo/Spotify.NET.git
synced 2024-12-24 15:06:26 +00:00
91 lines
2.9 KiB
C#
91 lines
2.9 KiB
C#
|
using System.Collections.Generic;
|
||
|
using System.Text;
|
||
|
using System.IO;
|
||
|
using Moq;
|
||
|
using NUnit.Framework;
|
||
|
using SpotifyAPI.Web.Http;
|
||
|
using System.Net.Http;
|
||
|
|
||
|
namespace SpotifyAPI.Web.Tests
|
||
|
{
|
||
|
public class NewtonsoftJSONSerializerTest
|
||
|
{
|
||
|
|
||
|
public static IEnumerable<object> DontSerializeTestSource
|
||
|
{
|
||
|
get
|
||
|
{
|
||
|
yield return new TestCaseData(null);
|
||
|
yield return new TestCaseData("string");
|
||
|
yield return new TestCaseData(new MemoryStream(Encoding.UTF8.GetBytes("string")));
|
||
|
yield return new TestCaseData(new StringContent("string"));
|
||
|
}
|
||
|
}
|
||
|
|
||
|
[TestCaseSource(nameof(DontSerializeTestSource))]
|
||
|
public void SerializeRequest_SkipsAlreadySerialized(object input)
|
||
|
{
|
||
|
var serializer = new NewtonsoftJSONSerializer();
|
||
|
var request = new Mock<IRequest>();
|
||
|
request.SetupGet(r => r.Body).Returns(input);
|
||
|
|
||
|
serializer.SerializeRequest(request.Object);
|
||
|
|
||
|
Assert.AreEqual(input, request.Object.Body);
|
||
|
}
|
||
|
|
||
|
public static IEnumerable<object> SerializeTestSource
|
||
|
{
|
||
|
get
|
||
|
{
|
||
|
yield return new TestCaseData(new { Uppercase = true }, "{\"uppercase\":true}");
|
||
|
yield return new TestCaseData(new { CamelCase = true }, "{\"camel_case\":true}");
|
||
|
yield return new TestCaseData(new { CamelCase = true, UPPER = true }, "{\"camel_case\":true,\"upper\":true}");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
[TestCaseSource(nameof(SerializeTestSource))]
|
||
|
public void SerializeRequest_CorrectNaming(object input, string result)
|
||
|
{
|
||
|
var serializer = new NewtonsoftJSONSerializer();
|
||
|
var request = new Mock<IRequest>();
|
||
|
request.SetupGet(r => r.Body).Returns(input);
|
||
|
|
||
|
serializer.SerializeRequest(request.Object);
|
||
|
|
||
|
request.VerifySet(r => r.Body = result);
|
||
|
}
|
||
|
|
||
|
[TestCase]
|
||
|
public void DeserializeResponse_SkipsNonJson()
|
||
|
{
|
||
|
var serializer = new NewtonsoftJSONSerializer();
|
||
|
var response = new Mock<IResponse>();
|
||
|
response.SetupGet(r => r.Body).Returns("hello");
|
||
|
response.SetupGet(r => r.ContentType).Returns("media/mp4");
|
||
|
|
||
|
IAPIResponse<object> apiResonse = serializer.DeserializeResponse<object>(response.Object);
|
||
|
Assert.AreEqual(apiResonse.Body, null);
|
||
|
Assert.AreEqual(apiResonse.Response, response.Object);
|
||
|
}
|
||
|
|
||
|
[TestCase]
|
||
|
public void DeserializeResponse_HandlesJson()
|
||
|
{
|
||
|
var serializer = new NewtonsoftJSONSerializer();
|
||
|
var response = new Mock<IResponse>();
|
||
|
response.SetupGet(r => r.Body).Returns("{\"hello_world\": false}");
|
||
|
response.SetupGet(r => r.ContentType).Returns("application/json");
|
||
|
|
||
|
IAPIResponse<TestResponseObject> apiResonse = serializer.DeserializeResponse<TestResponseObject>(response.Object);
|
||
|
Assert.AreEqual(apiResonse.Body?.HelloWorld, false);
|
||
|
Assert.AreEqual(apiResonse.Response, response.Object);
|
||
|
}
|
||
|
|
||
|
public class TestResponseObject
|
||
|
{
|
||
|
public bool HelloWorld { get; set; }
|
||
|
}
|
||
|
}
|
||
|
}
|