Example #1
0
 public PullRequestReviewCacheItem(IPullRequestReviewModel review)
 {
     Id     = review.Id;
     NodeId = review.NodeId;
     User   = new AccountCacheItem
     {
         Login     = review.User.Login,
         AvatarUrl = review.User.AvatarUrl,
     };
     Body        = review.Body;
     State       = review.State;
     SubmittedAt = review.SubmittedAt;
 }
Example #2
0
        PullRequestReviewViewModel CreateTarget(
            IPullRequestEditorService editorService = null,
            IPullRequestSession session             = null,
            IPullRequestModel pullRequest           = null,
            IPullRequestReviewModel model           = null)
        {
            editorService = editorService ?? Substitute.For <IPullRequestEditorService>();
            session       = session ?? Substitute.For <IPullRequestSession>();
            pullRequest   = pullRequest ?? CreatePullRequest();
            model         = model ?? pullRequest.Reviews[0];

            return(new PullRequestReviewViewModel(
                       editorService,
                       session,
                       pullRequest,
                       model));
        }
Example #3
0
        /// <summary>
        /// Initializes a new instance of the <see cref="PullRequestReviewViewModel"/> class.
        /// </summary>
        /// <param name="editorService">The pull request editor service.</param>
        /// <param name="session">The pull request session.</param>
        /// <param name="pullRequest">The pull request model.</param>
        /// <param name="model">The pull request review model.</param>
        public PullRequestReviewViewModel(
            IPullRequestEditorService editorService,
            IPullRequestSession session,
            IPullRequestModel pullRequest,
            IPullRequestReviewModel model)
        {
            Guard.ArgumentNotNull(editorService, nameof(editorService));
            Guard.ArgumentNotNull(session, nameof(session));
            Guard.ArgumentNotNull(model, nameof(model));

            Model        = model;
            Body         = string.IsNullOrWhiteSpace(Model.Body) ? null : Model.Body;
            StateDisplay = ToString(Model.State);

            var comments = new List <IPullRequestReviewFileCommentViewModel>();
            var outdated = new List <IPullRequestReviewFileCommentViewModel>();

            foreach (var comment in pullRequest.ReviewComments)
            {
                if (comment.PullRequestReviewId == model.Id)
                {
                    var vm = new PullRequestReviewFileCommentViewModel(
                        editorService,
                        session,
                        comment);

                    if (comment.Position.HasValue)
                    {
                        comments.Add(vm);
                    }
                    else
                    {
                        outdated.Add(vm);
                    }
                }
            }

            FileComments         = comments;
            OutdatedFileComments = outdated;

            HasDetails = Body != null ||
                         FileComments.Count > 0 ||
                         OutdatedFileComments.Count > 0;
        }
Example #4
0
        async Task AddReview(IPullRequestReviewModel review)
        {
            PullRequest.Reviews = PullRequest.Reviews
                                  .Where(x => x.NodeId != review.NodeId)
                                  .Concat(new[] { review })
                                  .ToList();

            if (review.State != PullRequestReviewState.Pending)
            {
                foreach (var comment in PullRequest.ReviewComments)
                {
                    if (comment.PullRequestReviewId == review.Id)
                    {
                        comment.IsPending = false;
                    }
                }
            }

            await Update(PullRequest);
        }