public void AcceptCommandShouldRefreshCommandState() { var oldTerm = TermListViewModelFixture.SampleTerms[0]; var newTerm = new Term("term4", "def 4"); var service = this._termsServiceMock; service .Setup(s => s.UpdateTerm(oldTerm, newTerm, ThreadPoolScheduler.Instance)) .Returns(() => Observable.Return(newTerm)); var editModel = TermListViewModelFixture.MockEditModel(newTerm); var listModel = TermListViewModelFixture.CreateViewModelLoaded(service.Object, editModel); listModel.EditTerm.Execute(oldTerm); listModel.Accept.Execute(null); DispatcherHelper.ProcessCurrentQueue(); Assert.IsTrue(listModel.AddTerm.CanExecute(null)); Assert.IsTrue(listModel.EditTerm.CanExecute(newTerm)); Assert.IsFalse(listModel.DeleteTerm.CanExecute(null)); Assert.IsFalse(listModel.Accept.CanExecute(null)); Assert.IsFalse(listModel.Cancel.CanExecute(null)); }
public void RecreateStorageCommandSubscibesRecreateStorage() { var term = new Term("term4", "def 4"); // Create service mock that allows to load terms, prevents // adding a term, and verifies recreation attempt. var observable = new Mock <IObservable <Unit> >(); observable.Setup(o => o.Subscribe(It.IsAny <IObserver <Unit> >())).Verifiable(); var service = this._termsServiceMock; service .Setup(s => s.AddTerm(term, ThreadPoolScheduler.Instance)) .Returns(() => Observable.Throw <Term>(new InvalidTermsStorageException("Invalid"))); service .Setup(s => s.RecreateStorage( It.Is <IEnumerable <Term> >(terms => !TermListViewModelFixture.SampleTerms.Except(terms).Any()), ThreadPoolScheduler.Instance)) .Returns(() => observable.Object); // Create view model to test invokation on RecreateStorage. var editModel = TermListViewModelFixture.MockEditModel(term); var listModel = TermListViewModelFixture.CreateViewModelLoaded(service.Object, editModel); listModel.AddTerm.Execute(null); DispatcherHelper.ProcessCurrentQueue(); listModel.RecreateStorage.Execute(null); observable.Verify(); }
public void ModelNotifiesAndStaysInEditModeWhenAcceptEditFailed() { var oldTerm = TermListViewModelFixture.SampleTerms[0]; var newTerm = new Term("term4", "def 4"); var msg = "Failed"; var service = this._termsServiceMock; service .Setup(s => s.UpdateTerm(oldTerm, newTerm, ThreadPoolScheduler.Instance)) .Returns(() => Observable.Throw <Term>(new Exception(msg))); var editModel = TermListViewModelFixture.MockEditModel(newTerm); var listModel = TermListViewModelFixture.CreateViewModelLoaded(service.Object, editModel); listModel.EditTerm.Execute(oldTerm); listModel.Accept.Execute(null); DispatcherHelper.ProcessCurrentQueue(); Assert.IsTrue(listModel.Terms.Cast <Term>().Contains(oldTerm)); Assert.IsFalse(listModel.Terms.Cast <Term>().Contains(newTerm)); Assert.AreEqual(msg, listModel.Notification); Assert.IsTrue(listModel.IsEditMode); }
public void ModelNotifiesWhenRecreateStorageFailed() { var term = new Term("term4", "def 4"); var service = new Mock <ITermsService>(); service .Setup(s => s.LoadTerms(ThreadPoolScheduler.Instance)) .Returns(() => Observable.Throw <IEnumerable <Term> >(new InvalidTermsStorageException("Invalid"))); service .Setup(s => s.RecreateStorage(It.Is <IEnumerable <Term> >(terms => !terms.Any()), ThreadPoolScheduler.Instance)) .Returns(() => Observable.Throw <Unit>(new InvalidTermsStorageException("Invalid"))); var editModel = TermListViewModelFixture.MockEditModel(term); var listModel = TermListViewModelFixture.CreateViewModelLoaded(service.Object, editModel); Assert.IsTrue(listModel.RecreateStorage.CanExecute(null)); listModel.RecreateStorage.Execute(null); DispatcherHelper.ProcessCurrentQueue(); Assert.IsNotNull(listModel.Notification); Assert.IsTrue(listModel.RecreateStorage.CanExecute(null)); }
public void EditTermCommandShouldNotExecuteOnUnknownTerm() { var editModel = new Mock <ITermEditViewModel>(); var listModel = TermListViewModelFixture.CreateViewModelLoaded(this._termsServiceMock.Object, editModel.Object); Assert.IsFalse(listModel.EditTerm.CanExecute(null)); Assert.IsFalse(listModel.EditTerm.CanExecute(new Term("term4", "def 4"))); }
public void AddTermCommandEntersEmptyEditMode() { var editModel = new Mock <ITermEditViewModel>(); var listModel = TermListViewModelFixture.CreateViewModelLoaded(this._termsServiceMock.Object, editModel.Object); listModel.AddTerm.Execute(null); editModel.VerifySet(m => m.Name = String.Empty); editModel.VerifySet(m => m.Definition = String.Empty); Assert.IsTrue(listModel.IsEditMode); }
public void AddTermCommandRefreshesCommandState() { var editModel = new Mock <ITermEditViewModel>(); var listModel = TermListViewModelFixture.CreateViewModelLoaded(this._termsServiceMock.Object, editModel.Object); listModel.AddTerm.Execute(null); Assert.IsFalse(listModel.AddTerm.CanExecute(null)); Assert.IsFalse(listModel.EditTerm.CanExecute(TermListViewModelFixture.SampleTerms[0])); Assert.IsFalse(listModel.DeleteTerm.CanExecute(null)); Assert.IsTrue(listModel.Accept.CanExecute(null)); Assert.IsTrue(listModel.Cancel.CanExecute(null)); }
public void ModelEnablesRecreateStorageForInvalidStorageOnStartup() { var service = this._termsServiceMock; service .Setup(s => s.LoadTerms(ThreadPoolScheduler.Instance)) .Returns(() => Observable.Throw <IEnumerable <Term> >(new InvalidTermsStorageException("Invalid"))); var editModel = Mock.Of <ITermEditViewModel>(); var listModel = TermListViewModelFixture.CreateViewModelLoaded(service.Object, editModel); Assert.IsTrue(listModel.RecreateStorage.CanExecute(null)); }
public void EditTermCommandEntersExistentEditMode() { var editModel = new Mock <ITermEditViewModel>(); var listModel = TermListViewModelFixture.CreateViewModelLoaded(this._termsServiceMock.Object, editModel.Object); var term = TermListViewModelFixture.SampleTerms[0]; listModel.EditTerm.Execute(term); editModel.VerifySet(m => m.Name = term.Name); editModel.VerifySet(m => m.Definition = term.Definition); Assert.IsTrue(listModel.IsEditMode); }
public void ModelNotifiesAndStaysInEditModeWhenAcceptAddInvalidTerm() { var editModel = new Mock <ITermEditViewModel>(); editModel.SetupGet(m => m.Error).Returns("Error"); var listModel = TermListViewModelFixture.CreateViewModelLoaded(this._termsServiceMock.Object, editModel.Object); listModel.AddTerm.Execute(null); listModel.Accept.Execute(null); StringAssert.Contains(listModel.Notification, editModel.Object.Error); Assert.IsTrue(listModel.IsEditMode); }
public void ModelSubscibesLoadTermsOnStartup() { var observable = new Mock <IObservable <IEnumerable <Term> > >(); observable.Setup(o => o.Subscribe(It.IsAny <IObserver <IEnumerable <Term> > >())).Verifiable(); var service = new Mock <ITermsService>(); service.Setup(s => s.LoadTerms(ThreadPoolScheduler.Instance)).Returns(() => observable.Object); TermListViewModelFixture.CreateViewModelLoaded(service.Object, Mock.Of <ITermEditViewModel>()); observable.Verify(); }
public void ModelNotifiesWhenLoadTermsFailed() { var msg = "Failed"; var service = this._termsServiceMock; service .Setup(s => s.LoadTerms(ThreadPoolScheduler.Instance)) .Returns(() => Observable.Throw <IEnumerable <Term> >(new Exception(msg))); var editModel = Mock.Of <ITermEditViewModel>(); var listModel = TermListViewModelFixture.CreateViewModelLoaded(service.Object, editModel); Assert.AreEqual(msg, listModel.Notification); }
public void DeleteTermCommandHidesDeletedTerm() { var term = TermListViewModelFixture.SampleTerms[0]; var service = this._termsServiceMock; service.Setup(s => s.RemoveTerm(term, ThreadPoolScheduler.Instance)).Returns(() => Observable.Return(term)); var editModel = Mock.Of <ITermEditViewModel>(); var listModel = TermListViewModelFixture.CreateViewModelLoaded(service.Object, editModel); listModel.EditTerm.Execute(term); listModel.DeleteTerm.Execute(null); DispatcherHelper.ProcessCurrentQueue(); Assert.IsFalse(listModel.Terms.Cast <Term>().Contains(term)); Assert.IsFalse(listModel.IsEditMode); }
public void AcceptAddCommandShowsNewTerm() { var term = new Term("term4", "def 4"); var service = this._termsServiceMock; service.Setup(s => s.AddTerm(term, ThreadPoolScheduler.Instance)).Returns(() => Observable.Return(term)); var editModel = TermListViewModelFixture.MockEditModel(term); var listModel = TermListViewModelFixture.CreateViewModelLoaded(service.Object, editModel); listModel.AddTerm.Execute(null); listModel.Accept.Execute(null); DispatcherHelper.ProcessCurrentQueue(); Assert.IsTrue(listModel.Terms.Cast <Term>().Contains(term)); Assert.IsFalse(listModel.IsEditMode); }
public void CancelCommandExitsEditMode() { var editModel = new Mock <ITermEditViewModel>(); // Test exit after add. var listModel = TermListViewModelFixture.CreateViewModelLoaded(this._termsServiceMock.Object, editModel.Object); listModel.AddTerm.Execute(null); listModel.Cancel.Execute(null); Assert.IsFalse(listModel.IsEditMode); // Test exit after edit. listModel = TermListViewModelFixture.CreateViewModelLoaded(this._termsServiceMock.Object, editModel.Object); listModel.EditTerm.Execute(TermListViewModelFixture.SampleTerms[0]); listModel.Cancel.Execute(null); Assert.IsFalse(listModel.IsEditMode); }
public void DeleteTermCommandRefreshesCommandState() { var term = TermListViewModelFixture.SampleTerms[0]; var service = this._termsServiceMock; service.Setup(s => s.RemoveTerm(term, ThreadPoolScheduler.Instance)).Returns(() => Observable.Return(term)); var editModel = Mock.Of <ITermEditViewModel>(); var listModel = TermListViewModelFixture.CreateViewModelLoaded(service.Object, editModel); listModel.EditTerm.Execute(term); listModel.DeleteTerm.Execute(null); DispatcherHelper.ProcessCurrentQueue(); Assert.IsTrue(listModel.AddTerm.CanExecute(null)); Assert.IsTrue(listModel.EditTerm.CanExecute(TermListViewModelFixture.SampleTerms[1])); Assert.IsFalse(listModel.DeleteTerm.CanExecute(null)); Assert.IsFalse(listModel.Accept.CanExecute(null)); Assert.IsFalse(listModel.Cancel.CanExecute(null)); }
public void DeleteTermCommandSubscibesRemoveTerm() { var term = TermListViewModelFixture.SampleTerms[0]; var observable = new Mock <IObservable <Term> >(); observable.Setup(o => o.Subscribe(It.IsAny <IObserver <Term> >())).Verifiable(); var service = this._termsServiceMock; service.Setup(s => s.RemoveTerm(term, ThreadPoolScheduler.Instance)).Returns(() => observable.Object); var editModel = Mock.Of <ITermEditViewModel>(); var listModel = TermListViewModelFixture.CreateViewModelLoaded(service.Object, editModel); listModel.EditTerm.Execute(term); listModel.DeleteTerm.Execute(null); DispatcherHelper.ProcessCurrentQueue(); observable.Verify(); }
public void AcceptAddCommandSubscibesAddTerm() { var term = new Term("term4", "def 4"); var observable = new Mock <IObservable <Term> >(); observable.Setup(o => o.Subscribe(It.IsAny <IObserver <Term> >())).Verifiable(); var service = this._termsServiceMock; service.Setup(s => s.AddTerm(term, ThreadPoolScheduler.Instance)).Returns(() => observable.Object); var editModel = TermListViewModelFixture.MockEditModel(term); var listModel = TermListViewModelFixture.CreateViewModelLoaded(service.Object, editModel); listModel.AddTerm.Execute(null); listModel.Accept.Execute(null); DispatcherHelper.ProcessCurrentQueue(); observable.Verify(); }
public void AcceptAddCommandEnablesRecreateStorageForInvalidStorage() { var term = new Term("term4", "def 4"); var service = this._termsServiceMock; service .Setup(s => s.AddTerm(term, ThreadPoolScheduler.Instance)) .Returns(() => Observable.Throw <Term>(new InvalidTermsStorageException("Invalid"))); var editModel = TermListViewModelFixture.MockEditModel(term); var listModel = TermListViewModelFixture.CreateViewModelLoaded(service.Object, editModel); listModel.AddTerm.Execute(null); Assert.IsFalse(listModel.RecreateStorage.CanExecute(null)); listModel.Accept.Execute(null); DispatcherHelper.ProcessCurrentQueue(); Assert.IsTrue(listModel.RecreateStorage.CanExecute(null)); }
public void DeleteCommandEnablesRecreateStorageForInvalidStorage() { var term = TermListViewModelFixture.SampleTerms[0]; var service = this._termsServiceMock; service .Setup(s => s.RemoveTerm(term, ThreadPoolScheduler.Instance)) .Returns(() => Observable.Throw <Term>(new InvalidTermsStorageException("Invalid"))); var editModel = Mock.Of <ITermEditViewModel>(); var listModel = TermListViewModelFixture.CreateViewModelLoaded(service.Object, editModel); listModel.EditTerm.Execute(term); Assert.IsFalse(listModel.RecreateStorage.CanExecute(null)); listModel.DeleteTerm.Execute(null); DispatcherHelper.ProcessCurrentQueue(); Assert.IsTrue(listModel.RecreateStorage.CanExecute(null)); }
public void ModelNotifiesAndStaysInEditModeWhenDeleteFailed() { var term = TermListViewModelFixture.SampleTerms[0]; var msg = "Failed"; var service = this._termsServiceMock; service .Setup(s => s.RemoveTerm(term, ThreadPoolScheduler.Instance)) .Returns(() => Observable.Throw <Term>(new Exception(msg))); var editModel = Mock.Of <ITermEditViewModel>(); var listModel = TermListViewModelFixture.CreateViewModelLoaded(service.Object, editModel); listModel.EditTerm.Execute(term); listModel.DeleteTerm.Execute(null); DispatcherHelper.ProcessCurrentQueue(); Assert.IsTrue(listModel.Terms.Cast <Term>().Contains(term)); Assert.AreEqual(msg, listModel.Notification); Assert.IsTrue(listModel.IsEditMode); }
public void ModelExposesTermsAfterLoadTerms() { var model = TermListViewModelFixture.CreateViewModelLoaded(this._termsServiceMock.Object, Mock.Of <ITermEditViewModel>()); ReactiveAssert.AreElementsEqual(TermListViewModelFixture.SampleTerms, model.Terms.Cast <Term>()); }