/// <summary> /// Maps the specified XML. /// </summary> /// <param name="xml">The XML.</param> /// <returns></returns> public IList<JobDescriptor> Map(XmlDocument xml) { var descriptors = new List<JobDescriptor>(); var nodes = xml.SelectNodes("//job"); if (nodes != null) { foreach (XmlNode node in nodes) { var xmlNode = node.CloneNode(true); var descriptor = new JobDescriptor { Name = xmlNode.Find("//name"), Url = new Uri(xmlNode.Find("//url")), Status = BuildStatusParser.Parse(xmlNode.Find("//color")) }; descriptors.Add(descriptor); } } return descriptors; }
public void TestGetJobWhenInvalid() { xmlService .Expect(call => call.GetPage(new Uri("http://www.example.com/jobs/first-job/api/xml/"))) .Returns(XmlFactory.LoadInvalidXml()); var descriptor = new JobDescriptor { Url = new Uri("http://www.example.com/jobs/first-job/") }; var job = service.GetJob(descriptor); Assert.AreEqual(typeof(NullJob), job.GetType()); }
public void TestGetJob() { ExpectCallsToGetJob(); var descriptor = new JobDescriptor { Url = new Uri("http://www.example.com/jobs/first-job/") }; var job = service.GetJob(descriptor); Assert.IsNotNull(job); Assert.AreEqual("first-job", job.Name); // Check builds have been initilized Assert.IsNotNull(job.LastBuild); Assert.IsNotNull(job.LastFailedBuild.Number); Assert.IsNotNull(job.LastStableBuild.Number); Assert.IsNotNull(job.LastSuccessfulBuild.Number); }
/// <summary> /// Gets the full <see cref="Job"/> from the given <see cref="JobDescriptor"/>. /// </summary> /// <param name="jobDescriptor">The job descriptor.</param> /// <returns></returns> public Job GetJob(JobDescriptor jobDescriptor) { Job job = new NullJob(jobDescriptor); var url = new XmlApiPrepender().Prepend(jobDescriptor.Url); var xml = XmlService.GetPage(url); if (xml.IsValid) { job = new JobMapper().Map(xml.Contents); /* Get Builds (takes a while...) var descriptors = mapper.MapMany(xml.Contents, "//build"); job.Builds = BuildService.GetBuilds(descriptors); */ // Get Last Build var firstBuild = mapper.Map(xml.Contents, "//firstBuild"); job.FirstBuild = BuildService.GetBuild(firstBuild); // Get Last Build var lastBuild = mapper.Map(xml.Contents, "//lastBuild"); job.LastBuild = BuildService.GetBuild(lastBuild); // Get Last Failed Build var lastFailedBuild = mapper.Map(xml.Contents, "//lastFailedBuild"); job.LastFailedBuild = BuildService.GetBuild(lastFailedBuild); // Get Last Stable Build var lastStableBuild = mapper.Map(xml.Contents, "//lastStableBuild"); job.LastStableBuild = BuildService.GetBuild(lastStableBuild); // Get Last Successful Build var lastSuccessfulBuild = mapper.Map(xml.Contents, "//lastSuccessfulBuild"); job.LastSuccessfulBuild = BuildService.GetBuild(lastSuccessfulBuild); } return job; }