Skip to content

Commit

Permalink
Implementation of Issue 18: Call to get the last change details for a…
Browse files Browse the repository at this point in the history
… build type - this has got the format of last change and all changes
  • Loading branch information
stack72 committed Feb 22, 2012
1 parent a693de9 commit 070c6ac
Show file tree
Hide file tree
Showing 8 changed files with 250 additions and 222 deletions.
1 change: 1 addition & 0 deletions src/IntegrationTests/SampleBuildsUsage.cs
Expand Up @@ -2,6 +2,7 @@
using System.Linq;
using System.Net;
using NUnit.Framework;
using TeamCitySharp.Locators;

namespace TeamCitySharp.IntegrationTests
{
Expand Down
8 changes: 8 additions & 0 deletions src/IntegrationTests/SampleChangeUsage.cs
Expand Up @@ -66,5 +66,13 @@ public void it_returns_change_details_by_change_id(string changeId)

Assert.That(changeDetails != null, "Cannot find details of that specified change");
}

[TestCase("bt113")]
public void it_returns_change_details_for_build_config(string buildConfigId)
{
Change changeDetails = _client.LastChangeDetailByBuildConfigId(buildConfigId);

Assert.That(changeDetails != null, "Cannot find details of that specified change");
}
}
}
4 changes: 4 additions & 0 deletions src/TeamCitySharp/ITeamCityClient.cs
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using TeamCitySharp.DomainEntities;
using TeamCitySharp.Locators;

namespace TeamCitySharp
{
Expand All @@ -25,6 +26,8 @@ public interface ITeamCityClient
List<Role> AllUserRolesByUserGroup(string userGroupName);
List<Change> AllChanges();
Change ChangeDetailsByChangeId(string id);
Change LastChangeDetailByBuildConfigId(string buildConfigId);
List<Change> ChangeDetailsByBuildConfigId(string buildConfigId);
List<BuildConfig> AllBuildConfigs();
BuildConfig BuildConfigByConfigurationName(string buildConfigName);
BuildConfig BuildConfigByConfigurationId(string buildConfigId);
Expand All @@ -48,5 +51,6 @@ public interface ITeamCityClient
List<Build> AllBuildsSinceDate(DateTime date);
List<Build> AllBuildsOfStatusSinceDate(DateTime date, BuildStatus buildStatus);
List<Build> NonSuccessfulBuildsForUser(string userName);

}
}
@@ -1,161 +1,161 @@
using System;
using System.Collections.Generic;

namespace TeamCitySharp
{
public enum BuildStatus
{
SUCCESS,
FAILURE,
ERROR
}
public class BuildLocator
{
public static BuildLocator WithId(long id)
{
return new BuildLocator {Id = id};
}

public static BuildLocator WithNumber(string number)
{
return new BuildLocator {Number = number};
}

public static BuildLocator RunningBuilds()
{
return new BuildLocator {Running = true};
}

public static BuildLocator WithDimensions(BuildTypeLocator buildType = null,
UserLocator user = null,
string agentName = null,
BuildStatus? status = null,
bool? personal = null,
bool? canceled = null,
bool? running = null,
bool? pinned = null,
int? maxResults = null,
int? startIndex = null,
BuildLocator sinceBuild = null,
DateTime? sinceDate = null,
string[] tags = null
)
{
return new BuildLocator
{
BuildType = buildType,
User = user,
AgentName = agentName,
Status = status,
Personal = personal,
Canceled = canceled,
Running = running,
Pinned = pinned,
MaxResults = maxResults,
StartIndex = startIndex,
SinceBuild = sinceBuild,
SinceDate = sinceDate,
Tags = tags
};
}

public long? Id { get; private set; }
public string Number { get; private set; }
public string[] Tags { get; private set; }
public BuildTypeLocator BuildType { get; private set; }
public UserLocator User { get; private set; }
public string AgentName { get; private set; }
public BuildStatus? Status { get; private set; }
public BuildLocator SinceBuild { get; private set; }
public bool? Personal { get; private set; }
public bool? Canceled { get; private set; }
public bool? Running { get; private set; }
public bool? Pinned { get; private set; }
public int? MaxResults { get; private set; }
public int? StartIndex { get; private set; }
public DateTime? SinceDate { get; private set; }

public override string ToString()
{
if (Id != null)
{
return "id:" + Id;
}

if (Number != null)
{
return "number:" + Number;
}

var locatorFields = new List<string>();

if (BuildType != null)
{
locatorFields.Add("buildType:(" + BuildType + ")");
}

if (User != null)
{
locatorFields.Add("user:(" + User + ")");
}

if (Tags != null)
{
locatorFields.Add("tags:(" + string.Join(",", Tags) + ")");
}

if (SinceBuild != null)
{
locatorFields.Add("sinceBuild:(" + SinceBuild + ")");
}

if(!string.IsNullOrEmpty(AgentName))
{
locatorFields.Add("agentName:" + AgentName);
}

if(Status.HasValue)
{
locatorFields.Add("status:" + Status.Value.ToString());
}

if(Personal.HasValue)
{
locatorFields.Add("personal:" + Personal.Value.ToString());
}

if(Canceled.HasValue)
{
locatorFields.Add("canceled:" + Canceled.Value.ToString());
}

if(Running.HasValue)
{
locatorFields.Add("running:" + Running.Value.ToString());
}

if(Pinned.HasValue)
{
locatorFields.Add("pinned:" + Pinned.Value.ToString());
}

if(MaxResults.HasValue)
{
locatorFields.Add("count:" + MaxResults.Value.ToString());
}

if(StartIndex.HasValue)
{
locatorFields.Add("start:" + StartIndex.Value.ToString());
}

if (SinceDate.HasValue)
{
locatorFields.Add("sinceDate:" +
SinceDate.Value.ToString("yyyyMMdd'T'HHmmsszzzz").Replace(":", "").Replace("+", "-"));
}

return string.Join(",", locatorFields.ToArray());
}
}
using System;
using System.Collections.Generic;

namespace TeamCitySharp.Locators
{
public enum BuildStatus
{
SUCCESS,
FAILURE,
ERROR
}
public class BuildLocator
{
public static BuildLocator WithId(long id)
{
return new BuildLocator {Id = id};
}

public static BuildLocator WithNumber(string number)
{
return new BuildLocator {Number = number};
}

public static BuildLocator RunningBuilds()
{
return new BuildLocator {Running = true};
}

public static BuildLocator WithDimensions(BuildTypeLocator buildType = null,
UserLocator user = null,
string agentName = null,
BuildStatus? status = null,
bool? personal = null,
bool? canceled = null,
bool? running = null,
bool? pinned = null,
int? maxResults = null,
int? startIndex = null,
BuildLocator sinceBuild = null,
DateTime? sinceDate = null,
string[] tags = null
)
{
return new BuildLocator
{
BuildType = buildType,
User = user,
AgentName = agentName,
Status = status,
Personal = personal,
Canceled = canceled,
Running = running,
Pinned = pinned,
MaxResults = maxResults,
StartIndex = startIndex,
SinceBuild = sinceBuild,
SinceDate = sinceDate,
Tags = tags
};
}

public long? Id { get; private set; }
public string Number { get; private set; }
public string[] Tags { get; private set; }
public BuildTypeLocator BuildType { get; private set; }
public UserLocator User { get; private set; }
public string AgentName { get; private set; }
public BuildStatus? Status { get; private set; }
public BuildLocator SinceBuild { get; private set; }
public bool? Personal { get; private set; }
public bool? Canceled { get; private set; }
public bool? Running { get; private set; }
public bool? Pinned { get; private set; }
public int? MaxResults { get; private set; }
public int? StartIndex { get; private set; }
public DateTime? SinceDate { get; private set; }

public override string ToString()
{
if (Id != null)
{
return "id:" + Id;
}

if (Number != null)
{
return "number:" + Number;
}

var locatorFields = new List<string>();

if (BuildType != null)
{
locatorFields.Add("buildType:(" + BuildType + ")");
}

if (User != null)
{
locatorFields.Add("user:(" + User + ")");
}

if (Tags != null)
{
locatorFields.Add("tags:(" + string.Join(",", Tags) + ")");
}

if (SinceBuild != null)
{
locatorFields.Add("sinceBuild:(" + SinceBuild + ")");
}

if(!string.IsNullOrEmpty(AgentName))
{
locatorFields.Add("agentName:" + AgentName);
}

if(Status.HasValue)
{
locatorFields.Add("status:" + Status.Value.ToString());
}

if(Personal.HasValue)
{
locatorFields.Add("personal:" + Personal.Value.ToString());
}

if(Canceled.HasValue)
{
locatorFields.Add("canceled:" + Canceled.Value.ToString());
}

if(Running.HasValue)
{
locatorFields.Add("running:" + Running.Value.ToString());
}

if(Pinned.HasValue)
{
locatorFields.Add("pinned:" + Pinned.Value.ToString());
}

if(MaxResults.HasValue)
{
locatorFields.Add("count:" + MaxResults.Value.ToString());
}

if(StartIndex.HasValue)
{
locatorFields.Add("start:" + StartIndex.Value.ToString());
}

if (SinceDate.HasValue)
{
locatorFields.Add("sinceDate:" +
SinceDate.Value.ToString("yyyyMMdd'T'HHmmsszzzz").Replace(":", "").Replace("+", "-"));
}

return string.Join(",", locatorFields.ToArray());
}
}
}

0 comments on commit 070c6ac

Please sign in to comment.