Beispiel #1
0
        public void TestIfIndexReturnsNeededResult()
        {
            //Arrange
            anagramSolver = Substitute.For <IAnagramSolver>();
            var anagramList = new List <string>()
            {
                "kalnas", "klanas", "lankas", "skalna"
            };

            anagramSolver.GetAnagrams(Arg.Any <string>()).Returns(anagramList);
            var controller = new HomeController(anagramSolver, databaseLogic, eflogic,
                                                efWordRepository, efUserLogRepository, efCachedWordRepository);
            var result = controller.Index("kalnas");

            //Act
            anagramSolver.Received().GetAnagrams(Arg.Any <string>());

            //Assert
            CollectionAssert.Contains(anagramList, result);

            ////Arrange
            //var anagramList = anagramSolver.GetAnagrams("kalnas");
            //var controller = new HomeController(anagramSolver);
            //var result = controller.Index("kalnas");

            ////Assert
            //CollectionAssert.Contains(anagramList, result);
        }
Beispiel #2
0
        public async Task IndexSuccessWhenSearchingDBForResult()
        {
            var returnList = new List <string>()
            {
                "word1", "word2"
            };

            _userLogServiceMock.CountAnagramsLeftForIpToSolve().Returns(5);
            _searchHistoryServiceMock.GetSearchedAnagrams(Arg.Any <string>()).Returns((List <string>)null);
            _anagramSolverMock.GetAnagrams(Arg.Any <string>()).Returns(returnList);
            await _userLogServiceMock.AddLog(Arg.Any <TimeSpan>(), Arg.Any <UserActionTypes>(), Arg.Any <string>());

            _cookiesHandlerServiceMock.AddCookie(Arg.Any <string>(), Arg.Any <string>());
            await _contextMock.SaveChangesAsync();

            var result = await _controller.Index("labas") as ViewResult;

            var data = result.ViewData.Model as List <string>;

            await _userLogServiceMock.Received().CountAnagramsLeftForIpToSolve();

            await _searchHistoryServiceMock.Received().GetSearchedAnagrams(Arg.Any <string>());

            await _anagramSolverMock.Received().GetAnagrams(Arg.Any <string>());

            await _userLogServiceMock.Received().AddLog(Arg.Any <TimeSpan>(), Arg.Any <UserActionTypes>(), Arg.Any <string>());

            _cookiesHandlerServiceMock.Received().AddCookie(Arg.Any <string>(), Arg.Any <string>());
            await _contextMock.Received().SaveChangesAsync();

            Assert.AreEqual(returnList.Count, data.Count);
            Assert.AreEqual(returnList[0], data[0]);
            Assert.AreEqual(returnList[1], data[1]);
        }
Beispiel #3
0
        public void GetAnagrams_ReturnsAllAnagramsForAWord()
        {
            _appConfig.GetConfiguration()["FreeSearchesCount"].Returns("5");

            _usersRepository.GetUsers().Returns(new List <User>
            {
                new User {
                    Id = 1, Ip = "::1", SearchesLeft = 5
                },
                new User {
                    Id = 2, Ip = "::2", SearchesLeft = 4
                },
                new User {
                    Id = 3, Ip = "::3", SearchesLeft = 3
                },
                new User {
                    Id = 4, Ip = "::4", SearchesLeft = 2
                }
            });

            _anagramSolver.GetAnagrams(Arg.Is <string>("Dievas"), Arg.Is <User>(_usersRepository.GetUsers().First()))
            .Returns(new List <Anagram>
            {
                new Anagram {
                    Id = 1, Text = "veidas"
                },
                new Anagram {
                    Id = 1, Text = "deivas"
                },
                new Anagram {
                    Id = 1, Text = "viedas"
                }
            });

            var anagrams = _anagramsService.GetAnagrams("Dievas", "::1");

            _usersRepository.Received(2).GetUsers();
            _anagramSolver.Received(1).GetAnagrams(Arg.Is <string>("Dievas"), Arg.Is <User>(_usersRepository.GetUsers().First()));
            anagrams.ShouldNotBeNull();
            anagrams.Count.ShouldBe(3);
            anagrams.ElementAt(0).Text.ShouldBe("veidas");
            anagrams.ElementAt(1).Text.ShouldBe("deivas");
            anagrams.ElementAt(2).Text.ShouldBe("viedas");
        }
        public void DetectAnagrams_ShouldReturnDetectedAnagrams()
        {
            RequestedWord = "dievas";

            ExpectedList.AddRange(new List <string>()
            {
                "dievas", "veidas", "vedasi", "deivas"
            });

            _anagramSolver.GetAnagramsSeperated(RequestedWord).Returns(ExpectedList);

            //////////////////////////////////
            //////////////////////////////////

            var result = _requestService.DetectAnagrams(RequestedWord);

            result.ShouldNotBeEmpty();
            result.ShouldBe(ExpectedList);

            _anagramSolver.Received().GetAnagramsSeperated(RequestedWord);
        }
        public async Task GetSuccessWhenWordDefiled()
        {
            _anagramSolverMock.GetAnagrams(Arg.Any <string>()).Returns(_stringList);

            var result = await _controller.Get("abc") as ObjectResult;

            var data = result.Value as List <string>;

            await _anagramSolverMock.Received().GetAnagrams(Arg.Any <string>());

            Assert.AreEqual(_stringList.Count, data.Count);
            Assert.AreEqual(_stringList[0], data[0]);
        }
Beispiel #6
0
        public void Should_Use_Anagram_Solver_And_Return_At_Least_One_Anagram(string word, string userIp)
        {
            _cacheRepository.GetCachedAnagrams(word).Returns(new List <WordModel>());
            _wordsRepository.GetWords().Returns(_dummyWordsRepository.GetWords());
            _anagramSolver.GetAnagrams(word, _wordsRepository.GetWords()).Returns(new List <WordModel>()
            {
                new WordModel(word)
            });

            Assert.IsTrue(_anagramsService.GetAnagrams(word, userIp).Count >= 1);

            _cacheRepository.Received().GetCachedAnagrams(word);
            _wordsRepository.Received().GetWords();
            _anagramSolver.Received().GetAnagrams(word, _wordsRepository.GetWords());
        }
        public void Index_ShouldReturnAView()
        {
            string word             = "dangus";
            string ip               = "107.0.0.1";
            var    headerDictionary = new HeaderDictionary();

            httpResponse.Headers.Returns(headerDictionary);
            httpContext.Response.Returns(httpResponse);
            httpContext.Connection.LocalIpAddress.Returns(new System.Net.IPAddress(new Byte[] { 107, 0, 0, 1 }));
            anagramService.GetAnagrams(word, ip).Returns(new List <string> {
                "dugnas", "gandus"
            });

            var result = homeController.Index(word);

            Assert.IsInstanceOf <ViewResult>(result);

            anagramService.Received().GetAnagrams(word, ip);
        }
        public void GetAnagrams_IfWordIsNotCached_ShouldSetAnagramsToCache()
        {
            List <string> anagrams = new List <string> {
                "sula", "alus"
            };

            _cachedWords.CheckIfCached("test").Returns(false);
            //_cachedWords.GetCachedAnagrams("test").Returns(anagrams);
            _userManagingService.CheckIfValidToSearch(ip).Returns(true);
            _anagramSolver.GetAnagrams("test").Returns(anagrams);

            var result = _anagramsSearchService.GetAnagrams("test", ip);

            _cachedWords.DidNotReceive().GetCachedAnagrams("test");
            _logger.Received().Log("test", ip);
            result.Anagrams.ShouldBe(anagrams);

            _anagramSolver.Received().GetAnagrams("test");
            _cachedWords.Received().SetCachedAnagrams(result.Anagrams, "test");
        }
        public void GetAnagrams_ShouldReturnCorrectAnagrams()
        {
            string        word     = "dangus";
            string        ip       = "107.0.0.1";
            List <string> anagrams = new List <string> {
                "dugnas", "gandus"
            };
            string expected         = JsonConvert.SerializeObject(anagrams);
            var    headerDictionary = new HeaderDictionary();

            httpResponse.Headers.Returns(headerDictionary);
            httpContext.Response.Returns(httpResponse);
            httpContext.Connection.LocalIpAddress.Returns(new System.Net.IPAddress(new Byte[] { 107, 0, 0, 1 }));

            anagramService.GetAnagrams(word, ip).Returns(anagrams);

            var result = dataController.GetAnagrams(word);

            Assert.AreEqual(expected, result);

            anagramService.Received().GetAnagrams(word, ip);
        }