Пример #1
0
        /// <summary>
        /// Searches the specified search criteria.
        /// </summary>
        /// <param name="searchCriteria">The search criteria.</param>
        /// <param name="cancellationToken">The cancellation token.</param>
        /// <returns></returns>
        /// <exception cref="ArgumentNullException">searchCriteria</exception>
        public async Task <bool> SearchAsync(IEnumerable <Search> searches, CancellationToken cancellationToken)
        {
            //ToDo Pass in a list of Search Criteria complete with names and loop through taht
            if (searches == null)
            {
                throw new ArgumentNullException(nameof(searches));
            }

            //todo loop by names
            int runs = 0;

            foreach (var search in searches)
            {
                if (runs > search.Criteria.MaxRuns)
                {
                    logger.InformationEvent("SearchAsync", "Search stopped after exceeding maximum of {maxRuns}", search.Criteria.MaxRuns);
                    break;
                }

                var personSearch = await PersonSearchRequestHelper.SearchAsync(search, SearchWaitMs, cancellationToken);

                logger.InformationEvent("SearchAsync", "Search number {run} returned {numberOfResults} results", runs, personSearch.NumberOfResults);

                var people = PersonSearchResultHelper.Process(personSearch);
                runs++;
            }

            return(true);
        }
Пример #2
0
        /// <summary>
        /// Imports the person searches from json.
        /// </summary>
        /// <param name="folderPath">The folder path.</param>
        /// <param name="cancellationToken">The cancellation token.</param>
        /// <returns></returns>
        public void ImportSearches(string folderPath)
        {
            foreach (string fullPath in Directory.EnumerateFiles(folderPath, "*.json", SearchOption.AllDirectories))
            {
                var jObject = Import.FromJson(fullPath);

                var personSearch = PersonSearchResultHelper.Import(jObject);
                var people       = PersonSearchResultHelper.Process(personSearch);
            }
        }
        public void Process_ValidInput_CreatePerson()
        {
            //Arrange
            var personSearch            = MockDataFactory.GetPersonSearchResult();
            var cancellationTokenSource = new CancellationTokenSource();
            var cancellationToken       = cancellationTokenSource.Token;

            //Act
            var result = PersonSearchResultHelper.Process(personSearch);

            //Assert
            Assert.IsAssignableFrom <IEnumerable <Person> >(result);
            MockRepository.Verify(c => c.Create(It.IsAny <Person>()), Times.Exactly(result.Count()));
            MockRepository.Verify(c => c.SaveAsync(), Times.Exactly(result.Count()));
        }