public async Task GivenLA_ResultsShouldMatchExpectations()
        {
            //Given
            var mockDataReadModel = Substitute.For <IDataReadModel>();

            mockDataReadModel.GetData().Returns(new List <string>
            {
                "LA PAZ", "LA PLATA", "LAGOS", "LEEDS"
            });

            var citySearch = new CitySearch(mockDataReadModel, new CityCharacterValidator(), new Trie());
            await citySearch.Initialise();

            var expectedResult = new CityResult
            {
                NextCities  = new[] { "LA PAZ", "LA PLATA", "LAGOS" },
                NextLetters = new[] { " ", "G" }
            };

            //When
            var results = citySearch.Search("LA");

            //Then
            results.ShouldBeEquivalentTo(expectedResult);
        }
        //1. Allow user to navigate to day1/index OR day1
        //   by creating an Index action.
        public IActionResult Index()
        {
            //7. Pass a city search model into the index view.
            var citySearch = new CitySearch();

            return(View(citySearch));
        }
        public async Task GivenZE_ResultsShouldMatchExpectations()
        {
            //Given
            var mockDataReadModel = Substitute.For <IDataReadModel>();

            mockDataReadModel.GetData().Returns(new List <string>
            {
                "ZARIA", "ZHUGHAI", "ZIBO"
            });

            var citySearch = new CitySearch(mockDataReadModel, new CityCharacterValidator(), new Trie());
            await citySearch.Initialise();

            var expectedResult = new CityResult
            {
                NextCities  = new string[0],
                NextLetters = new string[0]
            };

            //When
            var results = citySearch.Search("ZE");

            //Then
            results.ShouldBeEquivalentTo(expectedResult);
        }
Beispiel #4
0
        public async Task InvalidCharactersInSet_OnlyCitiesWithValidCharactersReturned()
        {
            //Given
            var mockDataReadModel = Substitute.For <IDataReadModel>();

            mockDataReadModel.GetData().Returns(new List <string>
            {
                "Valid", "In%Valid", "In3Valid", "Val*id"
            });

            var citySearch = new CitySearch(mockDataReadModel, new CityCharacterValidator(), new Trie());
            await citySearch.Initialise();

            var expectedResult = new CityResult
            {
                NextCities  = new[] { "Valid" },
                NextLetters = new[] { "a" }
            };

            //When
            var results = citySearch.Search("V");

            //Then
            results.ShouldBeEquivalentTo(expectedResult);
        }
Beispiel #5
0
        public async Task InvalidCasing_MatchesAreNotCaseSensitive_ReturnsMatches()
        {
            // Given
            var mockDataReadModel = Substitute.For <IDataReadModel>();

            mockDataReadModel.GetData().Returns(new List <string>
            {
                "London", "Londonderry"
            });

            var citySearch = new CitySearch(mockDataReadModel, new CityCharacterValidator(), new Trie());
            await citySearch.Initialise();

            var expectedResult = new CityResult
            {
                NextCities  = new[] { "London", "Londonderry" },
                NextLetters = new[] { "d" }
            };

            // When
            var results = citySearch.Search("lon");

            // Then
            results.ShouldBeEquivalentTo(expectedResult);
        }
Beispiel #6
0
        public async Task NextLetter_HyphenReturned_AsValidNextLetter()
        {
            // Given
            var mockDataReadModel = Substitute.For <IDataReadModel>();

            mockDataReadModel.GetData().Returns(new List <string>
            {
                "Stockton-on-Tees"
            });

            var citySearch = new CitySearch(mockDataReadModel, new CityCharacterValidator(), new Trie());
            await citySearch.Initialise();

            var expectedResult = new CityResult
            {
                NextCities  = new[] { "Stockton-on-Tees" },
                NextLetters = new[] { "-" }
            };

            // When
            var results = citySearch.Search("Stockton");

            // Then
            results.ShouldBeEquivalentTo(expectedResult);
        }
        //4. Allow the user to navigate to day1/searchresult
        //   by creating a search result action.
        //9. Have the model passed in to the result action
        public IActionResult SearchResult(CitySearch citySearch)
        {
            //11. Call the DAL to get matching cities
            var cities = dao.GetCities(citySearch.CountryCode, citySearch.District);

            //12. Pass the cities into the view
            citySearch.Results = cities;

            return(View("Index", citySearch));
        }
 public void selectCity(CityDescriptor descriptor)
 {
     foreach (CitySearch city in cityListSearch.cities)
     {
         if (city.name.Equals(descriptor.city) && city.country.Equals(descriptor.country_code))
         {
             selectedCity = city;
             break;
         }
     }
 }
Beispiel #9
0
        public void ReturnSuccess_WhenNoCityFound()
        {
            // Assign
            CitySearch citySearch = new CitySearch();

            // Act
            var result = citySearch.Search("test");

            // Assert
            Assert.AreEqual(0, result.Count);
        }
        public PagedResponse <CityQueryDto> Execute(CitySearch search)
        {
            var query = _context.Cities.Include(x => x.Locations).AsQueryable();

            if (!string.IsNullOrEmpty(search.Name) || !string.IsNullOrWhiteSpace(search.Name))
            {
                query = query.Where(x => x.Name.ToLower().Contains(search.Name.ToLower()));
            }

            return(query.Paged <CityQueryDto, City>(search, _mapper));
        }
Beispiel #11
0
        public void ReturnSuccess_WhenFoundCityWithInsensitiveCase()
        {
            // Assign
            CitySearch citySearch = new CitySearch();

            // Act
            List <string> result = citySearch.Search("une");

            // Assert
            Assert.AreEqual("Pune", result[0]);
        }
Beispiel #12
0
        public void ReturnSuccess_WhenFoundCity()
        {
            // Assign
            CitySearch citySearch = new CitySearch();

            // Act
            List <string> result = citySearch.Search("umb");

            // Assert
            Assert.AreEqual("Mumbai", result[0]);
        }
 public ActionResult <IEnumerable <CityDto> > Get([FromQuery] CitySearch citySearch)
 {
     try
     {
         var cities = _getCitiesCommand.Execute(citySearch);
         return(Ok(cities));
     }
     catch (Exception e)
     {
         return(StatusCode(500, e.Message));
     }
 }
Beispiel #14
0
        public void ReturnSuccess_WhenShortQuery()
        {
            // Assign
            CitySearch citySearch = new CitySearch();


            // Act
            List <string> result = citySearch.Search("um");


            // Assert
            Assert.AreEqual(0, result.Count);
        }
Beispiel #15
0
        public void ReturnSuccess_WhenFoundCityWithMulitpleResult()
        {
            // Assign
            CitySearch citySearch = new CitySearch();


            // Act
            List <string> result = citySearch.Search("elh");


            // Assert
            Assert.AreEqual(2, result.Count);
        }
        public IEnumerable <CityDTO> Execute(CitySearch criteria)
        {
            var query = Context.Cities.AsQueryable();

            if (criteria.CityName != null)
            {
                query = query.Where(c => c.CityName.ToLower().Contains(criteria.CityName.ToLower()) && c.Deleted == false);
            }

            if (criteria.OnlyActive.HasValue)
            {
                query = query.Where(c => c.Deleted != criteria.OnlyActive);
            }

            return(query.Include(u => u.Users).Select(c => new CityDTO
            {
                Id = c.Id,
                CityName = c.CityName,
                Users = c.Users.Select(u => u.Username)
            }));
        }
        public IEnumerable <CityDto> Execute(CitySearch request)
        {
            var query = Context.Cities.Include(c => c.Players).Include(c => c.Clubs).AsQueryable().Where(c => c.IsDeleted == false);

            if (request.Name != null)
            {
                query = query.Where(c => c.Name.ToLower().Contains(request.Name.ToLower()));
            }
            if (request.PostalCode != 0)
            {
                query = query.Where(c => c.PostalCode == request.PostalCode);
            }

            return(query.Where(c => c.IsDeleted == false).Select(c => new CityDto {
                ClubsId = c.Clubs.Select(cl => cl.Id),
                Id = c.Id,
                Name = c.Name,
                PostalCode = c.PostalCode,
                PlayersId = c.Players.Select(p => p.Id)
            }));
        }
        public async Task GivenBang_ResultsShouldMatchExpectations()
        {
            var mockDataReadModel = Substitute.For <IDataReadModel>();

            mockDataReadModel.GetData().Returns(new List <string>
            {
                "BANDUNG", "BANGUI", "BANGKOK", "BANGALORE"
            });

            var citySearch = new CitySearch(mockDataReadModel, new CityCharacterValidator(), new Trie());
            await citySearch.Initialise();

            var expectedResult = new CityResult
            {
                NextCities  = new[] { "BANGUI", "BANGKOK", "BANGALORE" },
                NextLetters = new[] { "U", "K", "A" }
            };

            var results = citySearch.Search("BANG");

            results.ShouldBeEquivalentTo(expectedResult);
        }
Beispiel #19
0
 void SearchCity()
 {
     Cities = new ObservableCollection <SelectCitiesViewModel>(
         CitiesSave.Where(n => n.Name.ToLower().Contains(CitySearch.ToLower())));
 }
Beispiel #20
0
        public override async Task <Tuple <List <Model.Response.City>, int> > GetByParametersAsync(CitySearch search, string order, string nameOfColumnOrder, int start, int length)
        {
            var query = ctx.Cities.Include(x => x.Country).AsQueryable();

            if (!string.IsNullOrWhiteSpace(search.Name))
            {
                query = query.Where(x => x.Name.Contains(search.Name, StringComparison.CurrentCultureIgnoreCase));
            }
            if (!string.IsNullOrWhiteSpace(search.ShortName))
            {
                query = query.Where(x => x.ShortName.Contains(search.ShortName, StringComparison.CurrentCultureIgnoreCase));
            }
            if (search.CountryID != null)
            {
                query = query.Where(x => x.CountryID == search.CountryID);
            }
            if (search.PostalCode != null)
            {
                query = query.Where(x => x.PostalCode == search.PostalCode);
            }
            if (search.Active != null)
            {
                query = query.Where(x => x.Active == search.Active);
            }

            if (nameof(Database.City.Name) == nameOfColumnOrder)
            {
                query = query.OrderByAscDesc(x => x.Name, order);
            }
            else if (nameof(Database.City.ShortName) == nameOfColumnOrder)
            {
                query = query.OrderByAscDesc(x => x.ShortName, order);
            }
            else if (nameof(Database.City.CountryID) == nameOfColumnOrder)
            {
                query = query.OrderByAscDesc(x => x.Country.Name, order);
            }
            else if (nameof(Database.City.ID) == nameOfColumnOrder)
            {
                query = query.OrderByAscDesc(x => x.ID, order);
            }

            var count = await query.CountAsync();

            query = query.Skip(start).Take(length);

            return(new Tuple <List <Model.Response.City>, int>(mapper.Map <List <Model.Response.City> >(await query.ToListAsync()), count));
        }
Beispiel #21
0
 public ActionResult Get([FromQuery] CitySearch criteria) => Ok(_getCitiesCommand.Execute(criteria));
 public IActionResult Get([FromQuery] CitySearch search, [FromServices] IGetCitiesQuery query)
 {
     return(Ok(_executor.ExecuteQuery(query, search)));
 }