Esempio n. 1
0
        public IReadOnlyCollection <Resume> GetBy(
            Region region,
            Rubric?rubric,
            Experience?experience,
            uint?salary,
            uint?maxAge,
            uint?minAge,
            string seachString)
        {
            var cachedQuery = _queryRepository.FindBy(region, rubric, experience, salary, maxAge, minAge, seachString);

            if (cachedQuery == null)
            {
                var createdQuery = new Query(region, rubric, experience, salary, maxAge, minAge, seachString);
                _queryRepository.Save(createdQuery);

                var loadedResumes = _externalResumeApiClient.LoadResumes(createdQuery);
                _resumeRepository.SaveOrUpdateRange(loadedResumes);

                return(loadedResumes);
            }

            if (cachedQuery.IsActual)
            {
                return(_resumeRepository.GetBy(cachedQuery));
            }
            else
            {
                cachedQuery.LastUpdateDate = DateTime.UtcNow;
                _queryRepository.Update(cachedQuery);

                var loadedResumes = _externalResumeApiClient.LoadResumes(cachedQuery);
                _resumeRepository.SaveOrUpdateRange(loadedResumes);

                return(loadedResumes);
            }
        }
        public void LoadResumes_FromEkaterinburg_Correct()
        {
            //Arrange
            var query = new Query(Region.Ekaterinburg);

            //Act
            var result = _externalResumeApiClient.LoadResumes(query);

            //Assert
            Assert.NotNull(result);
            Assert.True(result.Any());
            Assert.True(result.All(x => x.City == Region.Ekaterinburg));
        }