コード例 #1
0
        public async Task ShouldGetRelativePathFromTextBufferInfoIfPresent()
        {
            var session        = CreateSession();
            var bufferInfo     = new PullRequestTextBufferInfo(session, RelativePath, "123", DiffSide.Right);
            var sessionManager = CreateSessionManager(
                relativePath: "ShouldNotUseThis",
                session: session,
                textBufferInfo: bufferInfo);

            // There is an existing comment thread at line 10.
            var target = new InlineCommentPeekViewModel(
                CreatePeekService(lineNumber: 10),
                CreatePeekSession(),
                sessionManager,
                Substitute.For <INextInlineCommentCommand>(),
                Substitute.For <IPreviousInlineCommentCommand>(),
                CreateFactory());

            await target.Initialize();

            // There should be an existing comment and a reply placeholder.
            Assert.That(target.Thread.IsNewThread, Is.False);
            Assert.That(target.Thread.Comments.Count, Is.EqualTo(2));
            Assert.That(target.Thread.Comments[0].Body, Is.EqualTo("Existing comment"));
            Assert.That(target.Thread.Comments[1].Body, Is.EqualTo(null));
            Assert.That(target.Thread.Comments[1].EditState, Is.EqualTo(CommentEditState.Placeholder));
        }
コード例 #2
0
            static IPullRequestSessionManager CreateSessionManager(
                IPullRequestSessionFile file,
                DiffSide side)
            {
                var session = Substitute.For <IPullRequestSession>();

                session.GetFile("file.cs").Returns(file);

                var info   = new PullRequestTextBufferInfo(session, "file.cs", side);
                var result = Substitute.For <IPullRequestSessionManager>();

                result.GetTextBufferInfo(null).ReturnsForAnyArgs(info);
                return(result);
            }
コード例 #3
0
        IPullRequestSessionManager CreateSessionManager(
            string commitSha            = "COMMIT",
            string relativePath         = RelativePath,
            IPullRequestSession session = null,
            PullRequestTextBufferInfo textBufferInfo = null)
        {
            var thread = CreateThread(10, "Existing comment");

            var diff = new DiffChunk
            {
                DiffLine      = 10,
                OldLineNumber = 1,
                NewLineNumber = 1,
            };

            for (var i = 0; i < 10; ++i)
            {
                diff.Lines.Add(new DiffLine
                {
                    NewLineNumber  = i,
                    DiffLineNumber = i + 10,
                    Type           = i < 5 ? DiffChangeType.Delete : DiffChangeType.Add,
                });
            }

            var file = Substitute.For <IPullRequestSessionFile>();

            file.CommitSha.Returns(commitSha);
            file.Diff.Returns(new[] { diff });
            file.InlineCommentThreads.Returns(new[] { thread });
            file.LinesChanged.Returns(new Subject <IReadOnlyList <Tuple <int, DiffSide> > >());

            session = session ?? CreateSession();

            if (textBufferInfo != null)
            {
                session.GetFile(textBufferInfo.RelativePath, textBufferInfo.CommitSha).Returns(file);
            }

            var result = Substitute.For <IPullRequestSessionManager>();

            result.CurrentSession.Returns(session);
            result.GetLiveFile(relativePath, Arg.Any <ITextView>(), Arg.Any <ITextBuffer>()).Returns(file);
            result.GetRelativePath(Arg.Any <ITextBuffer>()).Returns(relativePath);
            result.GetTextBufferInfo(Arg.Any <ITextBuffer>()).Returns(textBufferInfo);

            return(result);
        }
コード例 #4
0
            static IPullRequestSessionManager CreateSessionManager(
                IPullRequestSessionFile file,
                DiffSide side,
                string bufferInfoCommitSha = "HEAD")
            {
                var session = Substitute.For <IPullRequestSession>();

                session.GetFile("file.cs", bufferInfoCommitSha).Returns(file);

                var info   = new PullRequestTextBufferInfo(session, "file.cs", bufferInfoCommitSha, side);
                var result = Substitute.For <IPullRequestSessionManager>();

                result.CurrentSession.Returns(session);
                result.GetTextBufferInfo(null).ReturnsForAnyArgs(info);
                return(result);
            }