public void TotalAmount_ChangingItemAmounts_ExpectTotalAmountChangedEvent() { // Create group with budget items List <BudgetItem> items = new List <BudgetItem>() { new BudgetItem("test item 1"), new BudgetItem("test item 2"), new BudgetItem("test item 3") }; var group = new BudgetGroup("Housing", budgetItems: items); BudgetGroupViewModel viewModel = new BudgetGroupViewModel(group); bool wasChanged = false; viewModel.PropertyChanged += (o, e) => { if (e.PropertyName == nameof(viewModel.TotalAmount)) { wasChanged = true; } }; // TEST: changing item amounts should trigger property changed group.BudgetItems[1].Amount = 234.56m; // Validate event and final value wasChanged.Should().BeTrue(); viewModel.TotalAmount.Should().Be(group.TotalAmount.ToCurrencyString()); }
public void TotalAmount_ChangingItemAmounts_ExpectTotalAmountChangedEvent() { var items = new List <BudgetItem> { new BudgetItem("1", "item 1"), new BudgetItem("2", "item 2"), new BudgetItem("3", "item 3"), }; var group = new BudgetGroup("1", "group 1", budgetItems: items); var viewModel = new BudgetGroupViewModel(group); bool wasChanged = false; viewModel.PropertyChanged += (o, e) => { if (e.PropertyName == nameof(viewModel.TotalAmount)) { wasChanged = true; } }; group.BudgetItems[1].Amount = 234.56m; wasChanged.Should().BeTrue(); viewModel.TotalAmount.Should().Be(group.TotalAmount.ToCurrencyString()); }
public BasicExpensesIntroPage(BudgetGroupViewModel budgetGroup) { InitializeComponent(); BindingContext = budgetGroup; contentView.ContinueButtonAction = async() => await Navigation.PushAsync(new TransportationPage(Dependencies.ProfileViewModel.Budget.TransportationGroup)); }
public TransportationPage(BudgetGroupViewModel budgetGroupViewModel) { InitializeComponent(); BindingContext = budgetGroupViewModel; contentView.ContinueButtonAction = async() => await Navigation.PushAsync(new IntroPage()); }
public IncomeIntroPage(BudgetGroupViewModel budgetGroup) { InitializeComponent(); BindingContext = budgetGroup; contentView.ContinueButtonAction = async() => await Navigation.PushAsync(new IncomePage(budgetGroup)); }
public void IsTotalAmountZero_AllZeroItemsAmount_ExpectTrue() { var items = new List <BudgetItem> { new BudgetItem("1", "test 1"), new BudgetItem("2", "test 2"), new BudgetItem("3", "test 3") }; var group = new BudgetGroup("1", "name", budgetItems: items); var viewModel = new BudgetGroupViewModel(group); viewModel.IsTotalAmountZero.Should().BeTrue(); }
public void IsTotalAmountZero_NonZeroItemAmounts_ExpectFalse() { var items = new List <BudgetItem> { new BudgetItem("1", "test 1"), new BudgetItem("2", "test 2", 100m), new BudgetItem("3", "test 3") }; var group = new BudgetGroup("1", "name", budgetItems: items); var viewModel = new BudgetGroupViewModel(group); viewModel.IsTotalAmountZero.Should().BeFalse(); }
public void AddNewBudgetItem_ExpectNewItemInViewModel() { // Create a group and view model with no budget items var group = new BudgetGroup("Housing"); BudgetGroupViewModel viewModel = new BudgetGroupViewModel(group); // TEST: add new item from the view model viewModel.AddNewBudgetItem(); // Confirm a new budget item as created in the backing group, and in the view model group.BudgetItems.Count.Should().Be(1); viewModel.BudgetItems.Count.Should().Be(1); viewModel.BudgetItems[0].BudgetItem.Should().Be(group.BudgetItems[0]); }
public void IsTotalAmountZero_NonZeroItemAmounts_ExpectFalse() { // Create group with budget items List <BudgetItem> items = new List <BudgetItem>() { new BudgetItem("test item 1"), new BudgetItem("test item 2", amount: 123.45m), new BudgetItem("test item 3") }; var group = new BudgetGroup("Housing", budgetItems: items); // TEST: a view model representing a group with all zero items BudgetGroupViewModel viewModel = new BudgetGroupViewModel(group); viewModel.IsTotalAmountZero.Should().BeFalse(); }
public void BudgetItems_DeleteItemGroup_ViewModelDeleted() { var items = new List <BudgetItem> { new BudgetItem("id1", "name1"), new BudgetItem("id2", "name2", 12.34m, BudgetItemType.Debt), }; var group = new BudgetGroup("id", "group name", budgetItems: items); var budgetGroupViewModel = new BudgetGroupViewModel(group); var itemDeleted = group.BudgetItems[0]; group.BudgetItems.RemoveAt(0); budgetGroupViewModel.BudgetItems.Count.Should().Be(1); budgetGroupViewModel.BudgetItems.Any(item => item.BudgetItem == itemDeleted).Should().BeFalse(); }
public void IsTotalAmountZero_ChangingItemAmounts_ExpectChangingTrueFalse() { var items = new List <BudgetItem> { new BudgetItem("1", "item 1"), new BudgetItem("2", "item 2"), new BudgetItem("3", "item 3"), }; var group = new BudgetGroup("1", "group 1", budgetItems: items); var viewModel = new BudgetGroupViewModel(group); viewModel.IsTotalAmountZero.Should().BeTrue(); group.BudgetItems[1].Amount = 234.56m; viewModel.IsTotalAmountZero.Should().BeFalse(); group.BudgetItems[1].Amount = 0; viewModel.IsTotalAmountZero.Should().BeTrue(); }
public void IsTotalAmountZero_ChangingItemAmounts_ExpectChangingTrueFalse() { // Create group with budget items List <BudgetItem> items = new List <BudgetItem>() { new BudgetItem("test item 1"), new BudgetItem("test item 2"), new BudgetItem("test item 3") }; var group = new BudgetGroup("Housing", budgetItems: items); BudgetGroupViewModel viewModel = new BudgetGroupViewModel(group); // TEST: changing item amounts in the groupshould transition the IsTotalAmountZero viewModel.IsTotalAmountZero.Should().BeTrue(); group.BudgetItems[1].Amount = 234.56m; viewModel.IsTotalAmountZero.Should().BeFalse(); group.BudgetItems[1].Amount = 0; viewModel.IsTotalAmountZero.Should().BeTrue(); }
public void Constructor_DefaultBudgetGroupPresentation_PresentsDefaultValues() { var name = "group"; var group = new BudgetGroup("group1", name); BudgetGroupViewModel viewModel = new BudgetGroupViewModel(group); viewModel.BudgetItems.Should().BeEmpty(); viewModel.ColorKey.Should().Be(BudgetGroupPresentation.DefaultColorKey); viewModel.IconSource.Should().Be(""); viewModel.Description.Should().Be(""); viewModel.Subtitle.Should().Be(BudgetGroupPresentation.DefaultSubtitle); viewModel.AddItemText.Should().Be(BudgetGroupPresentation.DefaultAddItemText); viewModel.CustomTitle.Should().Be(""); viewModel.IsTitleVisible.Should().BeTrue("a custom title is not provided"); viewModel.IsCustomTitleVisible.Should().BeFalse("a custom title is not provided"); viewModel.HasSecondaryHeader.Should().BeFalse(); viewModel.HeaderTextWithoutDate.Should().Be(name.ToUpper()); viewModel.HeaderText.Should().Be(viewModel.HeaderTextWithoutDate, "hasDateOnHeader is false"); }
public void BudgetItems_DeleteItemInGroup_ViewModelDeleted() { // Create group with budget items List <BudgetItem> items = new List <BudgetItem>() { new BudgetItem("test item 1"), new BudgetItem("test item 2", BudgetItemType.Debt, 12.34m) }; var group = new BudgetGroup("Housing", budgetItems: items); BudgetGroupViewModel viewModel = new BudgetGroupViewModel(group); // TEST: delete an item from the backing group var itemDeleted = group.BudgetItems[0]; group.BudgetItems.RemoveAt(0); viewModel.BudgetItems.Count().Should().Be(1); viewModel.BudgetItems .Any(itemViewModel => itemViewModel.BudgetItem == itemDeleted) .Should().BeFalse(); }
public void Constructor_ModelWithBudgetItems_PresentsGroupAndItems() { string name = "test group name"; var items = new List <BudgetItem> { new BudgetItem("id1", "group1"), new BudgetItem("id2", "group2", 12.34m), }; var group = new BudgetGroup("id3", name, budgetItems: items); var viewModel = new BudgetGroupViewModel(group); viewModel.Name.Should().Be(group.Name); viewModel.NameLower.Should().Be(group.Name.ToLower()); viewModel.TotalAmount.Should().Be(group.TotalAmount.ToCurrencyString()); viewModel.BudgetItems.Count.Should().Be(items.Count); for (int i = 0; i < items.Count; i++) { viewModel.BudgetItems[i].BudgetItem.Should().Be(items[i]); } }
public void Constructor_ValidParameters_PresentionSetupCorrectly(string groupName) { var group = new BudgetGroup(groupName); var expectedPresentation = BudgetGroupPresentationBuilder.Build(group); // TEST: Construct a view model BudgetGroupViewModel viewModel = new BudgetGroupViewModel(group); // Confirm properties and items created in view model viewModel.Name.Should().Be(groupName); viewModel.BudgetItems.Should().BeEmpty(); viewModel.ColorKey.Should().Be(expectedPresentation.ColorKey); viewModel.IconSource.Should().Be(expectedPresentation.IconSource); viewModel.Description.Should().Be(expectedPresentation.Description); viewModel.Subtitle.Should().Be(expectedPresentation.Subtitle); viewModel.AddItemText.Should().Be(expectedPresentation.AddItemText); viewModel.CustomTitle.Should().Be(expectedPresentation.CustomTitle); viewModel.HasSecondaryHeader.Should().Be(expectedPresentation.HasSecondaryHeader); viewModel.IsTitleVisible.Should().Be(string.IsNullOrWhiteSpace(expectedPresentation.CustomTitle)); viewModel.IsCustomTitleVisible.Should().Be(!viewModel.IsTitleVisible); viewModel.HeaderTextWithoutDate.Should().Be(groupName.ToUpper()); viewModel.HeaderText.Should().Be(expectedPresentation.HasDateOnHeader ? viewModel.HeaderTextWithDate : viewModel.HeaderTextWithoutDate); }
public void Constructor_ModelWithBudgetItems_PresentsGroupAndItems() { // Create group with budget items string name = "Housing"; List <BudgetItem> items = new List <BudgetItem>() { new BudgetItem("test item 1"), new BudgetItem("test item 2", BudgetItemType.Debt, 12.34m) }; var group = new BudgetGroup(name, budgetItems: items); // TEST: Construct a view model BudgetGroupViewModel viewModel = new BudgetGroupViewModel(group); // Confirm properties and items created in view model viewModel.Name.Should().Be(group.Name); viewModel.NameLower.Should().Be(group.Name.ToLower()); viewModel.TotalAmount.Should().Be(group.TotalAmount.ToCurrencyString()); viewModel.BudgetItems.Count.Should().Be(items.Count); for (int i = 0; i < items.Count; ++i) { viewModel.BudgetItems[i].BudgetItem.Should().Be(items[i]); } }
public IncomePage(BudgetGroupViewModel budgetGroupViewModel) { InitializeComponent(); BindingContext = budgetGroupViewModel; contentView.ContinueButtonAction = () => Navigation.PushAsync(new BasicExpensesIntroPage(Dependencies.ProfileViewModel.Budget.BasicExpensesDisplayGroup)); }