public async Task GivenValidRequestWithReactionType_ShouldUpdateMessage() { var client = await _factory.GetAuthenticatedClientAsync(); // init DB for test var context = _factory.InitializeDbForTests(); var messageId = Guid.Parse("b73477a4-f61d-46fa-873c-7d71c01dfbdf"); UpdateMessageChatCommand command = new UpdateMessageChatCommand() { MessageId = Guid.Parse("b73477a4-f61d-46fa-873c-7d71c01dfbdf"), ReactionType = "+1", }; // reactionType ['+1', 'grinning', 'white_frowning_face', 'angry', 'astonished']; var content = IntegrationTestHelper.GetRequestContent(command); var response = await client.PutAsync($"/api/Messages/{messageId}", content); response.EnsureSuccessStatusCode(); response.StatusCode.ShouldBe(HttpStatusCode.OK); // release DB _factory.DisposeDbForTests(context); }
public async Task <ActionResult> Update(string messageId, UpdateMessageChatCommand command) { if (!messageId.Equals(command.MessageId.ToString())) { return(BadRequest()); } await Mediator.Send(command); return(Ok()); }
public void Validate_ValidCommand_ShouldBeTrue() { var command = new UpdateMessageChatCommand { MessageId = Guid.NewGuid(), }; var validator = new UpdateMessageChatCommandValidator(); var result = validator.Validate(command); result.IsValid.ShouldBe(true); }
public void Validate_ConversationIdEmpty_ShouldBeFalse() { var command = new UpdateMessageChatCommand { MessageId = Guid.Empty, }; var validator = new UpdateMessageChatCommandValidator(); var result = validator.Validate(command); result.IsValid.ShouldBe(false); }
public async Task Handle_GivenInvalidMessageId_ThrowsNotFoundException() { // Login user is Reactor _sut = SetLoginUser(reactor); var invalidTaskId = Guid.NewGuid(); var command = new UpdateMessageChatCommand { MessageId = invalidTaskId }; await Assert.ThrowsAsync <NotFoundException>(() => _sut.Handle(command, CancellationToken.None)); }
public async Task GivenValidRequest_ReturnsSuccessCode() { var client = await _factory.GetAuthenticatedClientAsync(); var command = new UpdateMessageChatCommand { MessageId = new Guid("B73477A4-F61D-46FA-873C-7D71C01DFBDF"), ReactionType = "Like" }; var content = IntegrationTestHelper.GetRequestContent(command); var response = await client.PutAsync($"/api/MessageChat/{command.MessageId.ToString()}", content); response.EnsureSuccessStatusCode(); }
public async Task Handle_GivenValidMessageIdAndIsPinHasValue_UpdateSuccess() { // Login user is Reactor _sut = SetLoginUser(reactor); var command = new UpdateMessageChatCommand { MessageId = messageHasOneReactionId, IsPin = true }; await _sut.Handle(command, CancellationToken.None); var message = await _context.MessageChats.FindAsync(messageHasOneReactionId); message.IsPin.ShouldBeTrue(); }
public async Task Handle_GivenValidMessageIdAndReactionTypeAndIsDeleteReactionIsTrue_NotRemoveReactionSuccess() { // Login user is not reactor _sut = SetLoginUser(reactor); var command = new UpdateMessageChatCommand { MessageId = messageHasOneReactionId, ReactionType = "Angry", }; await _sut.Handle(command, CancellationToken.None); var message = await _context.MessageChats.FindAsync(messageHasOneReactionId); message.ReactionList.Count.ShouldBe(1); message.IsPin.ShouldBeFalse(); }
public async Task GivenInvalidRequest_ShouldRaiseBadRequest() { var client = await _factory.GetAuthenticatedClientAsync(); // init DB for test var context = _factory.InitializeDbForTests(); var messageId = Guid.Parse("B73477A4-F61D-46FA-873C-7D71C01DFBDF"); UpdateMessageChatCommand command = new UpdateMessageChatCommand() { MessageId = Guid.Parse("B73477A4-F61D-46FA-873C-7D71C01DFBD1"), IsPin = true, }; var content = IntegrationTestHelper.GetRequestContent(command); var response = await client.PutAsync($"/api/Messages/{messageId}", content); response.StatusCode.ShouldBe(HttpStatusCode.BadRequest); // release DB _factory.DisposeDbForTests(context); }
public async Task GivenValidRequestWithIsPin_ShouldUpdateMessage() { var client = await _factory.GetAuthenticatedClientAsync(); // init DB for test var context = _factory.InitializeDbForTests(); var messageId = Guid.Parse("b73477a4-f61d-46fa-873c-7d71c01dfbdf"); UpdateMessageChatCommand command = new UpdateMessageChatCommand() { MessageId = Guid.Parse("b73477a4-f61d-46fa-873c-7d71c01dfbdf"), IsPin = true, }; var content = IntegrationTestHelper.GetRequestContent(command); var response = await client.PutAsync($"/api/Messages/{messageId}", content); response.EnsureSuccessStatusCode(); response.StatusCode.ShouldBe(HttpStatusCode.OK); // release DB _factory.DisposeDbForTests(context); }
public async Task <ActionResult> Update(string messageId, UpdateMessageChatCommand command) { if (!messageId.Equals(command.MessageId.ToString())) { return(BadRequest()); } var updateType = await Mediator.Send(command); // query message chat var messageChat = await Mediator.Send(new GetMessageChatByIdQuery { MessageChatId = new Guid(messageId) }); // query other members of the conversation var conversation = await Mediator.Send(new GetConversationQuery { ConversationId = messageChat.ConversationId.ToString() }); // create Notification if (messageChat.ReactionList.Count > 0 && updateType == "addReaction" && messageChat.CreatedBy != _currentUserService.UserId) { messageChat.TeamId = conversation.TeamId; await CreateNotification(messageChat, messageChat.Id, "Reaction", conversation.Members.Where(u => u.UserId.ToString() == messageChat.CreatedBy).ToList()); } // notify to other members of conversation about the new update message chat // Add user to group foreach (UserModel user in conversation.Members) { foreach (var entity in GetConnectionEntitys(user.UserId.ToString())) { await _hubContext.Groups.AddToGroupAsync(entity.RowKey, conversation.Id.ToString()); } } var Connections = GetConnectionIds(_currentUserService.UserId); messageChat.ConversationName = conversation.Name; await _hubContext.Clients.GroupExcept(conversation.Id.ToString(), Connections).SendAsync("ReceiveMessage", messageChat); await _hubContext.Clients.GroupExcept(conversation.Id.ToString(), Connections).SendAsync("NewConversation", new ConversationLastContentModel { Conversation = conversation, LastMessageChatContent = new MessageChatModel { RegUserName = messageChat.RegUserName, Content = messageChat.Content, ConversationId = conversation.Id, Created = messageChat.Created } }); foreach (var entity in GetConnectionEntitys(_currentUserService.UserId)) { await _hubContext.Clients.Client(entity.RowKey).SendAsync("ReceiveMessage", messageChat); } return(Ok()); }