public void TestCompleteNestedMapping()
        {
            var dtoDesponse = BuildResponseDto();
            
            var domainResponse = new LineStatusResponse();
            _mappings.LineStatusResponseMapping.Map(dtoDesponse, domainResponse);

            // Check Domain object
            Assert.IsTrue(domainResponse.LineStatuses.Count() == 2);

            var ls1 = domainResponse.LineStatuses[0];

            Assert.AreEqual(5, ls1.Id);
            Assert.AreEqual("No service between Camden Town and High Barnet / Mill Hill East due to planned engineering work. GOOD SERVICE on the rest of the line.", ls1.StatusDetails);
            Assert.IsTrue(ls1.BranchDisruptions.Count == 2);

            var dis1 = ls1.BranchDisruptions[0];
            Assert.AreEqual(35, dis1.StationFrom.Id);
            Assert.AreEqual("Camden Town", dis1.StationFrom.Name);
            Assert.AreEqual(106, dis1.StationTo.Id);
            Assert.AreEqual("High Barnet", dis1.StationTo.Name);

            var dis2 = ls1.BranchDisruptions[1];
            Assert.AreEqual(35, dis2.StationFrom.Id);
            Assert.AreEqual("Camden Town", dis2.StationFrom.Name);
            Assert.AreEqual(147, dis2.StationTo.Id);
            Assert.AreEqual("Mill Hill East", dis2.StationTo.Name);

            Assert.AreEqual(5, ls1.Line.Id);
            Assert.AreEqual("Northern", ls1.Line.Name);
            Assert.AreEqual("PC", ls1.Status.Id);
            Assert.AreEqual("Part Closure", ls1.Status.Description);
            Assert.AreEqual("DisruptedService", ls1.Status.CssClass);
            Assert.AreEqual(true, ls1.Status.IsActive);
            Assert.AreEqual(1, ls1.Status.StatusType.Id);
            Assert.AreEqual("Line", ls1.Status.StatusType.Description);

            var ls2 = domainResponse.LineStatuses[1];

            Assert.AreEqual(0, ls2.Id);
            Assert.AreEqual("", ls2.StatusDetails);
            Assert.IsTrue(ls2.BranchDisruptions.Count == 0);
            
            Assert.AreEqual(1, ls2.Line.Id);
            Assert.AreEqual("Bakerloo", ls2.Line.Name);
            Assert.AreEqual("GS", ls2.Status.Id);
            Assert.AreEqual("Good Service", ls2.Status.Description);
            Assert.AreEqual("GoodService", ls2.Status.CssClass);
            Assert.AreEqual(true, ls2.Status.IsActive);
            Assert.AreEqual(1, ls2.Status.StatusType.Id);
            Assert.AreEqual("Line", ls2.Status.StatusType.Description);

        }
        private IEnumerable<LineStatus> GetAllLineStatuses()
        {
            var lineStatusClient = new LineStatusClient();

            var lineStatusResponseDto = lineStatusClient.GetLineStatuses();
            lineStatusClient.Close();
            
            var lineStatusResponse = new LineStatusResponse();

            _mappings.LineStatusResponseMapping.Map(lineStatusResponseDto, lineStatusResponse);

            return lineStatusResponse.LineStatuses;

        }