private void CheckPairs(AddWordsRequest request, AddWordsReply reply, InWordsDataContext context, int userId) { foreach (var result in reply.WordIds) { var localIdGroup = reply.WordIds.Where(d => d.LocalId == result.LocalId).ToList(); var userwordpair = context.UserWordPairs.Where(u => u.UserId == userId) .Include(u => u.WordPair) .ThenInclude(wp => wp.WordForeign) .Include(u => u.WordPair.WordNative) .AsEnumerable() .Where(u => localIdGroup.Any(rep => rep.ServerId == u.UserWordPairId)); foreach (var value in request.Words.Where(d => d.LocalId == result.LocalId)) { var contains = userwordpair.Any(d => d.IsInvertPair && d.WordPair.WordForeign.Content == value.WordNative && d.WordPair.WordNative.Content == value.WordForeign) || userwordpair.Any(d => !d.IsInvertPair && d.WordPair.WordForeign.Content == value.WordForeign && d.WordPair.WordNative.Content == value.WordNative); Assert.True(contains); } } }
public static void AddOneWordTest(string token) { // arrange using var clientFabric = new GetClient <DictionaryProviderClient>(d => new DictionaryProviderClient(d)); DictionaryProviderClient client = clientFabric.Client; AddWordsRequest addwordsRequest = new AddWordsRequest(); AddWordRequest addWordRequest = new AddWordRequest() { LocalId = 1, WordForeign = "cat", WordNative = "кот" }; addwordsRequest.Words.Add(addWordRequest); // act var headers = new Metadata { { "Authorization", $"Bearer {token}" } }; var empty = client.AddWords(addwordsRequest, headers); // assert Assert.Single(empty.WordIds); Assert.Equal(1, empty.WordIds[0].LocalId); }
public override async Task <AddWordsReply> AddWords(AddWordsRequest request, ServerCallContext context) { var reqestObject = new AuthorizedRequestObject <AddWordsRequest, AddWordsReply>(request) { UserId = context.GetHttpContext().User.GetUserId() }; AddWordsReply reply = await mediator.Send(reqestObject).ConfigureAwait(false); return(reply); }
public async Task <IActionResult> AddWords([FromBody] AddWordsRequest request) { var reqestObject = new AuthorizedRequestObject <AddWordsRequest, AddWordsReply>(request) { UserId = User.GetUserId() }; AddWordsReply reply = await mediator.Send(reqestObject).ConfigureAwait(false); return(Ok(reply)); }
private Task AddWordsToUser(AddWordRequest[] pairs, int userId, CancellationToken cancellationToken) { AddWordsRequest addRequestData = new AddWordsRequest(); addRequestData.Words.AddRange(pairs); var addWordsRequest = new AuthReq <AddWordsRequest, AddWordsReply>(addRequestData) { UserId = userId }; return(addWords.Handle(addWordsRequest, cancellationToken)); }
public override async Task <AddWordsReply> HandleRequest(AuthReq <UpdateWordsRequest, AddWordsReply> request, CancellationToken cancellationToken = default) { if (request == null) { throw new ArgumentNullException(nameof(request)); } var userId = request.UserId; var requestData = request.Value; DeleteWordsRequest deleteRequestData = new DeleteWordsRequest(); deleteRequestData.Delete.AddRange(requestData.Update.Select(d => d.Delete)); AddWordsRequest addRequestData = new AddWordsRequest(); addRequestData.Words.AddRange(requestData.Update.Select(d => new AddWordRequest() { LocalId = d.LocalId, WordForeign = d.WordForeign, WordNative = d.WordNative })); var addWordsRequest = new AuthReq <AddWordsRequest, AddWordsReply>(addRequestData) { UserId = userId }; var deleteRequest = new AuthReq <DeleteWordsRequest, Empty>(deleteRequestData) { UserId = userId }; var addTask = await addWords.Handle(addWordsRequest, cancellationToken).ConfigureAwait(false); var deleteTask = await deleteWords.Handle(deleteRequest, cancellationToken).ConfigureAwait(false); return(addTask); }
public async void AddUserWordPair() { // arrange int userId = 1; int otherId = 2; await using InWordsDataContext context = InWordsDataContextFactory.Create(); await context.AddAccount(userId); await context.AddAccount(otherId); await context.SaveChangesAsync(); AddWordsRequest addWordsRequest = new AddWordsRequest(); addWordsRequest.Words.Add(new AddWordRequest() { LocalId = 0, WordForeign = "0", WordNative = "0-0" }); addWordsRequest.Words.Add(new AddWordRequest() { LocalId = 2, WordForeign = "2", WordNative = "2-2" }); // act var requestObject = new AuthorizedRequestObject <AddWordsRequest, AddWordsReply>(addWordsRequest) { UserId = userId }; var registration = new AddWords(context); AddWordsReply response = await registration.HandleRequest(requestObject).ConfigureAwait(false); // assert Assert.Equal(4, context.Words.Count()); Assert.Equal(2, context.WordPairs.Count()); Assert.Equal(2, context.UserWordPairs.Count()); CheckPairs(addWordsRequest, response, context, userId); }