Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #10
0
        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);
        }
Example #11
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>());
        }
Example #13
0
 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,
     });
 }
Example #14
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);
        }
Example #17
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);
        }
Example #18
0
        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);
        }
Example #19
0
        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);
        }
Example #22
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);
        }
Example #23
0
        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);
        }
Example #24
0
        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);
        }
Example #25
0
        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));
 }