예제 #1
0
        public void GivenASingleRow_Parse_ReturnsACollectionOfListings(string address,
                                                                       string streetNumber,
                                                                       string street)
        {
            // Arrange.
            var content = File.ReadAllText($"Sample Data//2017-09-24-ACT-sold-address-is-to-be-replaced.csv");

            content = content.Replace("<<REPLACE ADDRESS HERE>>", address);

            var csvTransmorgrifier = new CsvTransmorgrifier();

            // Act.
            var result = csvTransmorgrifier.Parse(content);

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

            var expectedListing = TestHelpers.FakeResidentialListing;

            const string agencyId = "pewpew";

            expectedListing.AgencyId               = agencyId;
            expectedListing.Title                  = agencyId;
            expectedListing.Address.StreetNumber   = streetNumber;
            expectedListing.Address.Street         = street;
            expectedListing.Address.DisplayAddress = expectedListing.Address.ToFormattedAddress(isPostCodeIncluded: true);
            result.Listings.First().Listing.AgencyId = agencyId;
            result.Listings.First().Listing.Title = agencyId;

            result.Listings.First().Listing.ShouldLookLike(expectedListing);
        }
예제 #2
0
        public void GivenAFile_Parse_ReturnsACollectionOfListings(string fileName,
                                                                  int numberOfListings,
                                                                  bool isResidentialListing)
        {
            // Arrange.
            var content = File.ReadAllText($"Sample Data//{fileName}");

            var csvTransmorgrifier = new CsvTransmorgrifier();

            // Act.
            var result = csvTransmorgrifier.Parse(content);

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

            Listing expectedListing;

            if (isResidentialListing)
            {
                expectedListing = TestHelpers.FakeResidentialListing;
            }
            else
            {
                expectedListing = TestHelpers.FakeRentalListing;
            }

            const string agencyId = "pewpew";

            expectedListing.AgencyId = agencyId;
            expectedListing.Title    = agencyId;
            result.Listings.First().Listing.AgencyId = agencyId;
            result.Listings.First().Listing.Title = agencyId;

            result.Listings.First().Listing.ShouldLookLike(expectedListing);
        }
예제 #3
0
        public void GivenAFileWithSomeMissingRowDataField_Parse_ReturnsAnError()
        {
            // Arrange.
            var          csvTransmorgrifier = new CsvTransmorgrifier();
            ParsedResult result;
            var          data = File.ReadAllText("Sample Data//2017-09-24-ACT-rent-missing-row-data.csv");

            // Act.
            result = csvTransmorgrifier.Parse(data);

            // Assert.
            result.Listings.Count.ShouldBe(6); // 6 rows of legit data.
            result.Errors.Count.ShouldBe(4);   // 4 rows were missing the IMAGE field data.
            result.Errors.First().ExceptionMessage.ShouldNotBeNullOrWhiteSpace();
            result.Errors.First().InvalidData.ShouldNotBeNullOrWhiteSpace();
        }
예제 #4
0
        public void GivenAFileWithAMissingHeader_Parse_ReturnsAnError()
        {
            // Arrange.
            var          csvTransmorgrifier = new CsvTransmorgrifier();
            ParsedResult result;
            var          data = File.ReadAllText($"Sample Data//2017-09-24-ACT-rent-missing-header.csv");

            // Act.
            result = csvTransmorgrifier.Parse(data);

            // Assert.
            result.Listings.Count.ShouldBe(0);
            result.Errors.Count.ShouldBe(5); // 1x Header missing error, 4x failed to parse data because of missing header.
            result.Errors.First().ExceptionMessage.ShouldNotBeNullOrWhiteSpace();
            result.Errors.First().InvalidData.ShouldNotBeNullOrWhiteSpace();
        }