Ejemplo n.º 1
0
            private static Listing GetListing(Type listingType)
            {
                string fileName = null;

                if (listingType == typeof(ResidentialListing))
                {
                    fileName = "Sample Data\\Transmorgrifiers\\REA\\Residential\\REA-Residential-Current.xml";
                }
                else if (listingType == typeof(RentalListing))
                {
                    fileName = "Sample Data\\Transmorgrifiers\\REA\\Rental\\REA-Rental-Current.xml";
                }
                else if (listingType == typeof(RuralListing))
                {
                    fileName = "Sample Data\\Transmorgrifiers\\REA\\Rural\\REA-Rural-Current.xml";
                }
                else if (listingType == typeof(LandListing))
                {
                    fileName = "Sample Data\\Transmorgrifiers\\REA\\Land\\REA-Land-Current.xml";
                }

                if (string.IsNullOrWhiteSpace(fileName))
                {
                    throw new Exception("No valid type provided. Must be a 'Listing' type.");
                }

                var reaXml = File.ReadAllText(fileName);
                var reaXmlTransmorgrifier = new ReaXmlTransmorgrifier();

                return(reaXmlTransmorgrifier.ConvertTo(reaXml).Listings.First().Listing);
            }
Ejemplo n.º 2
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);
            }
            private static Listing GetListing(string fileName)
            {
                fileName.ShouldNotBeNullOrEmpty();

                var reaXml = File.ReadAllText(fileName);
                var reaXmlTransmorgrifier = new ReaXmlTransmorgrifier();

                return(reaXmlTransmorgrifier.ConvertTo(reaXml).Listings.First().Listing);
            }
Ejemplo n.º 4
0
            public void GivenTheFileREABadContent_Convert_ThrowsAnException()
            {
                // Arrange.
                var reaXml = File.ReadAllText("Sample Data\\Transmorgrifiers\\REA\\REA-BadContent.xml");
                var reaXmlTransmorgrifier = new ReaXmlTransmorgrifier();

                // Act.
                var exception = Should.Throw <Exception>(() => reaXmlTransmorgrifier.ConvertTo(reaXml));

                // Assert.
                exception.ShouldNotBe(null);
                exception.Message.ShouldBe("Unable to parse the xml data provided. Currently, only a <propertyList/> or listing segments <residential/> / <rental/> / <land/> / <rural/>. Root node found: 'badContent'.");
            }
Ejemplo n.º 5
0
            public void GivenTheFileREAResidentialSoldWithDisplayPriceIsNo_Convert_ReturnsAResidentialSoldListing()
            {
                // Arrange.
                var reaXml = File.ReadAllText("Sample Data\\Transmorgrifiers\\REA\\Residential\\REA-Residential-Sold-DisplayPriceIsNo.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, false);
            }
Ejemplo n.º 6
0
            public void GivenTheFileREAResidentialCurrentBadInspectionTime_Convert_ThrowsAnException()
            {
                // Arrange.
                var reaXml = File.ReadAllText("Sample Data\\Transmorgrifiers\\REA\\Residential\\REA-Residential-CurrentBadInspectionTime.xml");
                var reaXmlTransmorgrifier = new ReaXmlTransmorgrifier();

                // Act.
                var result = Should.Throw <AggregateException>(() => reaXmlTransmorgrifier.ConvertTo(reaXml));

                // Assert.
                result.ShouldNotBe(null);
                result.Message.ShouldBe("One or more errors occurred.");
                result.InnerException.Message.ShouldBe("Inspection element has an invald Date/Time value. Element: <inspection> 12:00AM to 12:00AM</inspection>");
            }
Ejemplo n.º 7
0
            public void GivenTheFileREAInvalidCharacterAndNoBadCharacterCleaning_Convert_ThrowsAnException()
            {
                // Arrange.
                var reaXml = File.ReadAllText("Sample Data\\Transmorgrifiers\\REA\\REA-InvalidCharacter.xml");
                var reaXmlTransmorgrifier = new ReaXmlTransmorgrifier();

                // Act.
                var exception = Should.Throw <Exception>(() => reaXmlTransmorgrifier.ConvertTo(reaXml));

                // Assert.
                exception.ShouldNotBe(null);
                exception.Message.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.)");
            }
Ejemplo n.º 8
0
            public void GivenTheFileReaResidentialCurrentBadSalePrice_Convert_ThrowsAnException()
            {
                // Arrange.
                var reaXml = File.ReadAllText("Sample Data\\Transmorgrifiers\\REA\\Residential\\REA-Residential-Current-BadSalePrice.xml");
                var reaXmlTransmorgrifier = new ReaXmlTransmorgrifier();

                // Act.
                var result = Should.Throw <AggregateException>(() => reaXmlTransmorgrifier.ConvertTo(reaXml));

                // Assert.
                result.ShouldNotBe(null);
                result.Message.ShouldBe("One or more errors occurred.");
                result.InnerException.Message.ShouldBe("Failed to parse the value '550000600000550000600000550000600000' into a decimal.");
            }
Ejemplo n.º 9
0
            public void GivenTheFileREASegmentResidentialCurrent_Convert_ReturnsAResidentialCurrentListing()
            {
                // Arrange.
                var reaXml = File.ReadAllText("Sample Data\\Transmorgrifiers\\REA\\Residential\\REA-Segment-Residential-Current.xml");
                var reaXmlTransmorgrifier = new ReaXmlTransmorgrifier();

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

                // Assert.
                result.Listings.Count.ShouldBe(1);
                result.UnhandledData.ShouldBe(null);
                AssertResidentialCurrentListing(result.Listings.First().Listing as ResidentialListing);
            }
Ejemplo n.º 10
0
            public void GivenTheFileREARuralSold_Convert_ReturnsARuralSoldListing()
            {
                // Arrange.
                var reaXml = File.ReadAllText("Sample Data\\Transmorgrifiers\\REA\\Rural\\REA-Rural-Sold.xml");
                var reaXmlTransmorgrifier = new ReaXmlTransmorgrifier();

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

                // Assert.
                result.Listings.Count.ShouldBe(1);
                result.UnhandledData.ShouldBe(null);
                AssertRuralSoldListing(result.Listings.First().Listing as RuralListing);
            }
Ejemplo n.º 11
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);
            }
Ejemplo n.º 12
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);
            }
Ejemplo n.º 13
0
            public void GivenTheFileREARentalOffMarket_Convert_ReturnsARentalOffMarketListing()
            {
                // Arrange.
                var reaXml = File.ReadAllText("Sample Data\\Transmorgrifiers\\REA\\Rental\\REA-Rental-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("Rental-OffMarket-ABCD1234");
                listing.StatusType.ShouldBe(StatusType.OffMarket);
            }
Ejemplo n.º 14
0
        public static RuralListing RuralListingFromFile(bool isClearAllIsModified = true)
        {
            var reaXml =
                File.ReadAllText("Sample Data\\Transmorgrifiers\\REA\\Rural\\REA-Rural-Current.xml");
            var reaXmlTransmorgrifier = new ReaXmlTransmorgrifier();

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

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

            return(listing);
        }
Ejemplo n.º 15
0
            public void GivenTheFileREALandWithdawn_Convert_ReturnsALandWithdawnListing()
            {
                // Arrange.
                var reaXml = File.ReadAllText("Sample Data\\Transmorgrifiers\\REA\\Land\\REA-Land-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("Land-Withdrawn-ABCD1234");
                listing.StatusType.ShouldBe(StatusType.Withdrawn);
            }
Ejemplo n.º 16
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);
            }
Ejemplo n.º 17
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.Depth.ShouldBe(null);
                listing.LandDetails.CrossOver.ShouldBeNullOrEmpty();
            }
Ejemplo n.º 18
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);
        }
Ejemplo n.º 19
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);
            }