Ejemplo n.º 1
0
        public void GivenAnExistingListingAndANewListingWithEverythingModified_Copy_CopiesOverTheData()
        {
            // Arrange.
            var sourceListing      = TestHelperUtilities.LandListing(false);
            var destinationListing = TestHelperUtilities.LandListingFromFile();

            // Act.
            destinationListing.Copy(sourceListing);

            // Assert.
            destinationListing.CategoryType.ShouldBe(sourceListing.CategoryType);
            destinationListing.IsCategoryTypeModified.ShouldBe(true);
            destinationListing.AuctionOn.ShouldBe(sourceListing.AuctionOn);
            destinationListing.IsAuctionOnModified.ShouldBe(true);
            destinationListing.CouncilRates.ShouldBe(sourceListing.CouncilRates);
            destinationListing.IsCouncilRatesModified.ShouldBe(true);

            destinationListing.Pricing.SalePrice.ShouldBe(sourceListing.Pricing.SalePrice);
            destinationListing.Pricing.SalePriceText.ShouldBe(sourceListing.Pricing.SalePriceText);
            destinationListing.Pricing.IsUnderOffer.ShouldBe(sourceListing.Pricing.IsUnderOffer);
            destinationListing.Pricing.SoldOn.ShouldBe(sourceListing.Pricing.SoldOn);
            destinationListing.Pricing.IsSoldOnModified.ShouldBe(true);
            destinationListing.Pricing.SoldPrice.ShouldBe(sourceListing.Pricing.SoldPrice);
            destinationListing.Pricing.IsSoldPriceModified.ShouldBe(true);
            destinationListing.Pricing.SoldPriceText.ShouldBe(sourceListing.Pricing.SoldPriceText);
            destinationListing.Pricing.IsSoldPriceTextModified.ShouldBe(true);
            destinationListing.IsPricingModified.ShouldBe(true);

            destinationListing.Estate.Name.ShouldBe(sourceListing.Estate.Name);
            destinationListing.Estate.IsNameModified.ShouldBe(true);
            destinationListing.Estate.Stage.ShouldBe(sourceListing.Estate.Stage);
            destinationListing.IsEstateModified.ShouldBe(true);
        }
Ejemplo n.º 2
0
            public void GivenAnExistingListingAndChangingAnImage_Copy_CopiesOverTheData()
            {
                // Arrange.
                var sourceListing      = TestHelperUtilities.ResidentialListingFromFile();
                var destinationListing = TestHelperUtilities.ResidentialListingFromFile();

                sourceListing.Images = new List <Media>
                {
                    new Media
                    {
                        Url   = "http://a.b/c",
                        Order = 1,
                        Tag   = "hi!"
                    }
                };

                // Act.
                // NOTE: this will just copy over the 1 media item.
                destinationListing.Copy(sourceListing);

                // Assert.
                destinationListing.Images.First().Url.ShouldBe(sourceListing.Images.First().Url);
                destinationListing.IsImagesModified.ShouldBe(true);

                // Now lets change the source and the destination should _not_ change.
                sourceListing.Images.First().Url = "https://1.2.3.4/5";
                destinationListing.Images.First().Url.ShouldNotBe(sourceListing.Images.First().Url);
            }
            public void GivenAnExistingListingAndANewListingWithEverythingModified_Copy_CopiesOverTheData()
            {
                // Arrange.
                var sourceListing      = TestHelperUtilities.RentalListingFromFile(false);
                var destinationListing = TestHelperUtilities.RentalListing();

                // Act.
                destinationListing.Copy(sourceListing);

                // Assert.
                destinationListing.PropertyType.ShouldBe(sourceListing.PropertyType);
                destinationListing.IsPropertyTypeModified.ShouldBe(true);
                destinationListing.AvailableOn.ShouldBe(sourceListing.AvailableOn);
                destinationListing.IsAvailableOnModified.ShouldBe(true);

                destinationListing.Pricing.RentalPrice.ShouldBe(sourceListing.Pricing.RentalPrice);
                destinationListing.Pricing.IsRentalPriceModified.ShouldBe(true);
                destinationListing.Pricing.RentalPriceText.ShouldBe(sourceListing.Pricing.RentalPriceText);
                destinationListing.Pricing.IsRentalPriceTextModified.ShouldBe(true);
                destinationListing.Pricing.PaymentFrequencyType.ShouldBe(sourceListing.Pricing.PaymentFrequencyType);
                destinationListing.Pricing.IsPaymentFrequencyTypeModified.ShouldBe(true);
                destinationListing.Pricing.Bond.ShouldBe(sourceListing.Pricing.Bond);
                destinationListing.Pricing.IsBondModified.ShouldBe(true);
                destinationListing.IsPricingModified.ShouldBe(true);

                destinationListing.BuildingDetails.Area.Type.ShouldBe(sourceListing.BuildingDetails.Area.Type);
                destinationListing.BuildingDetails.Area.IsTypeModified.ShouldBe(true);
                destinationListing.BuildingDetails.Area.Value.ShouldBe(sourceListing.BuildingDetails.Area.Value);
                destinationListing.BuildingDetails.Area.IsValueModified.ShouldBe(true);
                destinationListing.BuildingDetails.IsAreaModified.ShouldBe(true);
                destinationListing.BuildingDetails.EnergyRating.ShouldBe(sourceListing.BuildingDetails.EnergyRating);
                destinationListing.BuildingDetails.IsEnergyRatingModified.ShouldBe(true);
                destinationListing.IsBuildingDetailsModified.ShouldBe(true);
            }
Ejemplo n.º 4
0
            public void GivenAnExistingListingAndANewListingWithEverythingModified_Copy_CopiesOverTheData()
            {
                // Arrange.
                var sourceListing      = TestHelperUtilities.RuralListing(false);
                var destinationListing = TestHelperUtilities.RuralListingFromFile();

                // Act.
                destinationListing.Copy(sourceListing);

                // Assert.
                destinationListing.CategoryType.ShouldBe(sourceListing.CategoryType);
                destinationListing.IsCategoryTypeModified.ShouldBe(true);
                destinationListing.AuctionOn.ShouldBe(sourceListing.AuctionOn);
                destinationListing.IsAuctionOnModified.ShouldBe(true);
                destinationListing.CouncilRates.ShouldBe(sourceListing.CouncilRates);
                destinationListing.IsCouncilRatesModified.ShouldBe(true);

                destinationListing.Pricing.SalePrice.ShouldBe(sourceListing.Pricing.SalePrice);
                destinationListing.Pricing.SalePriceText.ShouldBe(sourceListing.Pricing.SalePriceText);
                destinationListing.Pricing.IsUnderOffer.ShouldBe(sourceListing.Pricing.IsUnderOffer);
                destinationListing.Pricing.SoldOn.ShouldBe(sourceListing.Pricing.SoldOn);
                destinationListing.Pricing.IsSoldOnModified.ShouldBe(true);
                destinationListing.Pricing.SoldPrice.ShouldBe(sourceListing.Pricing.SoldPrice);
                destinationListing.Pricing.IsSoldPriceModified.ShouldBe(true);
                destinationListing.Pricing.SoldPriceText.ShouldBe(sourceListing.Pricing.SoldPriceText);
                destinationListing.Pricing.IsSoldPriceTextModified.ShouldBe(true);
                destinationListing.IsPricingModified.ShouldBe(true);

                destinationListing.BuildingDetails.Area.Type.ShouldBe(sourceListing.BuildingDetails.Area.Type);
                destinationListing.BuildingDetails.Area.IsTypeModified.ShouldBe(true);
                destinationListing.BuildingDetails.Area.Value.ShouldBe(sourceListing.BuildingDetails.Area.Value);
                destinationListing.BuildingDetails.Area.IsValueModified.ShouldBe(true);
                destinationListing.BuildingDetails.IsAreaModified.ShouldBe(true);
                destinationListing.BuildingDetails.EnergyRating.ShouldBe(sourceListing.BuildingDetails.EnergyRating);
                destinationListing.BuildingDetails.IsEnergyRatingModified.ShouldBe(true);
                destinationListing.IsBuildingDetailsModified.ShouldBe(true);

                destinationListing.RuralFeatures.AnnualRainfall.ShouldBe(sourceListing.RuralFeatures.AnnualRainfall);
                destinationListing.RuralFeatures.IsAnnualRainfallModified.ShouldBe(true);
                destinationListing.RuralFeatures.CarryingCapacity.ShouldBe(sourceListing.RuralFeatures.CarryingCapacity);
                destinationListing.RuralFeatures.IsCarryingCapacityModified.ShouldBe(true);
                destinationListing.RuralFeatures.Fencing.ShouldBe(sourceListing.RuralFeatures.Fencing);
                destinationListing.RuralFeatures.IsFencingModified.ShouldBe(true);
                destinationListing.RuralFeatures.Improvements.ShouldBe(sourceListing.RuralFeatures.Improvements);
                destinationListing.RuralFeatures.IsImprovementsModified.ShouldBe(true);
                destinationListing.RuralFeatures.Irrigation.ShouldBe(sourceListing.RuralFeatures.Irrigation);
                destinationListing.RuralFeatures.IsIrrigationModified.ShouldBe(true);
                destinationListing.RuralFeatures.Services.ShouldBe(sourceListing.RuralFeatures.Services);
                destinationListing.RuralFeatures.IsServicesModified.ShouldBe(true);
                destinationListing.RuralFeatures.SoilTypes.ShouldBe(sourceListing.RuralFeatures.SoilTypes);
                destinationListing.RuralFeatures.IsSoilTypesModified.ShouldBe(true);
                destinationListing.IsRuralFeaturesModified.ShouldBe(true);
            }
            public void GivenAnExistingListingAndBuildingDetailsEnergyRatingUpdated_IsBuildingDetailsModified_ReturnsTrue()
            {
                // Arrange.
                var listing = TestHelperUtilities.RentalListingFromFile();

                listing.IsBuildingDetailsModified.ShouldBe(false);

                // Act.
                listing.BuildingDetails.EnergyRating = 3;

                // Assert.
                listing.IsBuildingDetailsModified.ShouldBe(true);
            }
            public void GivenAnExistingListingAndIdUpdated_IsModified_ReturnsTrue()
            {
                // Arrange.
                var listing = TestHelperUtilities.RentalListingFromFile();

                listing.IsModified.ShouldBe(false);

                // Act.
                listing.Id = "pewpew";

                // Assert.
                listing.IsModified.ShouldBe(true);
            }
            public void GivenAnExistingListingAndPricingRentalPriceUpdated_IsPricingModified_ReturnsTrue()
            {
                // Arrange.
                var listing = TestHelperUtilities.RentalListingFromFile();

                listing.IsPricingModified.ShouldBe(false);

                // Act.
                listing.Pricing.RentalPrice = 30;

                // Assert.
                listing.IsPricingModified.ShouldBe(true);
            }
Ejemplo n.º 8
0
            public void GivenAnExistingListingAndChangingAnAgentAfterwards_Copy_TheAgentsAreNotBothUpdated()
            {
                // Arrange.
                var sourceListing      = TestHelperUtilities.ResidentialListing(false);
                var destinationListing = TestHelperUtilities.ResidentialListingFromFile();

                // Act.
                destinationListing.Copy(sourceListing);
                destinationListing.Agents.First().Name = "I'm a Princess";

                // Assert.
                destinationListing.Agents.First().Name.ShouldNotBe(sourceListing.Agents.First().Name);
            }
Ejemplo n.º 9
0
            public void GivenAnExistingListingAndRuralFeaturesIdUpdated_IsRuralFeaturesModified_ReturnsTrue()
            {
                // Arrange.
                var listing = TestHelperUtilities.RuralListingFromFile();

                listing.IsRuralFeaturesModified.ShouldBe(false);

                // Act.
                listing.RuralFeatures.AnnualRainfall = "yeah. some";

                // Assert.
                listing.IsRuralFeaturesModified.ShouldBe(true);
            }
Ejemplo n.º 10
0
        public void GivenAnExistingListingAndTheIdIsUpdated_IsModified_ReturnsTrue()
        {
            // Arrange.
            var listing = TestHelperUtilities.LandListingFromFile();

            listing.IsModified.ShouldBe(false);
            const string id = "pewpew";

            // Act.
            listing.Id = id;

            // Arrange.
            listing.IsModified.ShouldBe(true);
        }
Ejemplo n.º 11
0
        public void GivenAnExistingListingAndPricingSalePriceUdated_IsPricingIsModified_ReturnsTrue()
        {
            // Arrange.
            var listing = TestHelperUtilities.LandListingFromFile();

            listing.IsPricingModified.ShouldBe(false);
            const decimal salePrice = 1000;

            // Act.
            listing.Pricing.SalePrice = salePrice;

            // Arrange.
            listing.IsPricingModified.ShouldBe(true);
        }
Ejemplo n.º 12
0
        public void GivenAnExistingListingAndEstateNameUpdated_IsLandEstateIsModified_ReturnsTrue()
        {
            // Arrange.
            var listing = TestHelperUtilities.LandListingFromFile();

            listing.IsEstateModified.ShouldBe(false);
            const string name = "pewpew";

            // Act.
            listing.Estate.Name = name;

            // Arrange.
            listing.IsEstateModified.ShouldBe(true);
        }
            public void GivenABuildingDetailsWithAnExistingAreaAndTheAreaValueIsUpdated_AreaIsModified_ReturnsTrue()
            {
                // Arrange.
                var listing = TestHelperUtilities.ResidentialListingFromFile();

                listing.BuildingDetails.IsModified.ShouldBe(false);
                const decimal value = 2;

                // Act.
                listing.BuildingDetails.Area.Value = value;

                // Assert.
                listing.BuildingDetails.IsModified.ShouldBe(true);
            }
            public void GivenAListingWithAnExistingBuildingDetailsAndTheEnergyRatingIsUpdated_IsBuildingDetailsIsModified_ReturnsTrue()
            {
                // Arrange.
                var listing = TestHelperUtilities.ResidentialListingFromFile();

                listing.IsBuildingDetailsModified.ShouldBe(false);
                const decimal energyRating = 1;

                // Act.
                listing.BuildingDetails.EnergyRating = energyRating;

                // Assert.
                listing.BuildingDetails.EnergyRating.ShouldBe(energyRating);
                listing.IsBuildingDetailsModified.ShouldBe(true);
            }
Ejemplo n.º 15
0
            public void GivenAListingAndAnIdUpdated_IsModified_ReturnsTrue()
            {
                // Arrange.
                var listing = TestHelperUtilities.ResidentialListingFromFile();

                listing.IsModified.ShouldBe(false);
                const string id = "1111";

                // Act.
                listing.Id = id;

                // Arrange.
                listing.Id.ShouldBe(id);
                listing.IsModified.ShouldBe(true);
            }
            public void GivenAListingWithAnExistingPricingAndTheSalePriceIsUpdated_IsPricingIsModified_ReturnsTrue()
            {
                // Arrange.
                var listing = TestHelperUtilities.ResidentialListingFromFile();

                listing.IsPricingModified.ShouldBe(false);
                const decimal salePrice = 1;

                // Act.
                listing.Pricing.SalePrice = salePrice;

                // Assert.
                listing.Pricing.SalePrice.ShouldBe(salePrice);
                listing.IsPricingModified.ShouldBe(true);
            }
Ejemplo n.º 17
0
            public void GivenAListingWithAnExistingFeaturesAndABathroomsUpdated_IsFeaturesIsModified_ReturnsTrue()
            {
                // Arrange.
                var listing = TestHelperUtilities.ResidentialListingFromFile();

                listing.IsFeaturesModified.ShouldBe(false);
                const int bathrooms = 33;

                // Act.
                listing.Features.Bathrooms = bathrooms;

                // Arrange.
                listing.Features.Bathrooms.ShouldBe(bathrooms);
                listing.IsFeaturesModified.ShouldBe(true);
            }
Ejemplo n.º 18
0
            public void GivenAListingWithAnExistingFeaturesAndABathroomsUpdated_IsFeaturesIsModified_ReturnsTrue()
            {
                // Arrange.
                var listing = TestHelperUtilities.ResidentialListingFromFile();

                listing.IsLandDetailsModified.ShouldBe(false);
                const string crossOver = "pewpew";

                // Act.
                listing.LandDetails.CrossOver = crossOver;

                // Arrange.
                listing.LandDetails.CrossOver.ShouldBe(crossOver);
                listing.IsLandDetailsModified.ShouldBe(true);
            }
Ejemplo n.º 19
0
            public void GivenAListingWithAnExistingAddressAndAStreetUpdated_IsAddressIsModified_ReturnsTrue()
            {
                // Arrange.
                var listing = TestHelperUtilities.ResidentialListingFromFile();

                listing.IsAddressModified.ShouldBe(false);
                const string street = "pewpew";

                // Act.
                listing.Address.Street = street;

                // Arrange.
                listing.Address.Street.ShouldBe(street);
                listing.IsAddressModified.ShouldBe(true);
            }
            public void GivenAnExistingListingAndANewListingWithANullValues_Copy_CopiesOverTheData()
            {
                // Arrange.
                var sourceListing = TestHelperUtilities.ResidentialListingFromFile();

                sourceListing.BuildingDetails = null;
                sourceListing.Pricing         = null;

                var destinationListing = TestHelperUtilities.ResidentialListingFromFile();

                // Act.
                destinationListing.Copy(sourceListing);

                // Assert.
                destinationListing.BuildingDetails.ShouldBe(null);
                destinationListing.IsBuildingDetailsModified.ShouldBe(true);
                destinationListing.Pricing.ShouldBe(null);
                destinationListing.IsPricingModified.ShouldBe(true);
            }
Ejemplo n.º 21
0
            public void GivenAnExistingListing_Copy_CopiesOverTheData()
            {
                // Arrange.
                var sourceListing = TestHelperUtilities.ResidentialListingFromFile(false) as AggregateRoot;

                sourceListing.Id        = "2140F1E6-EF8B-45D4-82FB-90940A3F1D90";
                sourceListing.UpdatedOn = DateTime.UtcNow;

                var destinationListing = TestHelperUtilities.ResidentialListingFromFile() as AggregateRoot;

                // Act.
                destinationListing.Copy(sourceListing);

                // Assert.
                destinationListing.Id.ShouldBe(sourceListing.Id);
                destinationListing.IsIdModified.ShouldBe(true);
                destinationListing.UpdatedOn.ShouldBe(sourceListing.UpdatedOn);
                destinationListing.IsUpdatedOnModified.ShouldBe(true);
            }
Ejemplo n.º 22
0
        public void GivenAnExistingListingAndANewListingWithANullValues_Copy_CopiesOverTheData()
        {
            // Arrange.
            var sourceListing = TestHelperUtilities.LandListingFromFile();

            sourceListing.Estate  = null;
            sourceListing.Pricing = null;

            var destinationListing = TestHelperUtilities.LandListing();

            // Act.
            destinationListing.Copy(sourceListing);

            // Assert.
            destinationListing.Estate.ShouldBe(null);
            destinationListing.IsEstateModified.ShouldBe(true);
            destinationListing.Pricing.ShouldBe(null);
            destinationListing.IsPricingModified.ShouldBe(true);
        }
Ejemplo n.º 23
0
            public void GivenAnExistingListingAndANewListingWithANullValues_Copy_CopiesOverTheData()
            {
                // Arrange.
                var sourceListing = TestHelperUtilities.ResidentialListingFromFile();

                sourceListing.Agents      = null;
                sourceListing.Address     = null;
                sourceListing.Features    = null;
                sourceListing.FloorPlans  = null;
                sourceListing.Images      = null;
                sourceListing.Inspections = null;
                sourceListing.LandDetails = null;
                sourceListing.Links       = null;
                sourceListing.Videos      = null;

                var destinationListing = TestHelperUtilities.ResidentialListingFromFile();

                // Act.
                destinationListing.Copy(sourceListing);

                // Assert.
                destinationListing.Agents.ShouldBe(null);
                destinationListing.IsAgentsModified.ShouldBe(true);
                destinationListing.Address.ShouldBe(null);
                destinationListing.IsAddressModified.ShouldBe(true);
                destinationListing.Features.ShouldBe(null);
                destinationListing.IsFeaturesModified.ShouldBe(true);
                destinationListing.FloorPlans.ShouldBe(null);
                destinationListing.IsFloorPlansModified.ShouldBe(true);
                destinationListing.Images.ShouldBe(null);
                destinationListing.IsImagesModified.ShouldBe(true);
                destinationListing.Inspections.ShouldBe(null);
                destinationListing.IsInspectionsModified.ShouldBe(true);
                destinationListing.LandDetails.ShouldBe(null);
                destinationListing.IsLandDetailsModified.ShouldBe(true);
                destinationListing.Links.ShouldBe(null);
                destinationListing.IsLinksModified.ShouldBe(true);
                destinationListing.Videos.ShouldBe(null);
                destinationListing.IsVideosModified.ShouldBe(true);
            }
            public void GivenAnExistingListingAndANewListingWithEverythingModified_Copy_CopiesOverTheData()
            {
                // Arrange.
                var sourceListing      = TestHelperUtilities.ResidentialListing(false);
                var destinationListing = TestHelperUtilities.ResidentialListingFromFile();

                // Act.
                destinationListing.Copy(sourceListing);

                // Assert.
                destinationListing.AuctionOn.ShouldBe(sourceListing.AuctionOn);
                destinationListing.IsAuctionOnModified.ShouldBe(true);
                destinationListing.CouncilRates.ShouldBe(sourceListing.CouncilRates);
                destinationListing.IsCouncilRatesModified.ShouldBe(true);
                destinationListing.PropertyType.ShouldBe(sourceListing.PropertyType);
                destinationListing.IsPropertyTypeModified.ShouldBe(true);

                destinationListing.BuildingDetails.Area.Type.ShouldBe(sourceListing.BuildingDetails.Area.Type);
                destinationListing.BuildingDetails.Area.IsTypeModified.ShouldBe(true);
                destinationListing.BuildingDetails.Area.Value.ShouldBe(sourceListing.BuildingDetails.Area.Value);
                destinationListing.BuildingDetails.Area.IsValueModified.ShouldBe(true);
                destinationListing.BuildingDetails.IsAreaModified.ShouldBe(true);
                destinationListing.BuildingDetails.EnergyRating.ShouldBe(sourceListing.BuildingDetails.EnergyRating);
                destinationListing.BuildingDetails.IsEnergyRatingModified.ShouldBe(true);
                destinationListing.IsBuildingDetailsModified.ShouldBe(true);

                destinationListing.Pricing.SalePrice.ShouldBe(sourceListing.Pricing.SalePrice);
                destinationListing.Pricing.SalePriceText.ShouldBe(sourceListing.Pricing.SalePriceText);
                destinationListing.Pricing.IsUnderOffer.ShouldBe(sourceListing.Pricing.IsUnderOffer);
                destinationListing.Pricing.SoldOn.ShouldBe(sourceListing.Pricing.SoldOn);
                destinationListing.Pricing.IsSoldOnModified.ShouldBe(true);
                destinationListing.Pricing.SoldPrice.ShouldBe(sourceListing.Pricing.SoldPrice);
                destinationListing.Pricing.IsSoldPriceModified.ShouldBe(true);
                destinationListing.Pricing.SoldPriceText.ShouldBe(sourceListing.Pricing.SoldPriceText);
                destinationListing.Pricing.IsSoldPriceTextModified.ShouldBe(true);
                destinationListing.IsPricingModified.ShouldBe(true);
            }
Ejemplo n.º 25
0
            public void GivenAnExistingListingAndANewListingWithEverythingModified_Copy_CopiesOverTheData()
            {
                // Arrange.
                var sourceListing = TestHelperUtilities.ResidentialListingFromFile(false) as Listing;

                var destinationListing = TestHelperUtilities.ResidentialListing() as Listing;

                // Act.
                destinationListing.Copy(sourceListing);

                // Assert.
                destinationListing.AgencyId.ShouldBe(sourceListing.AgencyId);
                destinationListing.IsAgencyIdModified.ShouldBe(true);
                destinationListing.CreatedOn.ShouldBe(sourceListing.CreatedOn);
                destinationListing.IsCreatedOnModified.ShouldBe(true);
                destinationListing.Description.ShouldBe(sourceListing.Description);
                destinationListing.IsDescriptionModified.ShouldBe(true);
                destinationListing.Id.ShouldBe(sourceListing.Id);
                destinationListing.IsIdModified.ShouldBe(true);
                destinationListing.StatusType.ShouldBe(sourceListing.StatusType);
                destinationListing.IsStatusTypeModified.ShouldBe(true);
                destinationListing.Title.ShouldBe(sourceListing.Title);
                destinationListing.IsTitleModified.ShouldBe(true);

                destinationListing.Address.CountryIsoCode.ShouldBe(sourceListing.Address.CountryIsoCode);
                destinationListing.Address.IsCountryIsoCodeModified.ShouldBe(true);
                destinationListing.Address.IsStreetDisplayed.ShouldBe(sourceListing.Address.IsStreetDisplayed);
                destinationListing.Address.IsIsStreetDisplayedModified.ShouldBe(true);
                destinationListing.Address.Latitude.ShouldBe(sourceListing.Address.Latitude);
                destinationListing.Address.IsLatitudeModified.ShouldBe(true);
                destinationListing.Address.Longitude.ShouldBe(sourceListing.Address.Longitude);
                destinationListing.Address.IsLongitudeModified.ShouldBe(true);
                destinationListing.Address.Municipality.ShouldBe(sourceListing.Address.Municipality);
                destinationListing.Address.IsMunicipalityModified.ShouldBe(true);
                destinationListing.Address.Postcode.ShouldBe(sourceListing.Address.Postcode);
                destinationListing.Address.IsPostcodeModified.ShouldBe(true);
                destinationListing.Address.State.ShouldBe(sourceListing.Address.State);
                destinationListing.Address.IsStateModified.ShouldBe(true);
                destinationListing.Address.Street.ShouldBe(sourceListing.Address.Street);
                destinationListing.Address.IsStreetModified.ShouldBe(true);
                destinationListing.Address.StreetNumber.ShouldBe(sourceListing.Address.StreetNumber);
                destinationListing.Address.IsStreetNumberModified.ShouldBe(true);
                destinationListing.Address.Suburb.ShouldBe(sourceListing.Address.Suburb);
                destinationListing.Address.IsSuburbModified.ShouldBe(true);
                destinationListing.IsAddressModified.ShouldBe(true);

                for (int i = 0; i < destinationListing.Agents.Count; i++)
                {
                    destinationListing.Agents[i].Name.ShouldBe(sourceListing.Agents[i].Name);
                    destinationListing.Agents[i].IsNameModified.ShouldBe(true);
                    destinationListing.Agents[i].Order.ShouldBe(sourceListing.Agents[i].Order);
                    destinationListing.Agents[i].IsOrderModified.ShouldBe(true);
                    for (int j = 0; j < destinationListing.Agents[i].Communications.Count; j++)
                    {
                        destinationListing.Agents[i].Communications[j].CommunicationType.ShouldBe(
                            sourceListing.Agents[i].Communications[j].CommunicationType);
                        destinationListing.Agents[i].Communications[j].IsCommunicationTypeModified.ShouldBe(true);
                        destinationListing.Agents[i].Communications[j].Details.ShouldBe(
                            sourceListing.Agents[i].Communications[j].Details);
                        destinationListing.Agents[i].Communications[j].IsDetailsModified.ShouldBe(true);
                    }
                    destinationListing.Agents[i].IsCommunicationsModified.ShouldBe(true);
                    destinationListing.IsAgentsModified.ShouldBe(true);
                }

                destinationListing.Features.Bathrooms.ShouldBe(sourceListing.Features.Bathrooms);
                destinationListing.Features.IsBathroomsModified.ShouldBe(true);
                destinationListing.Features.Bedrooms.ShouldBe(sourceListing.Features.Bedrooms);
                destinationListing.Features.IsBedroomsModified.ShouldBe(true);
                destinationListing.Features.Ensuites.ShouldBe(sourceListing.Features.Ensuites);
                destinationListing.Features.IsEnsuitesModified.ShouldBe(true);
                destinationListing.Features.LivingAreas.ShouldBe(sourceListing.Features.LivingAreas);
                destinationListing.Features.IsLivingAreasModified.ShouldBe(true);
                destinationListing.Features.Tags.SetEquals(sourceListing.Features.Tags);
                destinationListing.Features.IsTagsModified.ShouldBe(true);
                destinationListing.Features.Toilets.ShouldBe(sourceListing.Features.Toilets);
                destinationListing.Features.IsToiletsModified.ShouldBe(true);
                destinationListing.IsFeaturesModified.ShouldBe(true);

                destinationListing.Features.CarParking.Garages.ShouldBe(sourceListing.Features.CarParking.Garages);
                destinationListing.Features.IsCarParkingModified.ShouldBe(true);
                destinationListing.Features.CarParking.Carports.ShouldBe(sourceListing.Features.CarParking.Carports);
                destinationListing.Features.IsCarParkingModified.ShouldBe(true);
                destinationListing.Features.CarParking.OpenSpaces.ShouldBe(sourceListing.Features.CarParking.OpenSpaces);
                destinationListing.Features.CarParking.IsOpenSpacesModified.ShouldBe(true);

                TestHelperUtilities.AssertMediaItems(destinationListing.FloorPlans, sourceListing.FloorPlans);
                destinationListing.IsFloorPlansModified.ShouldBe(true);

                TestHelperUtilities.AssertMediaItems(destinationListing.Images, sourceListing.Images);
                destinationListing.IsImagesModified.ShouldBe(true);

                for (int i = 0; i < destinationListing.Inspections.Count; i++)
                {
                    destinationListing.Inspections[0].OpensOn.ShouldBe(sourceListing.Inspections[0].OpensOn);
                    destinationListing.Inspections[0].IsOpensOnModified.ShouldBe(true);
                    destinationListing.Inspections[0].ClosesOn.ShouldBe(sourceListing.Inspections[0].ClosesOn);
                    destinationListing.Inspections[0].IsClosesOnModified.ShouldBe(true);
                }
                destinationListing.IsInspectionsModified.ShouldBe(true);

                destinationListing.LandDetails.Area.Type.ShouldBe(sourceListing.LandDetails.Area.Type);
                destinationListing.LandDetails.Area.IsTypeModified.ShouldBe(true);
                destinationListing.LandDetails.Area.Value.ShouldBe(sourceListing.LandDetails.Area.Value);
                destinationListing.LandDetails.Area.IsValueModified.ShouldBe(true);
                destinationListing.LandDetails.CrossOver.ShouldBe(sourceListing.LandDetails.CrossOver);
                destinationListing.LandDetails.IsCrossOverModified.ShouldBe(true);
                for (int i = 0; i < destinationListing.LandDetails.Depths.Count; i++)
                {
                    destinationListing.LandDetails.Depths[i].Type.ShouldBe(sourceListing.LandDetails.Depths[i].Type);
                    destinationListing.LandDetails.Depths[i].IsTypeModified.ShouldBe(true);
                    destinationListing.LandDetails.Depths[i].Value.ShouldBe(sourceListing.LandDetails.Depths[i].Value);
                    destinationListing.LandDetails.Depths[i].IsValueModified.ShouldBe(true);
                    destinationListing.LandDetails.Depths[i].Side.ShouldBe(sourceListing.LandDetails.Depths[i].Side);
                    destinationListing.LandDetails.Depths[i].IsSideModified.ShouldBe(true);
                }
                destinationListing.LandDetails.IsDepthsModified.ShouldBe(true);
                destinationListing.LandDetails.Frontage.Type.ShouldBe(sourceListing.LandDetails.Frontage.Type);
                destinationListing.LandDetails.Frontage.IsTypeModified.ShouldBe(true);
                destinationListing.LandDetails.Frontage.Value.ShouldBe(sourceListing.LandDetails.Frontage.Value);
                destinationListing.LandDetails.IsFrontageModified.ShouldBe(true);
                destinationListing.IsLandDetailsModified.ShouldBe(true);

                for (int i = 0; i < destinationListing.Links.Count; i++)
                {
                    destinationListing.Links[i].ShouldBe(sourceListing.Links[i]);
                }
                destinationListing.IsLinksModified.ShouldBe(true);

                TestHelperUtilities.AssertMediaItems(destinationListing.Videos, sourceListing.Videos);
                destinationListing.IsImagesModified.ShouldBe(true);
            }