Skip to content
This repository was archived by the owner on Jun 21, 2023. It is now read-only.

Commit 6efaefe

Browse files
committed
Added PullRequestReviewViewModel tests.
1 parent 6f783d2 commit 6efaefe

File tree

2 files changed

+160
-0
lines changed

2 files changed

+160
-0
lines changed
Lines changed: 158 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,158 @@
1+
using System;
2+
using System.Linq;
3+
using GitHub.Models;
4+
using GitHub.Services;
5+
using GitHub.ViewModels.GitHubPane;
6+
using NSubstitute;
7+
using NUnit.Framework;
8+
9+
namespace UnitTests.GitHub.App.ViewModels.GitHubPane
10+
{
11+
public class PullRequestReviewViewModelTests
12+
{
13+
[Test]
14+
public void Empty_Body_Is_Exposed_As_Null()
15+
{
16+
var pr = CreatePullRequest();
17+
((PullRequestReviewModel)pr.Reviews[0]).Body = string.Empty;
18+
19+
var target = CreateTarget(pullRequest: pr);
20+
21+
Assert.That(target.Body, Is.Null);
22+
}
23+
24+
[Test]
25+
public void Creates_FileComments_And_OutdatedComments()
26+
{
27+
var pr = CreatePullRequest();
28+
((PullRequestReviewModel)pr.Reviews[0]).Body = string.Empty;
29+
30+
var target = CreateTarget(pullRequest: pr);
31+
32+
Assert.That(target.FileComments, Has.Count.EqualTo(2));
33+
Assert.That(target.OutdatedFileComments, Has.Count.EqualTo(1));
34+
}
35+
36+
[Test]
37+
public void HasDetails_True_When_Has_Body()
38+
{
39+
var pr = CreatePullRequest();
40+
pr.ReviewComments = new IPullRequestReviewCommentModel[0];
41+
42+
var target = CreateTarget(pullRequest: pr);
43+
44+
Assert.That(target.HasDetails, Is.True);
45+
}
46+
47+
[Test]
48+
public void HasDetails_True_When_Has_Comments()
49+
{
50+
var pr = CreatePullRequest();
51+
((PullRequestReviewModel)pr.Reviews[0]).Body = string.Empty;
52+
53+
var target = CreateTarget(pullRequest: pr);
54+
55+
Assert.That(target.HasDetails, Is.True);
56+
}
57+
58+
[Test]
59+
public void HasDetails_False_When_Has_No_Body_Or_Comments()
60+
{
61+
var pr = CreatePullRequest();
62+
((PullRequestReviewModel)pr.Reviews[0]).Body = string.Empty;
63+
pr.ReviewComments = new IPullRequestReviewCommentModel[0];
64+
65+
var target = CreateTarget(pullRequest: pr);
66+
67+
Assert.That(target.HasDetails, Is.False);
68+
}
69+
70+
PullRequestReviewViewModel CreateTarget(
71+
IPullRequestEditorService editorService = null,
72+
IPullRequestSession session = null,
73+
IPullRequestModel pullRequest = null,
74+
IPullRequestReviewModel model = null)
75+
{
76+
editorService = editorService ?? Substitute.For<IPullRequestEditorService>();
77+
session = session ?? Substitute.For<IPullRequestSession>();
78+
pullRequest = pullRequest ?? CreatePullRequest();
79+
model = model ?? pullRequest.Reviews[0];
80+
81+
return new PullRequestReviewViewModel(
82+
editorService,
83+
session,
84+
pullRequest,
85+
model);
86+
}
87+
88+
private PullRequestModel CreatePullRequest(
89+
int number = 5,
90+
string title = "Pull Request Title",
91+
string body = "Pull Request Body",
92+
IAccount author = null,
93+
DateTimeOffset? createdAt = null)
94+
{
95+
author = author ?? Substitute.For<IAccount>();
96+
createdAt = createdAt ?? DateTimeOffset.Now;
97+
98+
return new PullRequestModel(number, title, author, createdAt.Value)
99+
{
100+
Body = body,
101+
Reviews = new[]
102+
{
103+
new PullRequestReviewModel
104+
{
105+
Id = 1,
106+
Body = "Looks good to me!",
107+
State = PullRequestReviewState.Approved,
108+
},
109+
new PullRequestReviewModel
110+
{
111+
Id = 2,
112+
Body = "Changes please.",
113+
State = PullRequestReviewState.ChangesRequested,
114+
},
115+
},
116+
ReviewComments = new[]
117+
{
118+
new PullRequestReviewCommentModel
119+
{
120+
Body = "I like this.",
121+
PullRequestReviewId = 1,
122+
Position = 10,
123+
},
124+
new PullRequestReviewCommentModel
125+
{
126+
Body = "This is good.",
127+
PullRequestReviewId = 1,
128+
Position = 11,
129+
},
130+
new PullRequestReviewCommentModel
131+
{
132+
Body = "Fine, but outdated.",
133+
PullRequestReviewId = 1,
134+
Position = null,
135+
},
136+
new PullRequestReviewCommentModel
137+
{
138+
Body = "Not great.",
139+
PullRequestReviewId = 2,
140+
Position = 20,
141+
},
142+
new PullRequestReviewCommentModel
143+
{
144+
Body = "This sucks.",
145+
PullRequestReviewId = 2,
146+
Position = 21,
147+
},
148+
new PullRequestReviewCommentModel
149+
{
150+
Body = "Bad and old.",
151+
PullRequestReviewId = 2,
152+
Position = null,
153+
},
154+
}
155+
};
156+
}
157+
}
158+
}

test/UnitTests/UnitTests.csproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,8 @@
257257
<Compile Include="GitHub.App\Services\AvatarProviderTests.cs" />
258258
<Compile Include="GitHub.App\Services\GitClientTests.cs" />
259259
<Compile Include="GitHub.App\ViewModels\GitHubPane\PullRequestFilesViewModelTests.cs" />
260+
<Compile Include="GitHub.App\ViewModels\GitHubPane\PullRequestReviewViewModelTests.cs" />
261+
<Compile Include="GitHub.App\ViewModels\GitHubPane\PullRequestUserReviewsViewModelTests.cs" />
260262
<Compile Include="GitHub.Exports.Reactive\Services\PullRequestEditorServiceTests.cs" />
261263
<Compile Include="GitHub.App\Services\OAuthCallbackListenerTests.cs" />
262264
<Compile Include="GitHub.App\Services\PullRequestServiceTests.cs" />

0 commit comments

Comments
 (0)