private async Task BacklogItems_Can_Be_Queried_By_Mentioned_Users(string message, string[] mentionedUsers) { // GIVEN 3 users var refUsers = await CreateTestUsers(); // and 2 tickets var ticketRef = await CreateSampleBug(); await CreateSampleBug(); // WHEN adding a new comment var dto = new CommentAddUpdRequest { Message = message }; await _commentCommandService.Create(ticketRef.Id !, dto); await SaveChanges(); // THEN // the ticket can be queried by the mentioned users foreach (var referencedUser in mentionedUsers) { var user = refUsers.Single(u => u.FullName == referencedUser); _currentUser = user; var tickets = await _queryBacklogItemService.GetList(new BacklogItemListGetRequest { MentionsOfTheCurrentUserOnly = true }); Assert.Equal(1, tickets.TotalRecords); } }
private async Task Updated_Comment_Message_Gets_Persisted() { // GIVEN a 'bug' with a comment var ticketRef = await CreateSampleBug(); var commentRef = (await _commentCommandService.Create(ticketRef.Id !, new CommentAddUpdRequest { Message = "Test" })).Value; await SaveChanges(); // WHEN changing the message of the comment var dto = new CommentAddUpdRequest { Message = "Test (Updated)" }; var commentUpdatedRef = await _commentCommandService.Update(ticketRef.Id !, commentRef.CommentId !, dto); await SaveChanges(); // THEN // the operation is successful Assert.True(commentUpdatedRef.IsSuccess); Assert.Equal(commentRef.CommentId, commentUpdatedRef.Value.CommentId); // the comment has the right message var ticket = (await _queryService.GetById(ticketRef.Id !)).Value; Assert.NotNull(ticket); var comment = ticket !.Comments !.Entries.Single(); Assert.Equal("Test (Updated)", comment.Message); }
private CommentAddUpdRequest ConvertToComment(CommentResponse comment, IList <UserReference> userReferences) { var matches = _mentionRegex.Matches(comment.Body); var references = matches.Distinct().Select(m => m.Value).ToArray(); // Replace referred users to random users var body = comment.Body; foreach (var reference in references) { body = body.Replace(reference, userReferences.OrderBy(x => Guid.NewGuid()).First().MentionedName); } var dto = new CommentAddUpdRequest { Message = body }; return(dto); }
public Task <ActionResult <BacklogItemCommentReference> > Update([FromServices] IBacklogItemCommentCommandService service, [FromRoute] string backlogItemId, [FromRoute] string commentId, CommentAddUpdRequest dto) => service.Update(backlogItemId, commentId, dto).ToActionResultOfT();
public async Task <IDomainResult <BacklogItemCommentReference> > Update(string backlogItemId, string commentId, CommentAddUpdRequest dto) { var ticketRes = await GetEntity(backlogItemId); if (!ticketRes.IsSuccess) { return(ticketRes.To <BacklogItemCommentReference>()); } var ticket = ticketRes.Value; var comment = ticket.Comments.SingleOrDefault(c => c.Id == commentId); if (comment == null) { return(DomainResult.NotFound <BacklogItemCommentReference>("Comment not found")); } var currentUser = await _userResolver.GetCurrentUserReference(); if (comment.Author.Id != currentUser.Id.GetShortId()) { return(DomainResult.Failed <BacklogItemCommentReference>("Cannot edit comments of other users")); } var mentionedUsers = await _mentionedUserResolver.GetMentionedUsers(dto.Message); comment.Message = dto.Message; comment.MentionedUserIds = mentionedUsers.Any() ? mentionedUsers : null; comment.LastModified = DateTime.UtcNow; ticket.AddHistoryRecord(currentUser, "Updated a comment"); return(DomainResult.Success(ToLastCommentReference(ticket))); }
public async Task <IDomainResult <BacklogItemCommentReference> > Create(string backlogItemId, CommentAddUpdRequest dto) { var ticketRes = await GetEntity(backlogItemId); if (!ticketRes.IsSuccess) { return(ticketRes.To <BacklogItemCommentReference>()); } var ticket = ticketRes.Value; var mentionedUsers = await _mentionedUserResolver.GetMentionedUsers(dto.Message); var currentUser = await _userResolver.GetCurrentUserReference(); var comment = new Comment { Author = currentUser, Message = dto.Message, MentionedUserIds = mentionedUsers.Any() ? mentionedUsers : null, }; ticket.Comments.Add(comment); ticket.AddHistoryRecord(currentUser, "Added a comment"); return(DomainResult.Success(ToLastCommentReference(ticket))); }