public void OnePublicAdsOneQualityAdTest() { var ad1 = new AdVO { Typology = "GARAGE", Description = "Garaje de prueba", Pictures = new List <int>(), HouseSize = 150, Score = 40 }; var ad2 = new AdVO { Typology = "GARAGE", Description = "Garaje de prueba 2", Pictures = new List <int>(), HouseSize = 150, Score = 39, IrrelevantSince = DateTime.Now }; _adRepository.Save(ad1); _adRepository.Save(ad2); var dataPublic = _service.GetPublicAds(); Assert.NotNull(dataPublic); Assert.True(dataPublic.Count == 1); Assert.True(dataPublic[0].Description == "Garaje de prueba"); var dataQuality = _service.GetQualityAds(); Assert.NotNull(dataQuality); Assert.True(dataQuality.Count == 10); Assert.True(dataQuality.First(c => c.Id == ad2.Id).Description == "Garaje de prueba 2"); _adRepository.Delete(ad1); _adRepository.Delete(ad2); }
public void DescriptionRuleTest() { var rule = new DescriptionRule(); var ad1 = new AdVO { Typology = "GARAGE", Description = "Garaje de prueba", Pictures = new List <int>(), HouseSize = 150, Score = 40 }; Assert.True(rule.Calculate(ad1) == 5); var ad2 = new AdVO { Typology = "GARAGE", Pictures = new List <int>(), HouseSize = 150, Score = 40 }; Assert.True(rule.Calculate(ad2) == 0); var ad3 = new AdVO { Typology = "GARAGE", Description = "", Pictures = new List <int>(), HouseSize = 150, Score = 40 }; Assert.True(rule.Calculate(ad3) == 0); var ad4 = new AdVO { Typology = "GARAGE", Description = " ", Pictures = new List <int>(), HouseSize = 150, Score = 40 }; Assert.True(rule.Calculate(ad4) == 0); }
public void Set_Min_Score_By_No_Picture_Test() { var ad = new AdVO(1, Enums.Typology.CHALET, "Test Description", null, 100); ad.Should().NotBeNull(); ad.PictureIds.Should().BeNullOrEmpty(); ad.Score.Should().BeGreaterOrEqualTo(5); }
public void Set_Score_By_Description_Test() { var ad = new AdVO(1, Enums.Typology.CHALET, "Test Description", null, 0); ad.Should().NotBeNull(); ad.Description.Should().NotBeNull(); ad.Score.Should().BeGreaterOrEqualTo(5); }
public void Set_Score_By_Description_more_than_50_Chalet_Test() { var ad = new AdVO(1, Enums.Typology.FLAT, "Test Description with minimun 49 characters CHALET", null, 0); ad.Should().NotBeNull(); ad.Description.Should().NotBeNull(); ad.Score.Should().BeGreaterOrEqualTo(25); }
public void Set_Score_By_Description_Specific_Word(string description) { var ad = new AdVO(1, Enums.Typology.FLAT, description, null, 0); ad.Should().NotBeNull(); ad.Description.Should().NotBeNull(); ad.Score.Should().BeGreaterOrEqualTo(15); }
public void Set_Score_By_Description_less_than_50_and_greater_than_20_Test() { var ad = new AdVO(1, Enums.Typology.FLAT, "Test Description with minimun 49 characters CH", null, 0); ad.Should().NotBeNull(); ad.Description.Should().NotBeNull(); ad.Score.Should().BeGreaterOrEqualTo(15); }
public void Set_Score_By_Pictures_Test() { var ad = new AdVO(1, Enums.Typology.CHALET, "Test Description", new List <int>() { 1, 2 }, 100); ad.Should().NotBeNull(); ad.Score.Should().BeGreaterOrEqualTo(40); }
public void Set_Score_By_Full_Data_Test(Enums.Typology typology, int homeSize, int gardenSize) { var ad = new AdVO(1, typology, "Test Description with minimun 49 characters CHALET", new List <int> { 1, 2 }, homeSize, gardenSize); ad.Should().NotBeNull(); ad.Description.Should().NotBeNull(); ad.Score.Should().BeGreaterOrEqualTo(40); }
public void AdCompleteTest() { var rule = new AdCompleteRule(); var ad1 = new AdVO { Typology = "GARAGE", Description = "Garaje de prueba", Pictures = new List <int>(), HouseSize = 150, Score = 40 }; Assert.True(rule.Calculate(ad1) == 0); var ad2 = new AdVO { Typology = "GARAGE", Pictures = new List <int>() { 1 } }; Assert.True(rule.Calculate(ad2) == 40); var ad3 = new AdVO { Typology = "FLAT", Description = "Descripcion de prueba", Pictures = new List <int> { 1 }, HouseSize = 100 }; Assert.True(rule.Calculate(ad3) == 40); var ad4 = new AdVO { Typology = "FLAT", Description = "Descripcion de prueba", Pictures = new List <int> { 1 } }; Assert.True(rule.Calculate(ad4) == 0); var ad5 = new AdVO { Typology = "CHALET", Description = "Descripcion de prueba", Pictures = new List <int>(), HouseSize = 100 }; Assert.True(rule.Calculate(ad5) == 0); var ad6 = new AdVO { Typology = "CHALET", Description = "Descripcion de prueba", Pictures = new List <int> { 1 }, HouseSize = 100, GardenSize = 50 }; Assert.True(rule.Calculate(ad6) == 40); var ad7 = new AdVO { Typology = "CHALET", Description = "Descripcion de prueba", HouseSize = 100, GardenSize = 50 }; Assert.True(rule.Calculate(ad7) == 0); }
public int Calculate(AdVO ad) { if (string.IsNullOrEmpty(ad.Description)) { return(0); } var trimmedDescription = ad.Description.Trim(); return(trimmedDescription.Length == 0 ? 0 : 5); }
private IEnumerable <Uri> GetUrls(AdVO src, IEnumerable <PictureVO> pictures) { var adPictures = pictures.Where(p => src.PictureIds.Contains(p.Id)); if (adPictures != null && adPictures.Any()) { return(adPictures.Select(ap => ap.Url)); } return(Enumerable.Empty <Uri>()); }
private PublicAd TransformAdToPublicAd(AdVO ad) { return(new PublicAd { Id = ad.Id, Typology = ad.Typology, Description = ad.Description, PictureUrls = _picturesRepository.GetPictures(ad.Pictures).Where(c => c.Url != null).Select(c => c.Url).ToList(), HouseSize = ad.HouseSize ?? 0, GardenSize = ad.GardenSize ?? 0, }); }
public void WordsAppearanceTest() { var rule = new WordAppearanceRule(); var ad1 = new AdVO { Typology = "GARAGE", Description = "Garaje de prueba", Pictures = new List <int>(), HouseSize = 150, Score = 40 }; Assert.True(rule.Calculate(ad1) == 0); var ad2 = new AdVO { Typology = "GARAGE", Description = "Garaje de prueba siendo luminoso", Pictures = new List <int>(), HouseSize = 150, Score = 40 }; Assert.True(rule.Calculate(ad2) == 5); var ad3 = new AdVO { Typology = "GARAGE", Description = "Garaje de prueba siendo luminoso y nuevo y otra vez luminoso", Pictures = new List <int>(), HouseSize = 150, Score = 40 }; Assert.True(rule.Calculate(ad3) == 10); var ad4 = new AdVO { Typology = "GARAGE", Description = "Garaje de prueba céntrico siendo luminoso y nuevo", Pictures = new List <int>(), HouseSize = 150, Score = 40 }; Assert.True(rule.Calculate(ad4) == 15); var ad5 = new AdVO { Typology = "GARAGE", Description = "Garaje de prueba centrico siendo luminoso y nuevo", Pictures = new List <int>(), HouseSize = 150, Score = 40 }; Assert.True(rule.Calculate(ad5) == 10); var ad6 = new AdVO { Typology = "GARAGE", Description = "Garaje de prueba céntrico siendo luminoso y nuevo pero no reformado", Pictures = new List <int>(), HouseSize = 150, Score = 40 }; Assert.True(rule.Calculate(ad6) == 20); var ad7 = new AdVO { Typology = "GARAGE", Description = "Garaje de prueba céntrico siendo luminoso y nuevo pero no reformado en el ático del garaje", Pictures = new List <int>(), HouseSize = 150, Score = 40 }; Assert.True(rule.Calculate(ad7) == 25); var ad8 = new AdVO { Typology = "GARAGE", Description = "Garaje de prueba céntrico siendo luminoso y nuevo pero no reformado en el atico del garaje", Pictures = new List <int>(), HouseSize = 150, Score = 40 }; Assert.True(rule.Calculate(ad8) == 20); }
public int Calculate(AdVO ad) { if (string.IsNullOrEmpty(ad.Description)) { return(0); } var score = CheckFlatTypology(ad); score += CheckChaletTypology(ad); return(score); }
private int CheckChaletTypology(AdVO ad) { if (ad.Typology != CHALET) { return(0); } if (ad.Description.Length > 50) { return(20); } return(0); }
public int Calculate(AdVO ad) { if (ad.Pictures == null || ad.Pictures.Count() == 0) { return(-10); } var score = 0; var pictures = _picturesRepository.GetPictures(ad.Pictures); score += 20 * pictures.Count(c => c.Quality.Equals(HD)); score += 10 * pictures.Count(c => c.Quality.Equals(SD)); return(score); }
public void OnePublicAdsTest() { var ad = new AdVO { Typology = "GARAGE", Description = "Garaje de prueba", Pictures = new List <int>(), HouseSize = 150, Score = 40 }; _adRepository.Save(ad); var data = _service.GetPublicAds(); Assert.NotNull(data); Assert.True(data.Count == 1); Assert.True(data[0].Description == "Garaje de prueba"); _adRepository.Delete(ad); }
public void AddAndRemoveTest() { var ad = new AdVO { Typology = "GARAGE", Description = "Garaje de prueba", Pictures = new List <int>(), HouseSize = 150 }; _adRepository.Save(ad); var value = _adRepository.GetById(ad.Id); Assert.NotNull(value); Assert.True(value.Description == "Garaje de prueba"); _adRepository.Delete(value); Assert.Null(_adRepository.GetById(ad.Id)); }
public int Calculate(AdVO ad) { var score = 0; if (string.IsNullOrEmpty(ad.Description)) { return(score); } var descriptionToLower = ad.Description.ToLower(); foreach (var word in wordsToCheck) { score += descriptionToLower.Contains(word) ? 5 : 0; } return(score); }
private int CheckFlatTypology(AdVO ad) { if (ad.Typology != FLAT) { return(0); } if (ad.Description.Length >= 20 && ad.Description.Length < 50) { return(10); } if (ad.Description.Length >= 50) { return(30); } return(0); }
public void PictureRuleTest() { var rule = new PicturesRule(_pictureRepository); var ad1 = new AdVO { Typology = "GARAGE", Description = "Garaje de prueba", Pictures = new List <int>(), HouseSize = 150, Score = 40 }; Assert.True(rule.Calculate(ad1) == -10); var ad2 = new AdVO { Typology = "GARAGE", Description = "Garaje de prueba", Pictures = new List <int>() { 1 }, HouseSize = 150, Score = 40 }; Assert.True(rule.Calculate(ad2) == 10); var ad3 = new AdVO { Typology = "GARAGE", Description = "Garaje de prueba", Pictures = new List <int>() { 1, 2 }, HouseSize = 150, Score = 40 }; Assert.True(rule.Calculate(ad3) == 30); var ad4 = new AdVO { Typology = "GARAGE", Description = "Garaje de prueba", Pictures = new List <int>() { 4, 2 }, HouseSize = 150, Score = 40 }; Assert.True(rule.Calculate(ad4) == 40); var ad5 = new AdVO { Typology = "GARAGE", Description = "Garaje de prueba", Pictures = null, HouseSize = 150, Score = 40 }; Assert.True(rule.Calculate(ad5) == -10); }
private QualityAd TransformAdToQualityAd(AdVO ad) { var qualityAd = new QualityAd { Id = ad.Id, Typology = ad.Description, Description = ad.Description, PictureUrls = _picturesRepository.GetPictures(ad.Pictures).Select(c => c.Url).ToList(), HouseSize = ad.HouseSize ?? 0, GardenSize = ad.GardenSize ?? 0, Score = ad.Score ?? 0, }; if (ad.IrrelevantSince.HasValue) { qualityAd.IrrelevantSince = ad.IrrelevantSince.Value; } return(qualityAd); }
public void NoPublicAdsOneQualityAdTest() { var ad = new AdVO { Typology = "GARAGE", Description = "Garaje de prueba", Pictures = new List <int>(), HouseSize = 150, Score = 40 }; _adRepository.Save(ad); var dataPublic = _service.GetPublicAds(); Assert.NotNull(dataPublic); Assert.True(dataPublic.Count == 1); Assert.True(dataPublic[0].Description == "Garaje de prueba"); var dataQuality = _service.GetQualityAds(); Assert.NotNull(dataQuality); Assert.True(dataQuality.Count == 9); _adRepository.Delete(ad); }
public void RuleCalculatorTest() { var calculator = new RuleCalculator(_pictureRepository); var ad = new AdVO { Typology = "FLAT", Description = "Descripcion de prue", Pictures = new List <int> { 1 }, HouseSize = 100 }; var score = calculator.CalculateScore(ad); Assert.True(score == 55); var ad1 = new AdVO { Typology = "FLAT", Description = "Descripcion de prueba", Pictures = new List <int> { 1 }, HouseSize = 100 }; Assert.True(calculator.CalculateScore(ad1) == 65); var ad2 = new AdVO { Typology = "FLAT", Description = "Descripcion de prueba céntrico siendo luminoso y nuevo pero no reformado en el ático del garaje", Pictures = new List <int> { 1 }, HouseSize = 100 }; Assert.True(calculator.CalculateScore(ad2) == 110); var ad3 = new AdVO { Typology = "FLAT", Description = "Descripcion de prueba céntrico siendo luminoso y nuevo pero no reformado en el ático del garaje", HouseSize = 100 }; score = calculator.CalculateScore(ad3); Assert.True(score == 50); }
public void Save(AdVO ad) { _repository.SaveOrUpdate(ad); }
public void Delete(AdVO value) { _repository.Delete(value); }
public int Calculate(AdVO ad) { return(CheckTypology(ad) && CheckPictures(ad) ? 40 : 0); }
private bool CheckGarageTypology(AdVO ad) { return(ad.Typology == "GARAGE"); }
private bool CheckChaletTypology(AdVO ad) { return(ad.Typology == "CHALET" && ad.HouseSize.HasValue && ad.GardenSize.HasValue && !string.IsNullOrEmpty(ad.Description)); }