public void ViewIsPopulatedOnRefresh()
        {
            //arrange
            var presenter = new SettingsPresenter(_view.Object, _configService.Object, _folderBrowserFactory.Object);

            //act
            presenter.RefreshView();

            //assert
            Assert.AreEqual(Name, _view.Object.UserName, "Name");
            Assert.AreEqual(Email, _view.Object.EmailAddress, "Email");
            Assert.AreEqual(RepoLocation, _view.Object.DefaultRepositoryLocation, "Default Repo Location");
        }
        public void ConfigIsPopulatedFromViewOnSave()
        {
            //arrange
            var presenter = new SettingsPresenter(_view.Object, _configService.Object, _folderBrowserFactory.Object);

            //simulate user input
            _view.Object.UserName = OtherName;
            _view.Object.EmailAddress = OtherEmail;
            _view.Object.DefaultRepositoryLocation = OtherRepoLocation;

            //simulate Update button click
            _view.Raise(v => v.Save += null, EventArgs.Empty);

            //assert
            Assert.AreEqual(OtherName, _config.UserName, "Name");
            Assert.AreEqual(OtherEmail, _config.EmailAddress, "Email");
            Assert.AreEqual(OtherRepoLocation, _config.DefaultRepositoryLocation, "Default Repo Location");
        }
        public void ChangesToViewAreRevertedOnCancel()
        {
            //arrange
            var presenter = new SettingsPresenter(_view.Object, _configService.Object, _folderBrowserFactory.Object);

            //simulate user input
            _view.Object.UserName = OtherName;
            _view.Object.EmailAddress = OtherEmail;
            _view.Object.DefaultRepositoryLocation = OtherRepoLocation;

            //act
            //simulate Cancel button click
            _view.Raise(v => v.Cancel += null, EventArgs.Empty);

            //assert
            Assert.AreEqual(Name, _view.Object.UserName, "Name");
            Assert.AreEqual(Email, _view.Object.EmailAddress, "Email");
            Assert.AreEqual(RepoLocation, _view.Object.DefaultRepositoryLocation, "Default Repo Location");     
        }
        public void ConfigIsSavedOnSave()
        {
            //arrange
            var presenter = new SettingsPresenter(_view.Object, _configService.Object, _folderBrowserFactory.Object);

            //act
            //simulate Update button click
            _view.Raise(v => v.Save += null, EventArgs.Empty);

            //assert
            _configService.Verify(s => s.SaveConfiguration(_config));
        }
        public void OnBrowserDefaultRepoLocation_WhenUserCancels_ViewRemainsUnchanged()
        {
            //arrange
            _view.Object.DefaultRepositoryLocation = RepoLocation;
            _folderBrowser.Object.SelectedPath = OtherRepoLocation;
            _folderBrowser.Setup(f => f.ShowDialog()).Returns(DialogResult.Cancel);

            var presenter = new SettingsPresenter(_view.Object, _configService.Object, _folderBrowserFactory.Object);

            //act
            _view.Raise(v => v.BrowseDefaultRepositoryLocation += null, EventArgs.Empty);

            //assert
            Assert.AreEqual(RepoLocation, _view.Object.DefaultRepositoryLocation);
        }