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)); }
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); }
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); }
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); }