public async Task Translation_CreateDuplicated_ErrorRaised() { var article = new ArticleModelBuilder() .WithRandomValues() .Build(); using var client = await _webAppContext.GetLoggedClient(); // Create article using var httpResponseCreate = await CallApiAsync <CreateArticleRequest>( client.PostAsync, $"/api/v1/article", new CreateArticleRequest { Article = article } ); Assert.True(httpResponseCreate.StatusCode == System.Net.HttpStatusCode.OK, $"Error in create article response: {httpResponseCreate.StatusCode}"); var dataCreate = await GetResponse <CreateArticleResponse>(httpResponseCreate.Content); var translation = new TranslationModelBuilder().WithRandomValues().Build(); // Create translation using var httpResponseCreateTranslation = await CallApiAsync <CreateTranslationRequest>( client.PostAsync, $"/api/v1/translation", new CreateTranslationRequest { ArticleId = dataCreate.Article.Id, Translation = translation } ); Assert.True(httpResponseCreateTranslation.StatusCode == System.Net.HttpStatusCode.OK, $"Error in create article response: {httpResponseCreateTranslation.StatusCode}"); // Create duplicated translation using var httpResponseCreateTranslationDuplicated = await CallApiAsync <CreateTranslationRequest>( client.PostAsync, $"/api/v1/translation", new CreateTranslationRequest { ArticleId = dataCreate.Article.Id, Translation = translation } ); Assert.True(httpResponseCreateTranslationDuplicated.StatusCode == System.Net.HttpStatusCode.BadRequest, $"Duplicated translation error not raised"); var exception = await GetResponse <dynamic>(httpResponseCreateTranslationDuplicated.Content); Assert.True(exception.error.code == ExceptionCodes.TRANSLATION_ALREADY_EXISTS, "Invalid error code returned for duplicated translation"); }
public async Task Translation_UpdateNoExistingTranslation_NotFoundRaised() { var article = new ArticleModelBuilder() .WithRandomValues() .Build(); using var client = await _webAppContext.GetLoggedClient(); // Create article using var httpResponseCreate = await CallApiAsync <CreateArticleRequest>( client.PostAsync, $"/api/v1/article", new CreateArticleRequest { Article = article } ); Assert.True(httpResponseCreate.StatusCode == System.Net.HttpStatusCode.OK, $"Error in create article response: {httpResponseCreate.StatusCode}"); var dataCreate = await GetResponse <CreateArticleResponse>(httpResponseCreate.Content); var translation = new TranslationModelBuilder().WithRandomValues().Build(); // Update non existing translation using var httpResponseUpdateTranslation = await CallApiAsync <UpdateTranslationRequest>( client.PutAsync, $"/api/v1/translation", new UpdateTranslationRequest { ArticleId = dataCreate.Article.Id, Translation = translation } ); Assert.True(httpResponseUpdateTranslation.StatusCode == System.Net.HttpStatusCode.NotFound, $"Update error 'Not Found' not raised: {httpResponseUpdateTranslation.StatusCode}"); }
public async Task Translation_CreateMultipleSearchByReviewer_Success() { var article = new ArticleModelBuilder() .WithRandomValues() .Build(); using var client = await _webAppContext.GetLoggedClient(); // Create article using var httpResponseCreate = await CallApiAsync <CreateArticleRequest>( client.PostAsync, $"/api/v1/article", new CreateArticleRequest { Article = article, Text = "In ENglish" } ); Assert.True(httpResponseCreate.StatusCode == System.Net.HttpStatusCode.OK, $"Error in create article response: {httpResponseCreate.StatusCode}"); var dataCreate = await GetResponse <CreateArticleResponse>(httpResponseCreate.Content); var translationES = new TranslationModelBuilder() .WithRandomValues() .WithLanguage("es") .Build(); // Create translation ES using var httpResponseCreateTranslationES = await CallApiAsync <CreateTranslationRequest>( client.PostAsync, $"/api/v1/translation", new CreateTranslationRequest { ArticleId = dataCreate.Article.Id, Translation = translationES, Text = "En español" } ); Assert.True(httpResponseCreateTranslationES.StatusCode == System.Net.HttpStatusCode.OK, $"Error in create translation response: {httpResponseCreateTranslationES.StatusCode}"); var translationFR = new TranslationModelBuilder() .WithRandomValues() .WithLanguage("fr") .Build(); // Create translation FR using var httpResponseCreateTranslationFR = await CallApiAsync <CreateTranslationRequest>( client.PostAsync, $"/api/v1/translation", new CreateTranslationRequest { ArticleId = dataCreate.Article.Id, Translation = translationFR, Text = "Fraçous" } ); Assert.True(httpResponseCreateTranslationFR.StatusCode == System.Net.HttpStatusCode.OK, $"Error in create translation response: {httpResponseCreateTranslationFR.StatusCode}"); // Search by reviewed by using var httpResponseSearch = await CallApiAsync( client.GetAsync, $"/api/v1/articles?filter.reviewedBy={HttpUtility.UrlEncode(translationES.ReviewedBy)}&page=1&pageCount=10" ); var searchResult = await GetResponse <ArticleSearchResponse>(httpResponseSearch.Content); Assert.True(searchResult.Total == 1, "Not found articles"); Assert.True(searchResult.Articles != null && searchResult.Articles.Count == 1, "Not found articles"); Assert.True(searchResult.Articles[0].Translations != null && searchResult.Articles[0].Translations.Where(w => w.ReviewedBy == translationES.ReviewedBy).Count() == 1, "Not found articles"); // Delete using var httpResponseDelete = await CallApiAsync( client.DeleteAsync, $"/api/v1/article/{dataCreate.Article.Id}" ); Assert.True(httpResponseDelete.StatusCode == System.Net.HttpStatusCode.OK, $"Error in deleting article response: {httpResponseCreate.StatusCode}"); }
public async Task Translation_CreateUpdateDelete_Success() { var article = new ArticleModelBuilder() .WithRandomValues() .Build(); using var client = await _webAppContext.GetLoggedClient(); // Create article using var httpResponseCreate = await CallApiAsync <CreateArticleRequest>( client.PostAsync, $"/api/v1/article", new CreateArticleRequest { Article = article } ); Assert.True(httpResponseCreate.StatusCode == System.Net.HttpStatusCode.OK, $"Error in create article response: {httpResponseCreate.StatusCode}"); var dataCreate = await GetResponse <CreateArticleResponse>(httpResponseCreate.Content); var translation = new TranslationModelBuilder().WithRandomValues().Build(); // Create translation using var httpResponseCreateTranslation = await CallApiAsync <CreateTranslationRequest>( client.PostAsync, $"/api/v1/translation", new CreateTranslationRequest { ArticleId = dataCreate.Article.Id, Text = "Prueba", Translation = translation } ); Assert.True(httpResponseCreateTranslation.StatusCode == System.Net.HttpStatusCode.OK, $"Error in create article response: {httpResponseCreateTranslation.StatusCode}"); // Retrieve article using var httpResponseRetrieve = await CallApiAsync( client.GetAsync, $"/api/v1/article/{dataCreate.Article.Id}" ); Assert.True(httpResponseRetrieve.StatusCode == System.Net.HttpStatusCode.OK, $"Error in create translation response: {httpResponseRetrieve.StatusCode}"); var dataArticle = await GetResponse <Article>(httpResponseRetrieve.Content); Assert.True(dataArticle.Translations != null && dataArticle.Translations.Count > 0, "No data received"); Assert.True(DateEquals(dataArticle.Translations.First().Date, translation.Date), "Date mismatch"); Assert.True(dataArticle.Translations.First().Language == translation.Language, "Language mismatch"); Assert.True(dataArticle.Translations.First().ReviewedBy == translation.ReviewedBy, "ReviewedBy mismatch"); Assert.True(dataArticle.Translations.First().Status == translation.Status, "Status mismatch"); Assert.True(dataArticle.Translations.First().Subtitle == translation.Subtitle, "Subtitle mismatch"); Assert.True(dataArticle.Translations.First().Summary == translation.Summary, "Summary mismatch"); Assert.True(dataArticle.Translations.First().Title == translation.Title, "Title mismatch"); Assert.True(dataArticle.Translations.First().TranslatedBy == translation.TranslatedBy, "TranslatedBy mismatch"); HttpClient httpGet = new HttpClient(); var getTranslationTextResponse = await httpGet.GetAsync(dataArticle.Translations.Where(w => w.Language == translation.Language).First().TextLink); Assert.True(getTranslationTextResponse.StatusCode == System.Net.HttpStatusCode.OK, $"Error retrieving translation text file: {getTranslationTextResponse.StatusCode}"); // Delete using var httpResponseDelete = await CallApiAsync( client.DeleteAsync, $"/api/v1/translation?articleId={dataArticle.Id}&language={translation.Language}" ); Assert.True(httpResponseDelete.StatusCode == System.Net.HttpStatusCode.OK, $"Error in deleting article response: {httpResponseCreate.StatusCode}"); // Check article using var httpResponseRetrieveCheck = await CallApiAsync( client.GetAsync, $"/api/v1/article/{dataCreate.Article.Id}" ); Assert.True(httpResponseRetrieveCheck.StatusCode == System.Net.HttpStatusCode.OK, $"Error in create article response: {httpResponseRetrieveCheck.StatusCode}"); var dataArticleCheck = await GetResponse <Article>(httpResponseRetrieveCheck.Content); Assert.True(dataArticle.Translations.Where(w => w.Language == article.Language).Count() == 0, "Translation not deleted"); }
public async Task Translation_CreateMultipleUpdateDelete_Success() { var article = new ArticleModelBuilder() .WithRandomValues() .Build(); using var client = await _webAppContext.GetLoggedClient(); // Create article using var httpResponseCreate = await CallApiAsync <CreateArticleRequest>( client.PostAsync, $"/api/v1/article", new CreateArticleRequest { Article = article, Text = "In ENglish" } ); Assert.True(httpResponseCreate.StatusCode == System.Net.HttpStatusCode.OK, $"Error in create article response: {httpResponseCreate.StatusCode}"); var dataCreate = await GetResponse <CreateArticleResponse>(httpResponseCreate.Content); var translationES = new TranslationModelBuilder() .WithRandomValues() .WithLanguage("es") .Build(); // Create translation ES using var httpResponseCreateTranslationES = await CallApiAsync <CreateTranslationRequest>( client.PostAsync, $"/api/v1/translation", new CreateTranslationRequest { ArticleId = dataCreate.Article.Id, Translation = translationES, Text = "En español" } ); Assert.True(httpResponseCreateTranslationES.StatusCode == System.Net.HttpStatusCode.OK, $"Error in create translation response: {httpResponseCreateTranslationES.StatusCode}"); var translationFR = new TranslationModelBuilder() .WithRandomValues() .WithLanguage("fr") .Build(); // Create translation FR using var httpResponseCreateTranslationFR = await CallApiAsync <CreateTranslationRequest>( client.PostAsync, $"/api/v1/translation", new CreateTranslationRequest { ArticleId = dataCreate.Article.Id, Translation = translationFR, Text = "Fraçous" } ); Assert.True(httpResponseCreateTranslationFR.StatusCode == System.Net.HttpStatusCode.OK, $"Error in create translation response: {httpResponseCreateTranslationFR.StatusCode}"); // Update translation FR var translationUpdateFR = new TranslationModelBuilder() .WithRandomValues() .WithLanguage("fr") .WithHasText(false) // To check that has text is not updated... .WithTextLink(null) // To check that link is not updated... .Build(); using var httpResponseUpdateTranslationFR = await CallApiAsync <CreateTranslationRequest>( client.PutAsync, $"/api/v1/translation", new CreateTranslationRequest { ArticleId = dataCreate.Article.Id, Translation = translationUpdateFR, Text = "Fraçous 2" } ); Assert.True(httpResponseUpdateTranslationFR.StatusCode == System.Net.HttpStatusCode.OK, $"Error in create translation FR response: {httpResponseUpdateTranslationFR.StatusCode}"); // Retrieve article and check fr translation update using var httpResponseRetrieve = await CallApiAsync( client.GetAsync, $"/api/v1/article/{dataCreate.Article.Id}" ); Assert.True(httpResponseCreate.StatusCode == System.Net.HttpStatusCode.OK, $"Error in translarion update FR response: {httpResponseRetrieve.StatusCode}"); var dataRetrieve = await GetResponse <Article>(httpResponseRetrieve.Content); var dataFR = dataRetrieve.Translations.Where(w => w.Language == "fr").First(); Assert.True(DateEquals(dataFR.Date, translationUpdateFR.Date), "Date mismatch"); Assert.True(dataFR.HasText != translationUpdateFR.HasText, "HasText mismatch"); Assert.True(dataFR.Language == translationUpdateFR.Language, "Language mismatch"); Assert.True(dataFR.ReviewedBy == translationUpdateFR.ReviewedBy, "ReviewedBy mismatch"); Assert.True(dataFR.Status == translationUpdateFR.Status, "Status mismatch"); Assert.True(dataFR.Subtitle == translationUpdateFR.Subtitle, "Subtitle mismatch"); Assert.True(dataFR.Summary == translationUpdateFR.Summary, "Summary mismatch"); Assert.True(dataFR.TextLink != translationUpdateFR.TextLink, "TextLink mismatch"); Assert.True(dataFR.Title == translationUpdateFR.Title, "Title mismatch"); Assert.True(dataFR.TranslatedBy == translationUpdateFR.TranslatedBy, "TranslatedBy mismatch"); // Update Text using var httpResponseUpdateTranslationTextFR = await CallApiAsync <UpdateTranslationTextRequest>( client.PutAsync, $"/api/v1/translation/text", new UpdateTranslationTextRequest { ArticleId = dataCreate.Article.Id, Language = "fr", Text = "Updated" } ); Assert.True(httpResponseUpdateTranslationTextFR.StatusCode == System.Net.HttpStatusCode.OK, $"Error in update translation text FR response: {httpResponseUpdateTranslationTextFR.StatusCode}"); HttpClient httpGet = new HttpClient(); var getTranslationTextFrResponse = await httpGet.GetAsync(dataFR.TextLink); Assert.True(getTranslationTextFrResponse.StatusCode == System.Net.HttpStatusCode.OK, $"Error retrieving translation text file: {getTranslationTextFrResponse.StatusCode}"); var updatedTranslationTextFR = await getTranslationTextFrResponse.Content.ReadAsStringAsync(); Assert.True(updatedTranslationTextFR == "Updated", "Translation text not updated"); // Delete using var httpResponseDelete = await CallApiAsync( client.DeleteAsync, $"/api/v1/article/{dataCreate.Article.Id}" ); Assert.True(httpResponseDelete.StatusCode == System.Net.HttpStatusCode.OK, $"Error in deleting article response: {httpResponseCreate.StatusCode}"); }