コード例 #1
0
ファイル: MessageHub.cs プロジェクト: kriskok95/SellMe
        public async Task SendMessage(SendMessageInputModel inputModel)
        {
            var messageViewModel = await messagesService.CreateMessageAsync(inputModel.SenderId, inputModel.RecipientId, inputModel.AdId, inputModel.Content);

            await Clients.Users(inputModel.RecipientId)
            .SendAsync("SendMessage", messageViewModel);
        }
コード例 #2
0
        public async Task <ActionResult> Create(MessageCreationBindingModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            await messagesService.CreateMessageAsync(model.Content, model.User);

            return(Ok());
        }
コード例 #3
0
        public async Task CreateMessageAsync_WithValidData_ShouldCreateAMessage()
        {
            //Arrange
            var expected = new MessageDetailsViewModel
            {
                AdTitle = "Iphone 6s",
                Content = "Content for the message",
                Sender  = "Ivan",
                SentOn  = "31/01/2019"
            };

            var moqAdsService   = new Mock <IAdsService>();
            var moqUsersService = new Mock <IUsersService>();

            moqUsersService.Setup(x => x.GetUserByIdAsync("SenderId"))
            .ReturnsAsync(new SellMeUser
            {
                Id       = "SenderId",
                UserName = "******"
            });

            var moqMapper = new Mock <IMapper>();

            moqMapper.Setup(x => x.Map <MessageDetailsViewModel>(It.IsAny <Message>()))
            .Returns(new MessageDetailsViewModel
            {
                AdTitle = "Iphone 6s",
                Content = "Content for the message",
                Sender  = "Ivan",
                SentOn  = "31/01/2019"
            });

            var context = InitializeContext.CreateContextForInMemory();

            messagesService = new MessagesService(context, moqAdsService.Object, moqUsersService.Object, moqMapper.Object);

            var testingAd = CreateTestingAd();
            await context.Ads.AddAsync(testingAd);

            await context.SaveChangesAsync();

            //Act and assert
            var actual = await messagesService.CreateMessageAsync("SenderId", "RecipientId",
                                                                  1, "Content for the message");

            Assert.Equal(expected.AdTitle, actual.AdTitle);
            Assert.Equal(expected.Content, actual.Content);
            Assert.Equal(expected.Sender, actual.Sender);
            Assert.Equal(expected.SentOn, actual.SentOn);
        }
コード例 #4
0
        public async Task CreateMessageAsync_WithInvalidAdId_ShouldThrowAnArgumentException()
        {
            //Arrange
            var expectedErrorMessage = "Ad with the given id doesn't exist!";

            var moqAdsService   = new Mock <IAdsService>();
            var moqUsersService = new Mock <IUsersService>();
            var moqIMapper      = new Mock <IMapper>();
            var context         = InitializeContext.CreateContextForInMemory();

            messagesService = new MessagesService(context, moqAdsService.Object, moqUsersService.Object, moqIMapper.Object);

            //Act and assert
            var ex = await Assert.ThrowsAsync <ArgumentException>(() =>
                                                                  messagesService.CreateMessageAsync(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 1, Guid.NewGuid().ToString()));

            Assert.Equal(expectedErrorMessage, ex.Message);
        }
コード例 #5
0
        public async Task <IActionResult> Send(SendMessageInputModel inputModel)
        {
            if (!ModelState.IsValid)
            {
                var sendMessageBindingModel =
                    await messagesService.GetMessageBindingModelByAdIdAsync(inputModel.AdId);

                sendMessageBindingModel.InputModel = inputModel;

                return(View(sendMessageBindingModel));
            }

            var messageViewModel = await messagesService.CreateMessageAsync(inputModel.SenderId, inputModel.RecipientId,
                                                                            inputModel.AdId, inputModel.Content);

            var unreadMessagesCount = await messagesService.GetUnreadMessagesCountAsync(inputModel.RecipientId);

            await hubContext.Clients.User(inputModel.RecipientId).SendAsync("MessageCount", unreadMessagesCount);

            await hubContext.Clients.User(inputModel.RecipientId)
            .SendAsync("SendMessage", messageViewModel);

            return(RedirectToAction("Details", new{ adId = inputModel.AdId, senderId = inputModel.SenderId, recipientId = inputModel.RecipientId }));
        }