예제 #1
0
        public async void DeleteUserWordPairs_ShouldBeOk()
        {
            // arrange
            int userId  = 1;
            int otherId = 2;

            await using InWordsDataContext context = InWordsDataContextFactory.Create();
            await context.AddAccount(userId);

            await context.AddAccount(otherId);

            await context.SaveChangesAsync();

            context.Add(new UserWordPair()
            {
                UserWordPairId = 1,
                ForeignWord    = "Test1",
                NativeWord     = "Тест1",
                UserId         = userId
            });;
            context.Add(new UserWordPair()
            {
                UserWordPairId = 2,
                ForeignWord    = "Test2",
                NativeWord     = "Тест2",
                UserId         = userId
            });
            context.Add(new UserWordPair()
            {
                UserWordPairId = 3,
                ForeignWord    = "Test3",
                NativeWord     = "Тест3",
                UserId         = userId
            });

            await context.SaveChangesAsync();

            DeleteWordsRequest deletewordsRequets = new DeleteWordsRequest();

            deletewordsRequets.Delete.AddRange(new int[] { 1, 3 });

            // act
            var requestObject = new AuthReq <DeleteWordsRequest, Empty>(deletewordsRequets)
            {
                UserId = userId
            };

            var   deleteWords = new DeleteWords(context);
            Empty response    = await deleteWords.HandleRequest(requestObject).ConfigureAwait(false);

            // assert
            Assert.Equal(1, context.UserWordPairs.Count());
            Assert.Equal("Тест2", context.UserWordPairs.First().NativeWord);
        }
예제 #2
0
        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);
        }