public async Task <ActionResult <IDictionary <string, string> > > GetTranslationsByLanguage([FromRoute] int languageId, [FromQuery] GetTranslationsByLanguageQueryParams model, CancellationToken cancellationToken = default) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } LanguageExistsQuery existsQuery = new LanguageExistsQuery { LanguageId = languageId }; bool languageExists = await _mediator.Send(existsQuery, cancellationToken); if (!languageExists) { return(NotFound(new ErrorResource { StatusCode = StatusCodes.Status404NotFound, Message = $"Language with ID '{languageId}' does not exist" })); } GetTranslationsByLanguageQuery translationsQuery = new GetTranslationsByLanguageQuery { LanguageId = languageId, Pattern = model.Pattern }; IDictionary <string, string> translations = await _mediator.Send(translationsQuery, cancellationToken); return(Ok(translations)); }
public async Task GetTranslationsByLanguageQueryHandler_ShouldReturnEmptyDictionary_WhenLanguageDoesNotExist() { // Arrange GetTranslationsByLanguageQuery request = new GetTranslationsByLanguageQuery { LanguageId = 8917 }; Mock <IQueryable <Translation> > translationQueryableMock = Enumerable .Empty <Translation>() .AsQueryable() .BuildMock(); _unitOfWorkMock .Setup(m => m.Translations.GetByLanguage(It.IsAny <int>())) .Returns(translationQueryableMock.Object); GetTranslationsByLanguageQuery.Handler handler = new GetTranslationsByLanguageQuery.Handler(_unitOfWorkMock.Object); // Act IDictionary <string, string> translations = await handler.Handle(request); // Assert Assert.NotNull(translations); Assert.Empty(translations); }
public override async Task <IEnumerable <TranslationModel> > ExecuteAsync(GetTranslationsByLanguageQuery query, CancellationToken cancellationToken = new CancellationToken()) { using (var database = _databaseProvider.GetDatabaseForDictionary(query.DictionaryId)) { var translations = await database.Translation .Where(t => t.WordId == query.WordId && (int)t.Language == (int)query.Language) .ToListAsync(cancellationToken); return(translations.Select(t => t.Map <Translation, TranslationModel>())); } }
public override async Task <GetTranslationsForLanguageRequest> HandleAsync(GetTranslationsForLanguageRequest command, CancellationToken cancellationToken = new CancellationToken()) { var query = new GetTranslationsByLanguageQuery { DictionaryId = command.DictionaryId, WordId = command.WordId, Language = command.Language }; var result = await _queryProcessor.ExecuteAsync(query, cancellationToken); command.Result = result.Select(t => _translationRenderer.Render(t, command.DictionaryId)); return(await base.HandleAsync(command, cancellationToken)); }
public async Task GetTranslationsByLanguageQueryHandler_ShouldReturnTranslationDictionary_WhenLanguageExistsAndPatternMatches() { // Arrange GetTranslationsByLanguageQuery request = new GetTranslationsByLanguageQuery { LanguageId = 1, Pattern = "key" }; IEnumerable <Translation> expectedTranslations = new[] { new Translation { TranslationId = 1, Key = "key", Value = "value" } }; Mock <IQueryable <Translation> > translationQueryableMock = expectedTranslations .AsQueryable() .BuildMock(); _unitOfWorkMock .Setup(m => m.Translations.GetByLanguage(It.IsAny <int>(), It.IsAny <string>())) .Returns(translationQueryableMock.Object); GetTranslationsByLanguageQuery.Handler handler = new GetTranslationsByLanguageQuery.Handler(_unitOfWorkMock.Object); // Act IDictionary <string, string> translations = await handler.Handle(request); // Assert Assert.NotNull(translations); Assert.NotEmpty(translations); Assert.Single(translations); Assert.Equal("key", translations.First().Key); Assert.Equal("value", translations.First().Value); }
public override async Task <IEnumerable <TranslationModel> > ExecuteAsync(GetTranslationsByLanguageQuery query, CancellationToken cancellationToken = new CancellationToken()) { return(await _apiClient.Get <IEnumerable <TranslationModel> >($"api/dictionaries/{query.DictionaryId}/words/{query.WordId}/translations/languages/{query.Language}")); }