public void AddPhrase_AddsNewPhraseToPhrasesRepository() { _phrasesService.AddPhrase("Labas"); _phrasesRepository.Received().AddPhrase(Arg.Any <Phrase>()); _phrasesRepository.ReceivedCalls().ShouldNotBeEmpty(); _phrasesRepository.ReceivedCalls().ToList().Count.ShouldBe(1); }
public IList <Anagram> GetAnagrams(string word, User user) { var stopWatch = new Stopwatch(); var timeElapsed = 0L; stopWatch.Start(); if (word == null) { return(new List <Anagram>()); } var phrase = _phrasesService.GetPhrase(word); if (phrase == null) { _phrasesService.AddPhrase(word); phrase = _phrasesService.GetPhrase(word); } var anagrams = _cachedWordsService.GetAnagrams(phrase).ToList(); if (anagrams.Count() != 0) { stopWatch.Stop(); timeElapsed = stopWatch.ElapsedMilliseconds; _userLogsService.LogUserInfo(phrase, user, anagrams, Convert.ToInt32(timeElapsed)); _usersService.UpdateUserSearchesCount(user.Id, user.SearchesLeft + 1); return(anagrams); } var resultCount = 1000; var words = _wordsService.GetWordsForSearch(word); anagrams = FindAnagrams(words, phrase.Text, new List <List <Anagram> >()) .Take(resultCount) .Select(a => new Anagram { Text = String.Join(' ', a.Select(t => t.Text)) }) .Where(a => a.Text.Replace(" ", "").ToLower() != phrase.Text.Replace(" ", "").ToLower()) .ToList(); _cachedWordsService.AddCachedWord(phrase, anagrams); anagrams = _cachedWordsService.GetAnagrams(phrase).ToList(); stopWatch.Stop(); timeElapsed = stopWatch.ElapsedMilliseconds; _userLogsService.LogUserInfo(phrase, user, anagrams, Convert.ToInt32(timeElapsed)); _usersService.UpdateUserSearchesCount(user.Id, user.SearchesLeft - 1); return(anagrams); }