Beispiel #1
0
        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);
                }
            }
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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));
        }
Beispiel #4
0
        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);
        }