public void Inovke_Retriever_When_Searcher_Is_Null()
        {
            var retriever = Mock.Create<PasswordRetriever>();

            var controller = new HomeController(retriever, null);

            retriever.Assert(r => r.GetPassword("GithubPass"), Occurs.Once());
        }
        public void Return_View_Containing_Profiles_As_Model()
        {
            var controller = new HomeController();

            var model = controller.Search(DefaultLocation, DefaultLanguage).GetModel<IList<Profile>>();

            Assert.IsNotNull(model);
        }
        public void User_Searcher_To_Fetch_Profiles_For_Location_By_Technology()
        {
            var searcher = Mock.Create<IProfileSearcher>();

            var controller = new HomeController(new PasswordRetriever(), searcher);

            controller.Search(DefaultLocation, DefaultLanguage);

            searcher.Assert(s => s.GetProfilesForLocationByTechnology(DefaultLocation, DefaultLanguage));
        }
        public void Sets_Error_In_The_ViewBag_On_RateLimitException()
        {
            var searcher = Mock.Create<IProfileSearcher>();
            searcher.Arrange(s => s.GetProfilesForLocationByTechnology(Arg.AnyString, Arg.AnyString)).Throws(new RateLimitException());

            var controller = new HomeController(new PasswordRetriever(), searcher);

            controller.Search(DefaultLocation, DefaultLanguage);

            Assert.AreEqual<string>("Rate limit has been exceeded.", controller.ViewBag.ErrorMessage);
        }
        public void BeforeEachTest()
        {
            DefaultProfile = new Profile()
            {
                FirstName = "Erik",
                LastName = "Dietrich"
            };
            Searcher = Mock.Create<IProfileSearcher>();

            var profiles = new List<Profile>() { DefaultProfile };
            Searcher.Arrange(searcher => searcher.GetProfilesForLocationByTechnology(DefaultLocation, DefaultLanguage)).Returns(profiles);

            Target = new HomeController(new PasswordRetriever(), Searcher);
        }