public void passing_an_object_that_is_not_an_AccountTagViewModel_to_RemoveAccountTag_method_causes_an_exception() { var account = new Account(1, "HSBC current", AccountType.Asset); var vm = new AccountViewModel(account, _mockAccountRepository, _mockAccountTagRepository); Assert.Throws<ArgumentException>(() => vm.RemoveAccountTag(account, null)); }
public void can_remove_an_AccountTag_from_an_Account_by_calling_RemoveAccountTag_method() { var tag1 = new AccountTag(1, "Entertainment"); var tag2 = new AccountTag(2, "Food"); var tag3 = new AccountTag(3, "Services"); var account = new Account(1, "HSBC current", AccountType.Asset); account.AddTag(tag1); account.AddTag(tag2); account.AddTag(tag3); var vm = new AccountViewModel(account, _mockAccountRepository, _mockAccountTagRepository); vm.PropertyChanged += _changeCounter.HandlePropertyChange; ObservableCollection<AccountTagViewModel> tagVMs = vm.AccountTags; var tagVMToRemove = tagVMs.First(x => x.TagName == "Food"); Expect.Once.On(_mockAccountRepository).Method("Save").With(account); vm.RemoveAccountTag(tagVMToRemove, null); var tagIdsInViewModel = tagVMs.Select(x => x.TagId).ToList(); Assert.AreEqual(2, tagVMs.Count); Assert.IsFalse(tagIdsInViewModel.Contains(2)); Assert.IsTrue(tagIdsInViewModel.Contains(1)); Assert.IsTrue(tagIdsInViewModel.Contains(3)); Assert.AreEqual(1, _changeCounter.NoOfPropertiesChanged); Assert.AreEqual(1, _changeCounter.TotalChangeCount); Assert.AreEqual(1, _changeCounter.ChangeCount("AccountTags")); _mocks.VerifyAllExpectationsHaveBeenMet(); }