Ejemplo n.º 1
0
        /// <summary>
        /// Gets the filtered people with their countries.
        /// </summary>
        /// <param name="filter">The filter.</param>
        /// <returns></returns>
        public IEnumerable <DtoModels.Person> GetFilteredPeopleWithTheirCountries(DtoModels.PersonFilter filter)
        {
            var lastName      = filter.LastName;
            var startBirthday = filter.StartBirthday;
            var endBirthday   = filter.EndBirthday;
            var countryId     = filter.Country?.Id;

            var personDbModels = _repository.GetFilteredPeopleWithTheirCountries(lastName, startBirthday, endBirthday, countryId);

            var personDtoModels = personDbModels.Select(p => (DtoModels.Person)p.ConvertToDtoModel()).ToList();

            return(personDtoModels);
        }
        public void GetFilteredPeopleWithTheirCountriesByFullFilters()
        {
            // Arrange
            var unitOfWorkFactoryMock = new Mock <IUnitOfWorkFactory <NotebookDbContext> >();
            var personRepositoryMock  = new Mock <IPersonRepository>();

            var testPeople = GetTestPeople().ToList();

            personRepositoryMock.Setup(r => r.GetAllPeopleWithTheirCountries()).Returns(testPeople);

            var personService = new PersonService(unitOfWorkFactoryMock.Object, personRepositoryMock.Object);

            var firstTestPerson = testPeople.First();

            var filter = new DtoModels.PersonFilter
            {
                LastName      = firstTestPerson.LastName[firstTestPerson.LastName.Length - 1].ToString(),
                EndBirthday   = firstTestPerson.Birthday + TimeSpan.FromDays(10),
                StartBirthday = firstTestPerson.Birthday - TimeSpan.FromDays(10),
                Country       = new DtoModels.Country
                {
                    Id   = firstTestPerson.Country.Id,
                    Name = firstTestPerson.Country.Name
                }
            };

            // Act
            var result = personService.GetFilteredPeopleWithTheirCountries(filter);

            // Assert
            Assert.All(result, item => Assert.NotNull(item));
            Assert.All(result, item => Assert.NotNull(item.Birthday));
            Assert.All(result, item => Assert.NotNull(item.Country));
            Assert.All(result, item => Assert.Contains(item.LastName, filter.LastName));
            Assert.All(result, item => Assert.InRange(item.Birthday.Value, filter.StartBirthday.Value, filter.EndBirthday.Value));
            Assert.All(result, item => Assert.Equal(item.Country.Id, filter.Country.Id));
        }