コード例 #1
0
 private static RentalListing CreateListing(string fileName = null)
 {
     var xml = File.ReadAllText(fileName
                                ?? "Sample Data\\Transmorgrifiers\\REA\\Rental\\REA-Rental-Current.xml");
     var transmogrifier = new ReaXmlTransmorgrifier();
     return transmogrifier.ConvertTo(xml).Listings.First().Listing as RentalListing;
 }
コード例 #2
0
            private static Listing GetListing(string fileName)
            {
                fileName.ShouldNotBeNullOrEmpty();

                var reaXml = File.ReadAllText(fileName);
                var reaXmlTransmorgrifier = new ReaXmlTransmorgrifier();
                return reaXmlTransmorgrifier.ConvertTo(reaXml).Listings.First().Listing;
            }
コード例 #3
0
            public void GivenTheFileREAResidentialSold_Convert_ReturnsAResidentialSoldListing()
            {
                // Arrange.
                var reaXml =
                    File.ReadAllText("Sample Data\\Transmorgrifiers\\REA\\Residential\\REA-Residential-Sold.xml");
                var reaXmlTransmorgrifier = new ReaXmlTransmorgrifier();

                // Act.
                var result = reaXmlTransmorgrifier.ConvertTo(reaXml);

                // Assert.
                result.Listings.Count.ShouldBe(1);
                result.UnhandledData.ShouldBe(null);
                AssertResidentialSoldListing(result.Listings.First().Listing as ResidentialListing);
            }
コード例 #4
0
        public static LandListing LandListingFromFile(bool isClearAllIsModified = true)
        {
            var reaXml =
                File.ReadAllText("Sample Data\\Transmorgrifiers\\REA\\Land\\REA-Land-Current.xml");
            var reaXmlTransmorgrifier = new ReaXmlTransmorgrifier();

            var listing = (LandListing)reaXmlTransmorgrifier
                .ConvertTo(reaXml)
                .Listings
                .First()
                .Listing;

            if (isClearAllIsModified)
            {
                listing.ClearAllIsModified();
            }

            return listing;
        }
コード例 #5
0
        public static ResidentialListing ResidentialListingFromFile(bool isClearAllIsModified = true,
            bool includeDataForCustomDataFields = true)
        {
            var reaXml =
                File.ReadAllText("Sample Data\\Transmorgrifiers\\REA\\Residential\\REA-Residential-Current.xml");
            var reaXmlTransmorgrifier = new ReaXmlTransmorgrifier();

            var listing = (ResidentialListing)reaXmlTransmorgrifier
                .ConvertTo(reaXml)
                .Listings
                .First()
                .Listing;

            if (includeDataForCustomDataFields)
            {
                listing.Address.Latitude = 1m;
                listing.Address.Longitude = 2.4m;
                for (var i = 0; i < listing.FloorPlans.Count; i++)
                {
                    listing.FloorPlans[i].Tag = "Tag_" + i + 1;
                }

                for (var i = 0; i < listing.Images.Count; i++)
                {
                    listing.Images[i].Tag = "Tag_" + i + 1;
                }

                for (var i = 0; i < listing.Videos.Count; i++)
                {
                    listing.Videos[i].Tag = "Tag_" + i + 1;
                }
            }

            if (isClearAllIsModified)
            {
                listing.ClearAllIsModified();
            }

            return listing;
        }
コード例 #6
0
            public void GivenTheFileREAResidentialCurrent_Convert_ReturnsAResidentialCurrentListing()
            {
                // Arrange.
                var reaXml =
                    File.ReadAllText("Sample Data\\Transmorgrifiers\\REA\\Residential\\REA-Residential-Current.xml");
                var reaXmlTransmorgrifier = new ReaXmlTransmorgrifier();

                // Act.
                var result = reaXmlTransmorgrifier.ConvertTo(reaXml);

                // Assert.
                result.ShouldNotBe(null);
                result.Listings.Count.ShouldBe(1);
                result.UnhandledData.ShouldBe(null);
                result.Errors.ShouldBe(null);
                AssertResidentialCurrentListing(result.Listings.First().Listing as ResidentialListing,
                    tags:
                        new[]
                        {
                            "houseAndLandPackage", "solarPanels", "waterTank", "hotWaterService-gas", "heating-other",
                            "balcony", "shed", "courtyard", "isANewConstruction"
                        },
                    videoUrls: new[] {"http://www.foo.tv/abcd.html"});
            }
コード例 #7
0
            public void GivenTheFileREARentalWithdrawn_Convert_ReturnsARentalWithdrawnListing()
            {
                // Arrange.
                var reaXml = File.ReadAllText("Sample Data\\Transmorgrifiers\\REA\\Rental\\REA-Rental-Withdrawn.xml");
                var reaXmlTransmorgrifier = new ReaXmlTransmorgrifier();

                // Act.
                var result = reaXmlTransmorgrifier.ConvertTo(reaXml);

                // Assert.
                result.Listings.Count.ShouldBe(1);
                result.UnhandledData.ShouldBe(null);
                var listing = result.Listings.First().Listing;
                listing.AgencyId.ShouldBe("XNWXNW");
                listing.Id.ShouldBe("Rental-Withdrawn-ABCD1234");
                listing.StatusType.ShouldBe(StatusType.Withdrawn);
            }
コード例 #8
0
            public void GivenTheFileREASegmentRentalCurrent_Convert_ReturnsARentalCurrentListing()
            {
                // Arrange.
                var reaXml =
                    File.ReadAllText("Sample Data\\Transmorgrifiers\\REA\\Rental\\REA-Segment-Rental-Current.xml");
                var reaXmlTransmorgrifier = new ReaXmlTransmorgrifier();

                // Act.
                var result = reaXmlTransmorgrifier.ConvertTo(reaXml);

                // Assert.
                result.Listings.Count.ShouldBe(1);
                result.UnhandledData.ShouldBe(null);
                AssertRentalCurrentListing(result.Listings.First().Listing as RentalListing,
                    bedroomsCount: 4);
            }
コード例 #9
0
            public void GivenTheFileREAResidentialCurrentWithASingleAgentName_Convert_ReturnsAResidentialCurrentListing()
            {
                // Arrange.
                var reaXml =
                    File.ReadAllText("Sample Data\\Transmorgrifiers\\REA\\Residential\\REA-Residential-Current-WithASingleAgentName.xml");
                var reaXmlTransmorgrifier = new ReaXmlTransmorgrifier();

                // Act.
                var result = reaXmlTransmorgrifier.ConvertTo(reaXml);

                // Assert.
                result.ShouldNotBe(null);
                result.Listings.Count.ShouldBe(1);
                result.UnhandledData.ShouldBe(null);
                result.Errors.ShouldBe(null);
                var listing = (ResidentialListing) result.Listings.First().Listing;
                Action<IList<ListingAgent>, bool> assertAgents =
                    delegate(IList<ListingAgent> listingAgents, bool isModified)
                    {
                        listingAgents.Count.ShouldBe(1);
                        listingAgents.First().Name.ShouldBe("Mr. John Doe");
                        listingAgents.First().IsNameModified.ShouldBe(isModified);
                        listingAgents.First().Order.ShouldBe(1);
                        listingAgents.First().IsOrderModified.ShouldBe(isModified);
                    };
                AssertResidentialCurrentListing(listing,
                    tags:
                        new[]
                        {
                            "houseAndLandPackage", "solarPanels", "waterTank", "hotWaterService-gas", "heating-other",
                            "balcony", "shed", "courtyard", "isANewConstruction"
                        },
                    videoUrls: new[] { "http://www.foo.tv/abcd.html" },
                    assertAgents: assertAgents);
            }
コード例 #10
0
            public void GivenTheFileREARentalCurrent_Convert_ReturnsARentalCurrentListing()
            {
                // Arrange.
                var reaXml = File.ReadAllText("Sample Data\\Transmorgrifiers\\REA\\Rental\\REA-Rental-Current.xml");
                var reaXmlTransmorgrifier = new ReaXmlTransmorgrifier();

                // Act.
                var result = reaXmlTransmorgrifier.ConvertTo(reaXml);

                // Assert.
                result.Listings.Count.ShouldBe(1);
                result.UnhandledData.ShouldBe(null);
                AssertRentalCurrentListing(result.Listings.First().Listing as RentalListing,
                    new[]
                    {
                        "hotWaterService-gas", "heating-other", "balcony", "shed", "courtyard", "isANewConstruction",
                        "fullyFenced", "outdoorEnt", "courtyard", "deck", "tennisCourt"
                    },
                    true,
                    4);
            }
コード例 #11
0
            public void GivenTheFileREAMixedContent_Convert_ReturnsAConvertResultWithListingsAndUnhandedData()
            {
                // Arrange.
                var reaXml = File.ReadAllText("Sample Data\\Transmorgrifiers\\REA\\REA-MixedContent.xml");
                var reaXmlTransmorgrifier = new ReaXmlTransmorgrifier();

                // Act.
                var result = reaXmlTransmorgrifier.ConvertTo(reaXml);

                // Assert.
                result.ShouldNotBe(null);
                result.Listings.Count.ShouldBe(2);
                result.UnhandledData.Count.ShouldBe(3);
                result.UnhandledData[0].StartsWith("<pewPew1").ShouldBe(true);
            }
コード例 #12
0
            public void GivenTheFileREAInvalidCharacterAndNoBadCharacterCleaning_Convert_ThrowsAnException()
            {
                // Arrange.
                var reaXml = File.ReadAllText("Sample Data\\Transmorgrifiers\\REA\\REA-InvalidCharacter.xml");
                var reaXmlTransmorgrifier = new ReaXmlTransmorgrifier();

                // Act.
                var result = reaXmlTransmorgrifier.ConvertTo(reaXml);

                // Assert.
                result.Listings.ShouldBe(null);
                result.UnhandledData.ShouldBe(null);
                result.Errors.Count.ShouldBe(1);
                result.Errors.First()
                    .ExceptionMessage.ShouldBe(
                        "The REA Xml data provided contains some invalid characters. Line: 0, Position: 1661. Error: '\x16', hexadecimal value 0x16, is an invalid character. Suggested Solution: Either set the 'areBadCharactersRemoved' parameter to 'true' so invalid characters are removed automatically OR manually remove the errors from the file OR manually handle the error (eg. notify the people who sent you this data, that it contains bad data and they should clean it up.)");
                result.Errors.First().InvalidData.ShouldBe("The entire data source.");
            }
コード例 #13
0
            public void GivenTheFileReaLandCurrentMissingLandCategory_Convert_ReturnsALandCurrentListing()
            {
                // Arrange.
                var reaXml =
                    File.ReadAllText(
                        "Sample Data\\Transmorgrifiers\\REA\\Land\\REA-Land-Current-MissingLandCategory.xml");
                var reaXmlTransmorgrifier = new ReaXmlTransmorgrifier();

                // Act.
                var result = reaXmlTransmorgrifier.ConvertTo(reaXml);

                // Assert.
                result.Listings.Count.ShouldBe(1);
                result.UnhandledData.ShouldBe(null);
                AssertLandCurrentListing(result.Listings.First().Listing as LandListing, 
                    LandCategoryType.Unknown,
                    carParking: new CarParking());
            }
コード例 #14
0
            public void GivenTheFileREAInvalidCharacterAndBadCharacterCleaning_Convert_ThrowsAnException()
            {
                // Arrange.
                var reaXml = File.ReadAllText("Sample Data\\Transmorgrifiers\\REA\\REA-InvalidCharacter.xml");
                var reaXmlTransmorgrifier = new ReaXmlTransmorgrifier();

                // Act.
                var result = reaXmlTransmorgrifier.ConvertTo(reaXml, true);

                // Assert.
                result.Listings.Count.ShouldBe(1);

                var residentialCurrentListing = result.Listings.Select(x => x.Listing)
                    .AsQueryable()
                    .WithId("Residential-Current-ABCD1234")
                    .OfType<ResidentialListing>()
                    .SingleOrDefault();
                residentialCurrentListing.ShouldNotBe(null);
            }
コード例 #15
0
            public void GivenTheFileREALandCurrent_Convert_ReturnsALandCurrentListing()
            {
                // Arrange.
                var reaXml = File.ReadAllText("Sample Data\\Transmorgrifiers\\REA\\Land\\REA-Land-Current.xml");
                var reaXmlTransmorgrifier = new ReaXmlTransmorgrifier();

                // Act.
                var result = reaXmlTransmorgrifier.ConvertTo(reaXml);

                // Assert.
                result.Listings.Count.ShouldBe(1);
                result.UnhandledData.ShouldBe(null);
                AssertLandCurrentListing(result.Listings.First().Listing as LandListing,
                    tags: new[] {"fullyFenced"},
                    carParking: new CarParking());
            }
コード例 #16
0
            public void GivenTheFileREALandSoldDisplayPriceisNo_Convert_ReturnsALandSoldListing()
            {
                // Arrange.
                var reaXml =
                    File.ReadAllText("Sample Data\\Transmorgrifiers\\REA\\Land\\REA-Land-Sold-DisplayPriceisNo.xml");
                var reaXmlTransmorgrifier = new ReaXmlTransmorgrifier();

                // Act.
                var result = reaXmlTransmorgrifier.ConvertTo(reaXml);

                // Assert.
                result.Listings.Count.ShouldBe(1);
                result.UnhandledData.ShouldBe(null);
                AssertLandSoldListing(result.Listings.First().Listing as LandListing, false);
            }
コード例 #17
0
            public void GivenTheFileREAResidentialSold_DisplayAttributeIsRange_Convert_ReturnsAnInvalidListing()
            {
                // Arrange.
                var reaXml =
                    File.ReadAllText(
                        "Sample Data\\Transmorgrifiers\\REA\\Residential\\REA-Residential-Sold-DisplayAttributeIsRange.xml");
                var reaXmlTransmorgrifier = new ReaXmlTransmorgrifier();

                // Act.
                var result = reaXmlTransmorgrifier.ConvertTo(reaXml);

                // Assert.
                result.ShouldNotBe(null);
                result.Listings.ShouldBe(null);
                result.UnhandledData.ShouldBe(null);
                result.Errors.Count.ShouldBe(1);
                result.Errors.First()
                    .ExceptionMessage.ShouldBe(
                        "Value 'range' is out of range. It should only be 0/1/yes/no.\r\nParameter name: value");
                result.Errors.First()
                    .InvalidData.ShouldStartWith("<residential modTime=\"2009-01-01-12:30:00\" status=\"sold\">");
            }
コード例 #18
0
            public void GivenTheFileREAResidentialCurrentWithAllFeatures_Convert_ReturnsAResidentialCurrentListing()
            {
                // Arrange.
                var reaXml =
                    File.ReadAllText(
                        "Sample Data\\Transmorgrifiers\\REA\\Residential\\REA-Residential-Current-WithAllFeatures.xml");
                var reaXmlTransmorgrifier = new ReaXmlTransmorgrifier();

                // Act.
                var result = reaXmlTransmorgrifier.ConvertTo(reaXml);

                // Assert.
                result.ShouldNotBe(null);
                result.Listings.Count.ShouldBe(1);
                result.UnhandledData.ShouldBe(null);
                AssertResidentialCurrentListing(result.Listings.First().Listing as ResidentialListing,
                    PropertyType.House,
                    4,
                    XmlFeatureHelpers.OtherFeatureNames);
            }
コード例 #19
0
            public void GivenTheFileREAResidentialCurrentBedroomIsStudio_Convert_ReturnsAResidentialCurrentListing()
            {
                // Arrange.
                var reaXml =
                    File.ReadAllText(
                        "Sample Data\\Transmorgrifiers\\REA\\Residential\\REA-Residential-Current-BedroomIsStudio.xml");
                var reaXmlTransmorgrifier = new ReaXmlTransmorgrifier();

                // Act.
                var result = reaXmlTransmorgrifier.ConvertTo(reaXml);

                // Assert.
                result.ShouldNotBe(null);
                result.Listings.Count.ShouldBe(1);
                result.UnhandledData.ShouldBe(null);
                AssertResidentialCurrentListing(result.Listings.First().Listing as ResidentialListing,
                    PropertyType.Studio,
                    0);
            }
コード例 #20
0
            public void GivenTheFileReaResidentialCurrentBadSalePrice_Convert_ReturnsSomeInvalidData()
            {
                // Arrange.
                var reaXml =
                    File.ReadAllText(
                        "Sample Data\\Transmorgrifiers\\REA\\Residential\\REA-Residential-Current-BadSalePrice.xml");
                var reaXmlTransmorgrifier = new ReaXmlTransmorgrifier();

                // Act.
                var result = reaXmlTransmorgrifier.ConvertTo(reaXml);

                // Assert.
                result.Listings.ShouldBe(null);
                result.UnhandledData.ShouldBe(null);
                result.Errors[0].ExceptionMessage.ShouldBe(
                    "Failed to parse the value '550000600000550000600000550000600000' into a decimal.");
                result.Errors[0].InvalidData.ShouldNotBeNullOrEmpty();
            }
コード例 #21
0
            public void GivenTheFileREAResidentialCurrentBadInspectionTime_Convert_ReturnsSomeInvalidData()
            {
                // Arrange.
                var reaXml =
                    File.ReadAllText(
                        "Sample Data\\Transmorgrifiers\\REA\\Residential\\REA-Residential-CurrentBadInspectionTime.xml");
                var reaXmlTransmorgrifier = new ReaXmlTransmorgrifier();

                // Act.
                var result = reaXmlTransmorgrifier.ConvertTo(reaXml);

                // Assert.
                result.ShouldNotBe(null);
                result.Listings.ShouldBe(null);
                result.UnhandledData.ShouldBe(null);
                result.Errors.Count.ShouldBe(1);
                result.Errors[0].ExceptionMessage.ShouldBe(
                    "Inspection element has an invald Date/Time value. Element: <inspection> 12:00AM to 12:00AM</inspection>");
                result.Errors[0].InvalidData.ShouldNotBeNullOrEmpty();
            }
コード例 #22
0
            public void GivenTheFileREALandCurrentIncompleteLandDetails_Convert_ReturnsALandCurrentListing()
            {
                // Arrange.
                var reaXml =
                    File.ReadAllText(
                        "Sample Data\\Transmorgrifiers\\REA\\Land\\REA-Land-Current-IncompleteLandDetails.xml");
                var reaXmlTransmorgrifier = new ReaXmlTransmorgrifier();

                // Act.
                var result = reaXmlTransmorgrifier.ConvertTo(reaXml);

                // Assert.
                result.Listings.Count.ShouldBe(1);
                result.UnhandledData.ShouldBe(null);

                var listing = result.Listings.First().Listing;
                listing.LandDetails.Area.ShouldBe(null);
                listing.LandDetails.Frontage.ShouldBe(null);
                listing.LandDetails.Depths.ShouldBe(null);
                listing.LandDetails.CrossOver.ShouldBeNullOrEmpty();
            }
コード例 #23
0
            public void GivenTheFileREAResidentialCurrentWithPriceAndDisplayNoAndAPriceView_Convert_ReturnsAListing()
            {
                // Arrange.
                var reaXml =
                    File.ReadAllText(
                        "Sample Data\\Transmorgrifiers\\REA\\Residential\\REA-Residential-Current-WithPriceAndDisplayNoAndAPriceView.xml");
                var reaXmlTransmorgrifier = new ReaXmlTransmorgrifier();

                // Act.
                var result = reaXmlTransmorgrifier.ConvertTo(reaXml);

                // Assert.
                result.ShouldNotBe(null);
                result.UnhandledData.ShouldBe(null);
                result.Errors.ShouldBe(null);

                AssertResidentialCurrentListing(result.Listings.First().Listing as ResidentialListing,
                    tags:
                        new[]
                        {
                            "houseAndLandPackage", "solarPanels", "waterTank", "hotWaterService-gas", "heating-other",
                            "balcony", "shed", "courtyard", "isANewConstruction"
                        },
                    salePriceText: null);
            }
コード例 #24
0
            public void GivenTheFileREALandOffMarket_Convert_ReturnsALandOffMarketListing()
            {
                // Arrange.
                var reaXml = File.ReadAllText("Sample Data\\Transmorgrifiers\\REA\\Land\\REA-Land-OffMarket.xml");
                var reaXmlTransmorgrifier = new ReaXmlTransmorgrifier();

                // Act.
                var result = reaXmlTransmorgrifier.ConvertTo(reaXml);

                // Assert.
                result.Listings.Count.ShouldBe(1);
                result.UnhandledData.ShouldBe(null);

                var listing = result.Listings.First().Listing;
                listing.AgencyId.ShouldBe("XNWXNW");
                listing.Id.ShouldBe("Land-OffMarket-ABCD1234");
                listing.StatusType.ShouldBe(StatusType.OffMarket);
            }
コード例 #25
0
            public void GivenTheFileREAResidentialCurrentWithLocalFilesForImages_Convert_ReturnsAListing()
            {
                // Arrange.
                var reaXml =
                    File.ReadAllText(
                        "Sample Data\\Transmorgrifiers\\REA\\Residential\\REA-Residential-Current-WithLocalFilesForImages.xml");
                var reaXmlTransmorgrifier = new ReaXmlTransmorgrifier();

                // Act.
                var result = reaXmlTransmorgrifier.ConvertTo(reaXml);

                // Assert.
                result.ShouldNotBe(null);
                result.UnhandledData.ShouldBe(null);
                result.Errors.ShouldBe(null);

                AssertResidentialCurrentListing(result.Listings.First().Listing as ResidentialListing,
                    tags:
                        new[]
                        {
                            "houseAndLandPackage", "solarPanels", "waterTank", "hotWaterService-gas", "heating-other",
                            "balcony", "shed", "courtyard", "isANewConstruction"
                        },
                    imageUrls: new[] {"imageM.jpg", "imageA.jpg"},
                    floorplanUrls: new[] {"floorplan1.gif", "floorplan2.gif"});
            }
コード例 #26
0
            public void GivenTheFileREAAllTypes_Convert_ReturnsAListOfListings()
            {
                // Arrange.
                var reaXml = File.ReadAllText("Sample Data\\Transmorgrifiers\\REA\\REA-AllTypes.xml");
                var reaXmlTransmorgrifier = new ReaXmlTransmorgrifier();

                // Act.
                var result = reaXmlTransmorgrifier.ConvertTo(reaXml);

                // Assert.
                result.Listings.Count.ShouldBe(6);
                result.UnhandledData.ShouldBe(null);
                var listings = result.Listings.Select(x => x.Listing).ToList();

                var residentialCurrentListing = listings
                    .AsQueryable()
                    .WithId("Residential-Current-ABCD1234")
                    .OfType<ResidentialListing>()
                    .SingleOrDefault();
                residentialCurrentListing.ShouldNotBe(null);

                var residentialSoldListing = listings
                    .AsQueryable()
                    .WithId("Residential-Sold-ABCD1234")
                    .OfType<ResidentialListing>()
                    .SingleOrDefault();
                residentialSoldListing.ShouldNotBe(null);

                var residentialWithdrawnListing = listings
                    .AsQueryable()
                    .WithId("Residential-Withdrawn-ABCD1234")
                    .OfType<ResidentialListing>()
                    .SingleOrDefault();
                residentialWithdrawnListing.ShouldNotBe(null);

                var rentalCurrentListing = listings
                    .AsQueryable()
                    .WithId("Rental-Current-ABCD1234")
                    .OfType<RentalListing>()
                    .SingleOrDefault();
                rentalCurrentListing.ShouldNotBe(null);

                var rentalLeasedListing = listings
                    .AsQueryable()
                    .WithId("Rental-Leased-ABCD1234")
                    .OfType<RentalListing>()
                    .SingleOrDefault();
                rentalLeasedListing.ShouldNotBe(null);

                var rentalListing = listings
                    .AsQueryable()
                    .WithId("Rental-Withdrawn-ABCD1234")
                    .OfType<RentalListing>()
                    .SingleOrDefault();
                rentalListing.ShouldNotBe(null);
            }
コード例 #27
0
            public void GivenTheFileREAResidentialCurrentWithABadBedroomNumber_Convert_ReturnsAnError()
            {
                // Arrange.
                var reaXml =
                    File.ReadAllText(
                        "Sample Data\\Transmorgrifiers\\REA\\Residential\\REA-Residential-Current-WithABadBedroomNumber.xml");
                var reaXmlTransmorgrifier = new ReaXmlTransmorgrifier();

                // Act.
                var result = reaXmlTransmorgrifier.ConvertTo(reaXml);

                // Assert.
                result.ShouldNotBe(null);
                result.UnhandledData.ShouldBe(null);
                result.Errors.Count.ShouldBe(1);
                result.Errors.First()
                    .ExceptionMessage.ShouldBe(
                        "Failed to parse the value '4.5' into an int. Is it a valid number? Does it contain decimal point values?");
            }
コード例 #28
0
                GivenTheFileREAResidentialCurrentWithAStreetNumberAndASingleSubNumberWithACustomDelimeter_Convert_ReturnsAResidentialCurrentListing
                ()
            {
                // Arrange.
                var reaXml =
                    File.ReadAllText(
                        "Sample Data\\Transmorgrifiers\\REA\\Residential\\REA-Residential-Current-WithAStreetNumberAndASingleSubNumber.xml");
                var reaXmlTransmorgrifier = new ReaXmlTransmorgrifier
                {
                    AddressDelimeter = "-"
                };

                // Act.
                var result = reaXmlTransmorgrifier.ConvertTo(reaXml);

                // Assert.
                result.ShouldNotBe(null);
                result.Listings.Count.ShouldBe(1);
                result.UnhandledData.ShouldBe(null);
                result.Errors.ShouldBe(null);
                AssertResidentialCurrentListing(result.Listings.First().Listing as ResidentialListing,
                    tags:
                        new[]
                        {
                            "houseAndLandPackage", "solarPanels", "waterTank", "hotWaterService-gas", "heating-other",
                            "balcony", "shed", "courtyard", "isANewConstruction"
                        },
                    streetNumber: "2-39");
            }
コード例 #29
0
            public void GivenTheFileREABadContent_Convert_ThrowsAnException()
            {
                // Arrange.
                var reaXml = File.ReadAllText("Sample Data\\Transmorgrifiers\\REA\\REA-BadContent.xml");
                var reaXmlTransmorgrifier = new ReaXmlTransmorgrifier();

                // Act.
                var result = reaXmlTransmorgrifier.ConvertTo(reaXml);

                // Assert.
                result.Listings.ShouldBe(null);
                result.UnhandledData.ShouldBe(null);
                result.Errors.Count.ShouldBe(1);
                result.Errors.First()
                    .ExceptionMessage.ShouldBe(
                        "Unable to parse the xml data provided. Currently, only a <propertyList/> or listing segments <residential/> / <rental/> / <land/> / <rural/>. Root node found: 'badContent'.");
                result.Errors.First()
                    .InvalidData.ShouldBe(
                        "Failed to parse the provided xml data because it contains some invalid data. Pro Tip: This is usually because a character is not encoded. Like an ampersand.");
            }