KeywordsEverywhereClient/KeywordsEverywhereClient.Tests/SerializationTests.cs

70 lines
2.0 KiB
C#

using System.Text.Json;
namespace KeywordsEverywhereClient.Tests;
[TestClass]
public class SerializationTests
{
private string ValidResponseJson = """
{
"data": [
{
"vol": 135000,
"cpc": {
"currency": "$",
"value": "1.14"
},
"keyword": "hello world",
"competition": 0.01,
"trend": [
{
"month": "July",
"year": 2023,
"value": 135000
},
{
"month": "August",
"year": 2024,
"value": 135001
}
]
}
],
"credits": 399174,
"time": 0.01
}
""";
[TestMethod]
public void CanDeserialize()
{
var result = JsonSerializer.Deserialize<GetKeywordDataResponse>(ValidResponseJson)
?? throw new InvalidOperationException("Success response is null.");
Assert.AreEqual(1, result.Data.Count);
Assert.AreEqual(399174, result.Credits);
Assert.AreEqual(0.01, result.Time);
var data = result.Data[0];
Assert.AreEqual(135000, data.Volume);
Assert.AreEqual("$", data.CostPerClick.Currency);
Assert.AreEqual("1.14", data.CostPerClick.Value);
Assert.AreEqual("hello world", data.Keyword);
Assert.AreEqual(0.01, data.Competition);
Assert.AreEqual(2, data.Trend.Count);
Assert.AreEqual("July", data.Trend[0].Month);
Assert.AreEqual(2023, data.Trend[0].Year);
Assert.AreEqual(135000, data.Trend[0].Value);
Assert.AreEqual("August", data.Trend[1].Month);
Assert.AreEqual(2024, data.Trend[1].Year);
Assert.AreEqual(135001, data.Trend[1].Value);
}
}