Skip to content

Commit 0dde3e0

Browse files
committed
Merge branch 'release/0.3.0'
2 parents 08ef159 + af959b7 commit 0dde3e0

File tree

9 files changed

+139
-5
lines changed

9 files changed

+139
-5
lines changed

nuspec/nuget/Cake.Tfs.nuspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
<repository type="git" url="https://github.com/cake-contrib/Cake.Tfs"/>
1818
<copyright>Copyright © Pascal Berger</copyright>
1919
<tags>Cake Script Team-Foundation-Server TFS Azure-DevOps</tags>
20-
<releaseNotes>https://github.com/cake-contrib/Cake.Tfs/releases/tag/0.2.7</releaseNotes>
20+
<releaseNotes>https://github.com/cake-contrib/Cake.Tfs/releases/tag/0.3.0</releaseNotes>
2121
</metadata>
2222
<files>
2323
<file src="net461\Cake.Tfs.dll" target="lib\net461" />

src/Cake.Tfs.Tests/Cake.Tfs.Tests.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515

1616
<ItemGroup>
1717
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.0.1" />
18-
<PackageReference Include="Cake.Core" Version="0.28.0" />
19-
<PackageReference Include="Cake.Testing" Version="0.28.0" />
18+
<PackageReference Include="Cake.Core" Version="0.33.0" />
19+
<PackageReference Include="Cake.Testing" Version="0.33.0" />
2020
<PackageReference Include="Moq" Version="4.10.1" />
2121
<PackageReference Include="Shouldly" Version="3.0.2" />
2222
<PackageReference Include="StyleCop.Analyzers" Version="1.0.2" />

src/Cake.Tfs.Tests/PullRequest/Fakes/FakeAllSetGitClientFactory.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ public override GitHttpClient CreateGitClient(Uri collectionUrl, ITfsCredentials
1818
.ReturnsAsync((string project1, string repoId1, int prId, int i1, int i2, int i3, bool b1, bool b2, object o1, CancellationToken c1) => new GitPullRequest
1919
{
2020
PullRequestId = prId,
21+
Status = PullRequestStatus.Active,
2122
Repository = new GitRepository
2223
{
2324
Id = Guid.NewGuid(),
@@ -45,6 +46,7 @@ public override GitHttpClient CreateGitClient(Uri collectionUrl, ITfsCredentials
4546
new GitPullRequest
4647
{
4748
PullRequestId = 777,
49+
Status = PullRequestStatus.Active,
4850
Repository = new GitRepository
4951
{
5052
Id = Guid.NewGuid(),
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
namespace Cake.Tfs.Tests.PullRequest
2+
{
3+
using Cake.Tfs.PullRequest;
4+
using Microsoft.TeamFoundation.SourceControl.WebApi;
5+
using Shouldly;
6+
using Xunit;
7+
8+
public sealed class PullRequestStatusExtensionsTests
9+
{
10+
public sealed class TheToTfsPullRequestState
11+
{
12+
[Theory]
13+
[InlineData(PullRequestStatus.NotSet, TfsPullRequestState.NotSet)]
14+
[InlineData(PullRequestStatus.Active, TfsPullRequestState.Active)]
15+
[InlineData(PullRequestStatus.Completed, TfsPullRequestState.Completed)]
16+
[InlineData(PullRequestStatus.Abandoned, TfsPullRequestState.Abandoned)]
17+
public void Should_Return_Correct_Value(PullRequestStatus state, TfsPullRequestState expectedResult)
18+
{
19+
// Given
20+
21+
// When
22+
var result = state.ToTfsPullRequestState();
23+
24+
// Then
25+
result.ShouldBe(expectedResult);
26+
}
27+
28+
[Theory]
29+
[InlineData(PullRequestStatus.All)]
30+
public void Should_Throw_If_Invalid_Value_Is_Passed(PullRequestStatus state)
31+
{
32+
// Given
33+
34+
// When
35+
var result =
36+
Record.Exception(() => state.ToTfsPullRequestState());
37+
38+
// Then
39+
result.IsArgumentOutOfRangeException("state");
40+
}
41+
}
42+
}
43+
}

src/Cake.Tfs.Tests/PullRequest/TfsPullRequestTests.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@ public void Should_Return_Valid_Tfs_Pull_Request_By_Id()
123123
pullRequest.ShouldNotBe(null);
124124
pullRequest.HasPullRequestLoaded.ShouldBe(true);
125125
pullRequest.PullRequestId.ShouldBe(42);
126+
pullRequest.PullRequestStatus.ShouldBe(TfsPullRequestState.Active);
126127
pullRequest.RepositoryName.ShouldBe("MyRepoName");
127128
pullRequest.CollectionName.ShouldBe("MyCollection");
128129
pullRequest.CodeReviewId.ShouldBe(123);
@@ -146,6 +147,7 @@ public void Should_Return_Valid_Azure_DevOps_Pull_Request_By_Id()
146147
pullRequest.ShouldNotBe(null);
147148
pullRequest.HasPullRequestLoaded.ShouldBe(true);
148149
pullRequest.PullRequestId.ShouldBe(16);
150+
pullRequest.PullRequestStatus.ShouldBe(TfsPullRequestState.Active);
149151
pullRequest.RepositoryName.ShouldBe("MyRepoName");
150152
pullRequest.CollectionName.ShouldBe("DefaultCollection");
151153
pullRequest.CodeReviewId.ShouldBe(123);
@@ -169,6 +171,7 @@ public void Should_Return_Valid_Tfs_Pull_Request_By_Source_Branch()
169171
pullRequest.ShouldNotBe(null);
170172
pullRequest.HasPullRequestLoaded.ShouldBe(true);
171173
pullRequest.PullRequestId.ShouldBe(777);
174+
pullRequest.PullRequestStatus.ShouldBe(TfsPullRequestState.Active);
172175
pullRequest.RepositoryName.ShouldBe("MyRepoName");
173176
pullRequest.CollectionName.ShouldBe("MyCollection");
174177
pullRequest.CodeReviewId.ShouldBe(123);
@@ -192,6 +195,7 @@ public void Should_Return_Valid_Azure_DevOps_Pull_Request_By_Source_Branch()
192195
pullRequest.ShouldNotBe(null);
193196
pullRequest.HasPullRequestLoaded.ShouldBe(true);
194197
pullRequest.PullRequestId.ShouldBe(777);
198+
pullRequest.PullRequestStatus.ShouldBe(TfsPullRequestState.Active);
195199
pullRequest.RepositoryName.ShouldBe("MyRepoName");
196200
pullRequest.CollectionName.ShouldBe("DefaultCollection");
197201
pullRequest.CodeReviewId.ShouldBe(123);
@@ -223,6 +227,7 @@ public void Should_Return_Null_Tfs_Pull_Request_By_Id()
223227
pullRequest.CollectionName.ShouldBe("MyCollection");
224228
pullRequest.ProjectName.ShouldBe("MyTeamProject");
225229
pullRequest.PullRequestId.ShouldBe(0);
230+
pullRequest.PullRequestStatus.ShouldBe(TfsPullRequestState.NotSet);
226231
pullRequest.CodeReviewId.ShouldBe(0);
227232
pullRequest.SourceRefName.ShouldBeEmpty();
228233
pullRequest.TargetRefName.ShouldBeEmpty();
@@ -251,6 +256,7 @@ public void Should_Return_Null_Azure_DevOps_Pull_Request_By_Id()
251256
pullRequest.CollectionName.ShouldBe("DefaultCollection");
252257
pullRequest.ProjectName.ShouldBe("MyProject");
253258
pullRequest.PullRequestId.ShouldBe(0);
259+
pullRequest.PullRequestStatus.ShouldBe(TfsPullRequestState.NotSet);
254260
pullRequest.CodeReviewId.ShouldBe(0);
255261
pullRequest.SourceRefName.ShouldBeEmpty();
256262
pullRequest.TargetRefName.ShouldBeEmpty();
@@ -279,6 +285,7 @@ public void Should_Return_Null_Tfs_Pull_Request_By_Branch()
279285
pullRequest.CollectionName.ShouldBe("MyCollection");
280286
pullRequest.ProjectName.ShouldBe("MyTeamProject");
281287
pullRequest.PullRequestId.ShouldBe(0);
288+
pullRequest.PullRequestStatus.ShouldBe(TfsPullRequestState.NotSet);
282289
pullRequest.CodeReviewId.ShouldBe(0);
283290
pullRequest.SourceRefName.ShouldBeEmpty();
284291
pullRequest.TargetRefName.ShouldBeEmpty();
@@ -307,6 +314,7 @@ public void Should_Return_Null_Azure_DevOps_Pull_Request_By_Branch()
307314
pullRequest.CollectionName.ShouldBe("DefaultCollection");
308315
pullRequest.ProjectName.ShouldBe("MyProject");
309316
pullRequest.PullRequestId.ShouldBe(0);
317+
pullRequest.PullRequestStatus.ShouldBe(TfsPullRequestState.NotSet);
310318
pullRequest.CodeReviewId.ShouldBe(0);
311319
pullRequest.SourceRefName.ShouldBeEmpty();
312320
pullRequest.TargetRefName.ShouldBeEmpty();

src/Cake.Tfs/Cake.Tfs.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
</PropertyGroup>
2323

2424
<ItemGroup>
25-
<PackageReference Include="Cake.Core" Version="0.28.0" />
25+
<PackageReference Include="Cake.Core" Version="0.33.0" />
2626
<PackageReference Include="Costura.Fody" Version="3.3.3" />
2727
<PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers" Version="2.9.1" />
2828
<PackageReference Include="Microsoft.TeamFoundationServer.Client" Version="15.131.1" />
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
namespace Cake.Tfs.PullRequest
2+
{
3+
using System;
4+
using Microsoft.TeamFoundation.SourceControl.WebApi;
5+
6+
/// <summary>
7+
/// Extensions for the <see cref="PullRequestStatus"/> class.
8+
/// </summary>
9+
internal static class PullRequestStatusExtensions
10+
{
11+
/// <summary>
12+
/// Converts a <see cref="PullRequestStatus"/> to a <see cref="TfsPullRequestState"/>.
13+
/// </summary>
14+
/// <param name="state">State to convert.</param>
15+
/// <returns>Converted state.</returns>
16+
public static TfsPullRequestState ToTfsPullRequestState(this PullRequestStatus state)
17+
{
18+
switch (state)
19+
{
20+
case PullRequestStatus.NotSet:
21+
return TfsPullRequestState.NotSet;
22+
case PullRequestStatus.Active:
23+
return TfsPullRequestState.Active;
24+
case PullRequestStatus.Abandoned:
25+
return TfsPullRequestState.Abandoned;
26+
case PullRequestStatus.Completed:
27+
return TfsPullRequestState.Completed;
28+
default:
29+
throw new ArgumentOutOfRangeException(nameof(state));
30+
}
31+
}
32+
}
33+
}

src/Cake.Tfs/PullRequest/TfsPullRequest.cs

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ public TfsPullRequest(ICakeLog log, TfsPullRequestSettings settings, IGitClientF
8888
var pullRequestSearchCriteria =
8989
new GitPullRequestSearchCriteria()
9090
{
91-
Status = PullRequestStatus.Active,
91+
Status = Microsoft.TeamFoundation.SourceControl.WebApi.PullRequestStatus.Active,
9292
SourceRefName = settings.SourceRefName
9393
};
9494

@@ -197,6 +197,26 @@ public int PullRequestId
197197
}
198198
}
199199

200+
/// <summary>
201+
/// Gets the status of the pull request.
202+
/// Returns <see cref="TfsPullRequestState.NotSet"/> if no pull request could be found and
203+
/// <see cref="TfsPullRequestSettings.ThrowExceptionIfPullRequestCouldNotBeFound"/> is set to <c>false</c>.
204+
/// </summary>
205+
/// <exception cref="TfsPullRequestNotFoundException">If pull request could not be found and
206+
/// <see cref="TfsPullRequestSettings.ThrowExceptionIfPullRequestCouldNotBeFound"/> is set to <c>true</c>.</exception>
207+
public TfsPullRequestState PullRequestStatus
208+
{
209+
get
210+
{
211+
if (!this.ValidatePullRequest())
212+
{
213+
return TfsPullRequestState.NotSet;
214+
}
215+
216+
return this.pullRequest.Status.ToTfsPullRequestState();
217+
}
218+
}
219+
200220
/// <summary>
201221
/// Gets the ID of the code review.
202222
/// Returns 0 if no pull request could be found and
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
namespace Cake.Tfs.PullRequest
2+
{
3+
/// <summary>
4+
/// Possible states of a pull request.
5+
/// </summary>
6+
public enum TfsPullRequestState : byte
7+
{
8+
/// <summary>
9+
/// Status is not set.
10+
/// </summary>
11+
NotSet,
12+
13+
/// <summary>
14+
/// Pull request is active.
15+
/// </summary>
16+
Active,
17+
18+
/// <summary>
19+
/// Pull request is abandoned.
20+
/// </summary>
21+
Abandoned,
22+
23+
/// <summary>
24+
/// Pull request is completed.
25+
/// </summary>
26+
Completed
27+
}
28+
}

0 commit comments

Comments
 (0)