コード例 #1
0
        /// <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;
        }
コード例 #2
0
        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());
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        /// <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;
        }