public async Task <List <Build> > ByBuildLocatorWithFields(Action <BuildLocator> locatorConfig, Action <BuildsFields> fieldConfig) { var buildLocator = new BuildLocator(); locatorConfig(buildLocator); var buildsFields = new BuildsFields(); fieldConfig(buildsFields); string requestUri = string.Format("/app/rest/builds?locator={0}&fields={1}", buildLocator, buildsFields); var buildWrapper = await _http.Get <BuildsWrapper>(requestUri); if (buildWrapper == null || buildWrapper.Build == null || buildWrapper.Build.Count == 0) { throw new Exception(string.Format("Could not get build from TeamCity by locator: \"{0}\" and fields \"{1}\"", buildLocator, buildsFields)); } foreach (var build in buildWrapper.Build) { build.SetBuildClient(this); } return(buildWrapper.Build); }
public void Should_create_deeply_nested_fields_string() { var buildsFields = new BuildsFields(); buildsFields .WithLong() .WithBuildFields(b => b .WithId() .WithNumber() .WithStatus() .WithFinishDate() .WithChangesFields(cs => cs .WithChangeFields(c => c .WithUserFields(u => u .WithName() ) .WithFilesFields(fs => fs .WithFileFields(f => f .WithChangeType() .WithFile()) ) ) ) ); Assert.Equal("$long,build(id,number,status,finishDate,changes(change(user(name),files(file(changeType,file)))))", buildsFields.ToString()); }