using System; using Xunit; using Newtonsoft.Json.Linq; using FluentAssertions; using System.Collections.Generic; using System.Threading.Tasks; using System.Collections.Concurrent; namespace raven_integration { public class Translation { /* ImportTranslation(ct, ResourceFolderPath, "en"); - id 1 ImportTranslation(ct, ResourceFolderPath, "es"); - id 2 ImportTranslation(ct, ResourceFolderPath, "fr"); - id 3 ImportTranslation(ct, ResourceFolderPath, "de"); - id 4 */ [Fact] public async Task TranslationListWorks() { //Get all ApiResponse a = await Util.GetAsync("translation/list", await Util.GetTokenAsync("CustomerRestricted"));//lowest level test user because there are no limits on this route except to be authenticated Util.ValidateDataReturnResponseOk(a); Util.ValidateHTTPStatusCode(a, 200); //there should be at least 4 of them as there are 4 stock translations ((JArray)a.ObjectResponse["data"]).Count.Should().BeGreaterThan(3); } [Fact] public async Task GetFullTranslationWorks() { //Get all ApiResponse a = await Util.GetAsync("translation/1", await Util.GetTokenAsync("CustomerRestricted"));//lowest level test user because there are no limits on this route except to be authenticated Util.ValidateDataReturnResponseOk(a); Util.ValidateHTTPStatusCode(a, 200); //there should be dozens of keys but at times there might only be a few during development so at least verify there is more than one ((JArray)a.ObjectResponse["data"]["translationItems"]).Count.Should().BeGreaterThan(0); } [Fact] public async Task GetSubsetWorks() { List keys = new List(); keys.AddRange(new string[] { "AddressCity", "CustomerName", "ServiceRate", "WorkOrder" }); dynamic d = new JObject(); d = JToken.FromObject(keys); ApiResponse a = await Util.PostAsync("translation/subset", await Util.GetTokenAsync("CustomerRestricted"), d.ToString()); Util.ValidateDataReturnResponseOk(a); Util.ValidateHTTPStatusCode(a, 200); //there should be dozens of keys but at times there might only be a few during development so at least verify there is more than one ((JArray)a.ObjectResponse["data"]).Count.Should().Be(4); } [Fact] public async Task DuplicateUpdateAndDeleteWorks() { //DUPLICATE ApiResponse a = await Util.PostAsync("translation/Duplicate/1", await Util.GetTokenAsync("BizAdmin")); Util.ValidateDataReturnResponseOk(a); Util.ValidateHTTPStatusCode(a, 201); //verify the object returned is as expected a.ObjectResponse["data"]["name"].Value().Should().Contain("en-");//based on english - 1 a.ObjectResponse["data"]["stock"].Value().Should().Be(false); a.ObjectResponse["data"]["id"].Value().Should().BeGreaterThan(4); a.ObjectResponse["data"]["concurrency"].Value().Should().BeGreaterThan(0); ((JArray)a.ObjectResponse["data"]["translationItems"]).Count.Should().BeGreaterThan(0); long NewId = a.ObjectResponse["data"]["id"].Value(); dynamic d2 = a.ObjectResponse["data"]; //UPDATE //Update translation name d2.name = Util.Uniquify("INTEGRATION-TEST-LOCALE NAME UPDATE"); ApiResponse PUTTestResponse = await Util.PutAsync("translation", await Util.GetTokenAsync("BizAdmin"), d2.ToString()); Util.ValidateHTTPStatusCode(PUTTestResponse, 200); ApiResponse checkPUTWorked = await Util.GetAsync("translation/" + NewId.ToString(), await Util.GetTokenAsync("BizAdmin")); Util.ValidateNoErrorInResponse(checkPUTWorked); checkPUTWorked.ObjectResponse["data"]["name"].Value().Should().Be(d2.name.ToString()); //Update translation key d2 = a.ObjectResponse["data"]; var FirstTranslationKey = ((JArray)d2["translationItems"])[0]; var FirstTranslationKeyNewText=Util.Uniquify("INTEGRATION-TEST-LOCALEITEM DISPLAY UPDATE"); FirstTranslationKey["display"] = FirstTranslationKeyNewText; string UpdatedTranslationKey = FirstTranslationKey["key"].Value(); PUTTestResponse = await Util.PutAsync("translation", await Util.GetTokenAsync("BizAdmin"), d2.ToString()); Util.ValidateHTTPStatusCode(PUTTestResponse, 200); List keys = new List(); keys.AddRange(new string[] { UpdatedTranslationKey }); dynamic d = new JObject(); d = JToken.FromObject(keys); checkPUTWorked = await Util.PostAsync($"translation/subset/{NewId}", await Util.GetTokenAsync("BizAdmin"), d.ToString()); Util.ValidateDataReturnResponseOk(checkPUTWorked); Util.ValidateHTTPStatusCode(checkPUTWorked, 200); ((JArray)checkPUTWorked.ObjectResponse["data"]).Count.Should().Be(1); var FirstTranslationKeyUpdated = ((JArray)checkPUTWorked.ObjectResponse["data"])[0]; FirstTranslationKeyUpdated["value"].Value().Should().Be(FirstTranslationKeyNewText); //DELETE TEMP TRANSLATION a = await Util.DeleteAsync($"translation/{NewId}", await Util.GetTokenAsync("BizAdmin")); Util.ValidateHTTPStatusCode(a, 204); } //================================================== }//eoc }//eons