diff --git a/FluentTc.Tests/AcceptanceTests.cs b/FluentTc.Tests/AcceptanceTests.cs index 55d4cb6..136e7aa 100644 --- a/FluentTc.Tests/AcceptanceTests.cs +++ b/FluentTc.Tests/AcceptanceTests.cs @@ -111,6 +111,39 @@ public void GetBuildFullResponse_Id_Build() build.Id.Should().Be(123); } + [Test] + public void GetBuildWithRevisions() + { + // Arrange + var teamCityCaller = CreateTeamCityCaller(); + A.CallTo(() => teamCityCaller.Get("/app/rest/builds/id:123")).Returns(new BuildModel + { + Id = 123, + Status = "SUCCESS", + Revisions = new RevisionsWrapper() + { + Revision = new List + { + new Change + { + VcsBranchName = "refs/head/master" + } + } + } + }); + + var connectedTc = new RemoteTc().Connect(_ => _.AsGuest(), teamCityCaller); + + // Act + var build = connectedTc.GetBuild(123); + + // Assert + build.Id.Should().Be(123); + build.Revisions.Should().NotBeNull(); + build.Revisions.Revision.Count.Should().Be(1); + build.Revisions.Revision.First().VcsBranchName.Should().Be("refs/head/master"); + } + [Test] public void GetBuildFullResponse_TestOccurrences_Build() { diff --git a/FluentTc.Tests/Domain/BuildTests.cs b/FluentTc.Tests/Domain/BuildTests.cs index ccaaf16..4e0dae6 100644 --- a/FluentTc.Tests/Domain/BuildTests.cs +++ b/FluentTc.Tests/Domain/BuildTests.cs @@ -17,7 +17,7 @@ public void SetBuildConfiguration() var build = new Build(1, "2", BuildStatus.Success, new DateTime(), new DateTime(), new DateTime(), null, null, new List(), "", - null, new TestOccurrences { Count = 0 }, BuildState.Finished); + null, new TestOccurrences { Count = 0 }, BuildState.Finished, new RevisionsWrapper()); // Act build.SetBuildConfiguration(new BuildConfiguration {Id = "ConfigId"}); diff --git a/FluentTc/Domain/Build.cs b/FluentTc/Domain/Build.cs index d4f0162..ab0fd16 100644 --- a/FluentTc/Domain/Build.cs +++ b/FluentTc/Domain/Build.cs @@ -19,6 +19,7 @@ public interface IBuild List Changes { get; } string WebUrl { get; } Properties Properties { get; } + RevisionsWrapper Revisions { get; } void SetChanges(List changes); void SetBuildConfiguration(BuildConfiguration buildConfiguration); } @@ -37,11 +38,12 @@ public class Build : IBuild private readonly BuildState? m_State; private readonly string m_WebUrl; private readonly Properties m_Properties; + private readonly RevisionsWrapper m_Revisions; private ITestOccurrences m_TestOccurrences; public Build(long id, string number, BuildStatus? status, DateTime startDate, DateTime finishDate, DateTime queuedDate, BuildConfiguration buildConfiguration, Agent agent, List changes, string webUrl, - Properties properties, ITestOccurrences testOccurrences, BuildState? state) + Properties properties, ITestOccurrences testOccurrences, BuildState? state, RevisionsWrapper revisions) { m_Id = id; m_Number = number; @@ -56,6 +58,7 @@ public Build(long id, string number, BuildStatus? status, DateTime startDate, Da m_Changes = changes; m_WebUrl = webUrl; m_Properties = properties; + m_Revisions = revisions; } public long Id @@ -93,6 +96,11 @@ public DateTime QueuedDate get { return m_QueuedDate; } } + public RevisionsWrapper Revisions + { + get { return m_Revisions; } + } + public BuildConfiguration BuildConfiguration { get { return m_BuildConfiguration; } diff --git a/FluentTc/Domain/Change.cs b/FluentTc/Domain/Change.cs index db3e0e6..daf5890 100644 --- a/FluentTc/Domain/Change.cs +++ b/FluentTc/Domain/Change.cs @@ -11,7 +11,7 @@ public class Change public string Version { get; set; } public DateTime Date { get; set; } public string Comment { get; set; } - + public string VcsBranchName { get; set; } public FileWrapper Files { get; set; } public User User { get; set; } diff --git a/FluentTc/Engine/BuildModelToBuildConverter.cs b/FluentTc/Engine/BuildModelToBuildConverter.cs index c47ef02..1deb30c 100644 --- a/FluentTc/Engine/BuildModelToBuildConverter.cs +++ b/FluentTc/Engine/BuildModelToBuildConverter.cs @@ -42,7 +42,7 @@ public IBuild ConvertToBuild(BuildModel buildModel) ConvertBuildStatus(buildModel), buildModel.StartDate, buildModel.FinishDate, buildModel.QueuedDate, buildConfiguration, buildModel.Agent, changes, buildModel.WebUrl, - buildModel.Properties, buildModel.TestOccurrences, ConvertBuildState(buildModel)); + buildModel.Properties, buildModel.TestOccurrences, ConvertBuildState(buildModel), buildModel.Revisions); } private static BuildStatus? ConvertBuildStatus(BuildModel buildModel)