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(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); } }