示例#1
0
        public void Init_IncomeNotEditing_PropertiesSetupCorrectly()
        {
            var accountRepoMock = new Mock <IAccountRepository>();

            accountRepoMock.Setup(x => x.Load(It.IsAny <Expression <Func <Account, bool> > >()));
            accountRepoMock.Setup(x => x.GetList(null)).Returns(new List <Account>());

            var paymentManager = new PaymentManager(new Mock <IPaymentRepository>().Object,
                                                    accountRepoMock.Object,
                                                    new Mock <IRecurringPaymentRepository>().Object,
                                                    new Mock <IDialogService>().Object);

            var settingsManagerMock = new Mock <ISettingsManager>();

            settingsManagerMock.SetupAllProperties();

            Mvx.RegisterType(() => settingsManagerMock.Object);

            var viewmodel = new ModifyPaymentViewModel(new Mock <IPaymentRepository>().Object,
                                                       accountRepoMock.Object,
                                                       new Mock <IDialogService>().Object,
                                                       paymentManager,
                                                       settingsManagerMock.Object);

            viewmodel.Init(PaymentType.Income);

            //Execute and Assert
            viewmodel.SelectedPayment.ShouldNotBeNull();
            viewmodel.SelectedPayment.Type.ShouldBe((int)PaymentType.Income);
            viewmodel.SelectedPayment.IsTransfer.ShouldBeFalse();
            viewmodel.SelectedPayment.IsRecurring.ShouldBeFalse();
        }
        public void Init_TransferNotEditing_PropertiesSetupCorrectly()
        {
            // Arrange
            var accountServiceMock = new Mock <IAccountService>();

            accountServiceMock.Setup(x => x.GetAllAccounts())
            .ReturnsAsync(new List <Account> {
                new Account {
                    Data = { Id = 3 }
                }
            });

            var settingsManagerMock = new Mock <ISettingsManager>();

            settingsManagerMock.SetupAllProperties();

            var viewmodel = new ModifyPaymentViewModel(new Mock <IPaymentService>().Object,
                                                       accountServiceMock.Object,
                                                       new Mock <IDialogService>().Object,
                                                       settingsManagerMock.Object,
                                                       new Mock <IMvxMessenger>().Object,
                                                       new Mock <IBackupManager>().Object);

            // Act / Assert
            viewmodel.Init(PaymentType.Transfer);
            viewmodel.SelectedPayment.Type.ShouldBe(PaymentType.Transfer);
            viewmodel.SelectedPayment.IsTransfer.ShouldBeTrue();
            viewmodel.SelectedPayment.IsRecurring.ShouldBeFalse();
        }
        public void Init_TransferNotEditing_PropertiesSetupCorrectly()
        {
            var accountRepoMock = new Mock <IAccountRepository>();

            accountRepoMock.Setup(x => x.GetList(null))
            .Returns(new List <AccountViewModel> {
                new AccountViewModel {
                    Id = 3
                }
            });

            var paymentManager = new PaymentManager(new Mock <IPaymentRepository>().Object,
                                                    accountRepoMock.Object,
                                                    new Mock <IRecurringPaymentRepository>().Object,
                                                    new Mock <IDialogService>().Object);

            var settingsManagerMock = new Mock <ISettingsManager>();

            settingsManagerMock.SetupAllProperties();

            var viewmodel = new ModifyPaymentViewModel(new Mock <IPaymentRepository>().Object,
                                                       accountRepoMock.Object,
                                                       new Mock <IDialogService>().Object,
                                                       paymentManager,
                                                       settingsManagerMock.Object,
                                                       new Mock <IMvxMessenger>().Object,
                                                       new Mock <IBackupManager>().Object);

            //Execute and Assert
            viewmodel.Init(PaymentType.Transfer);
            viewmodel.SelectedPayment.Type.ShouldBe(PaymentType.Transfer);
            viewmodel.SelectedPayment.IsTransfer.ShouldBeTrue();
            viewmodel.SelectedPayment.IsRecurring.ShouldBeFalse();
        }
示例#4
0
        public void Cancel_SelectedPaymentReseted()
        {
            double amount      = 99;
            var    basePayment = new Payment {
                Id = 5, Amount = amount
            };
            var payment = new Payment {
                Id = 5, Amount = amount
            };

            var paymentRepositorySetup = new Mock <IPaymentRepository>();

            paymentRepositorySetup.Setup(x => x.FindById(It.IsAny <int>())).Returns(basePayment);

            var viewmodel = new ModifyPaymentViewModel(paymentRepositorySetup.Object,
                                                       new Mock <IAccountRepository>().Object,
                                                       new Mock <IDialogService>().Object,
                                                       new Mock <IPaymentManager>().Object)
            {
                SelectedPayment = payment
            };

            viewmodel.SelectedPayment.Amount = 7777;
            viewmodel.CancelCommand.Execute();

            viewmodel.SelectedPayment.Amount.ShouldBe(amount);
        }
        public void AmountString_CorrectConvertedAmount(string amount, double convertedAmount, string culture)
        {
            Thread.CurrentThread.CurrentCulture = new CultureInfo(culture, false);

            // Setup
            var paymentRepoSetup = new Mock <IPaymentRepository>();
            var accountRepoMock  = new Mock <IAccountRepository>();

            var settingsManagerMock = new Mock <ISettingsManager>();

            settingsManagerMock.SetupAllProperties();

            var paymentManagerMock = new Mock <IPaymentManager>();

            var testPayment = new Fixture().Create <PaymentViewModel>();

            testPayment.Amount = 0;

            var viewmodel = new ModifyPaymentViewModel(paymentRepoSetup.Object,
                                                       accountRepoMock.Object,
                                                       new Mock <IDialogService>().Object,
                                                       paymentManagerMock.Object,
                                                       settingsManagerMock.Object,
                                                       new Mock <IMvxMessenger>().Object,
                                                       new Mock <IBackupManager>().Object)
            {
                SelectedPayment = testPayment,
            };

            // Execute
            viewmodel.AmountString = amount;

            // Assert
            viewmodel.AmountString.ShouldBe(convertedAmount.ToString("N", CultureInfo.CurrentCulture));
        }
示例#6
0
        public void Save_CorrectlyCalled()
        {
            // Arrange
            base.Setup();
            bool saveCalled         = false;
            var  paymentServiceMock = new Mock <IPaymentService>();

            paymentServiceMock.Setup(x => x.SavePayments(It.IsAny <Payment>()))
            .Callback(() => saveCalled = true)
            .Returns(Task.CompletedTask);

            var payment = new PaymentViewModel
            {
                ChargedAccount = new AccountViewModel(new Account())
                {
                    Name = "Konto"
                }
            };

            var viewmodel = new ModifyPaymentViewModel(paymentServiceMock.Object,
                                                       new Mock <IAccountService>().Object,
                                                       new Mock <IDialogService>().Object,
                                                       new Mock <ISettingsManager>().Object,
                                                       new Mock <IMvxMessenger>().Object,
                                                       new Mock <IBackupManager>().Object,
                                                       new Mock <IMvxLogProvider>().Object,
                                                       new Mock <IMvxNavigationService>().Object);

            // Act
            viewmodel.SelectedPayment = payment;
            viewmodel.SaveCommand.Execute();

            //Assert
            Assert.True(saveCalled);
        }
示例#7
0
        public void Init_TransferNotEditing_PropertiesSetupCorrectly()
        {
            var accountRepoMock = new Mock <IAccountRepository>();

            accountRepoMock.Setup(x => x.Load(It.IsAny <Expression <Func <Account, bool> > >()));
            accountRepoMock.Setup(x => x.GetList(null))
            .Returns(new List <Account> {
                new Account {
                    Id = 3
                }
            });

            var paymentManager = new PaymentManager(new Mock <IPaymentRepository>().Object,
                                                    accountRepoMock.Object,
                                                    new Mock <IRecurringPaymentRepository>().Object,
                                                    new Mock <IDialogService>().Object);

            var viewmodel = new ModifyPaymentViewModel(new Mock <IPaymentRepository>().Object,
                                                       accountRepoMock.Object,
                                                       new Mock <IDialogService>().Object,
                                                       paymentManager);

            //Execute and Assert
            viewmodel.Init(PaymentType.Transfer);
            viewmodel.SelectedPayment.Type.ShouldBe((int)PaymentType.Transfer);
            viewmodel.SelectedPayment.IsTransfer.ShouldBeTrue();
            viewmodel.SelectedPayment.IsRecurring.ShouldBeFalse();
        }
示例#8
0
        public void AmountString_CorrectConvertedAmount(string amount, double convertedAmount, string culture)
        {
            // Arrange
            Thread.CurrentThread.CurrentCulture = new CultureInfo(culture, false);

            var settingsManagerMock = new Mock <ISettingsManager>();

            settingsManagerMock.SetupAllProperties();

            var testPayment = new PaymentViewModel(new Payment());

            var viewmodel = new ModifyPaymentViewModel(new Mock <IPaymentService>().Object,
                                                       new Mock <IAccountService>().Object,
                                                       new Mock <IDialogService>().Object,
                                                       settingsManagerMock.Object,
                                                       new Mock <IMvxMessenger>().Object,
                                                       new Mock <IBackupManager>().Object,
                                                       new Mock <IMvxLogProvider>().Object,
                                                       new Mock <IMvxNavigationService>().Object)
            {
                SelectedPayment = testPayment
            };

            // Act
            viewmodel.AmountString = amount;

            // Assert
            viewmodel.AmountString.ShouldEqual(convertedAmount.ToString("N", CultureInfo.CurrentCulture));
        }
示例#9
0
        public void Save_NoAccount_AccountRequiredInfoShown()
        {
            // Arrange
            base.Setup();
            bool dialogShown = false;

            var dialogServiceMock = new Mock <IDialogService>();

            dialogServiceMock.Setup(x => x.ShowMessage(It.Is <string>(s => s == Strings.MandatoryFieldEmptyTitle),
                                                       It.Is <string>(s => s == Strings.AccountRequiredMessage)))
            .Callback(() => dialogShown = true)
            .Returns(Task.CompletedTask);

            var viewmodel = new ModifyPaymentViewModel(new Mock <IPaymentService>().Object,
                                                       new Mock <IAccountService>().Object,
                                                       dialogServiceMock.Object,
                                                       new Mock <ISettingsManager>().Object,
                                                       new Mock <IMvxMessenger>().Object,
                                                       new Mock <IBackupManager>().Object,
                                                       new Mock <IMvxLogProvider>().Object,
                                                       new Mock <IMvxNavigationService>().Object);

            // Act
            viewmodel.SelectedPayment = new PaymentViewModel();
            viewmodel.SaveCommand.Execute();

            //Assert
            Assert.True(dialogShown);
        }
示例#10
0
        public async void Init_IncomeNotEditing_PropertiesSetupCorrectly(PaymentType type)
        {
            // Arrange
            var accountServiceMock = new Mock <IAccountService>();

            accountServiceMock.Setup(x => x.GetAllAccounts()).ReturnsAsync(new List <Account>());

            var settingsManagerMock = new Mock <ISettingsManager>();

            settingsManagerMock.SetupAllProperties();

            var viewmodel = new ModifyPaymentViewModel(new Mock <IPaymentService>().Object,
                                                       accountServiceMock.Object,
                                                       new Mock <IDialogService>().Object,
                                                       settingsManagerMock.Object,
                                                       new Mock <IMvxMessenger>().Object,
                                                       new Mock <IBackupManager>().Object,
                                                       new Mock <IMvxLogProvider>().Object,
                                                       new Mock <IMvxNavigationService>().Object);

            viewmodel.Prepare(new ModifyPaymentParameter(type));
            await viewmodel.Initialize();

            // Act / Assert
            viewmodel.SelectedPayment.ShouldNotBeNull();
            viewmodel.SelectedPayment.Type.ShouldEqual(type);
            viewmodel.SelectedPayment.IsTransfer.ShouldBeFalse();
            viewmodel.SelectedPayment.IsRecurring.ShouldBeFalse();
        }
示例#11
0
        public void SaveCommand_RecurrenceStringBiweekly_RecurrenceSetCorrectly()
        {
            //setup
            var testPayment = new Payment();

            var paymentRepoSetup = new Mock <IPaymentRepository>();
            var accountRepoMock  = new Mock <IAccountRepository>();

            accountRepoMock.Setup(x => x.Load(It.IsAny <Expression <Func <Account, bool> > >()));

            var paymentManagerMock = new Mock <IPaymentManager>();

            paymentManagerMock.Setup(x => x.SavePayment(It.IsAny <Payment>())).Callback((Payment payment) => testPayment = payment);

            var viewmodel = new ModifyPaymentViewModel(paymentRepoSetup.Object,
                                                       accountRepoMock.Object,
                                                       new Mock <IDialogService>().Object,
                                                       paymentManagerMock.Object);

            viewmodel.Init(PaymentType.Income);
            viewmodel.SelectedPayment.ChargedAccount = new Account();
            viewmodel.SelectedPayment.IsRecurring    = true;
            viewmodel.RecurrenceString = Strings.BiweeklyLabel;

            // execute
            viewmodel.SaveCommand.Execute();

            //Assert
            testPayment.RecurringPayment.ShouldNotBeNull();
            testPayment.RecurringPayment.Recurrence.ShouldBe((int)PaymentRecurrence.Biweekly);
        }
        public void SaveCommand_Recurrence_RecurrenceSetCorrectly(PaymentRecurrence recurrence)
        {
            // Arrange
            var testPayment = new Payment();

            var settingsManagerMock = new Mock <ISettingsManager>();

            settingsManagerMock.SetupAllProperties();

            var paymentServiceMock = new Mock <IPaymentService>();

            paymentServiceMock.Setup(x => x.SavePayment(It.IsAny <Payment>()))
            .Callback((Payment payment) => testPayment = payment)
            .Returns(Task.CompletedTask);

            var viewmodel = new ModifyPaymentViewModel(paymentServiceMock.Object,
                                                       new Mock <IAccountService>().Object,
                                                       new Mock <IDialogService>().Object,
                                                       settingsManagerMock.Object,
                                                       new Mock <IMvxMessenger>().Object,
                                                       new Mock <IBackupManager>().Object);

            viewmodel.Init(PaymentType.Income);
            viewmodel.SelectedPayment.ChargedAccount = new AccountViewModel(new Account());
            viewmodel.SelectedPayment.IsRecurring    = true;
            viewmodel.Recurrence = recurrence;

            // Act
            viewmodel.SaveCommand.Execute();

            // Assert
            testPayment.Data.RecurringPayment.ShouldNotBeNull();
            testPayment.Data.RecurringPayment.Recurrence.ShouldBe(recurrence);
        }
        public void Save_UpdateTimeStamp()
        {
            // Arrange
            var account = new AccountEntity {
                Id = 3, Name = "3"
            };
            var selectedPayment = new Payment
            {
                Data =
                {
                    ChargedAccount = account
                }
            };

            var localDateSetting = DateTime.MinValue;

            var settingsManagerMock = new Mock <ISettingsManager>();

            settingsManagerMock.SetupSet(x => x.LastDatabaseUpdate = It.IsAny <DateTime>())
            .Callback((DateTime x) => localDateSetting             = x);

            var paymentServiceMock = new Mock <IPaymentService>();

            paymentServiceMock.Setup(x => x.GetById(It.IsAny <int>())).ReturnsAsync(selectedPayment);
            paymentServiceMock.Setup(x => x.SavePayment(selectedPayment)).Returns(Task.CompletedTask);

            var accountServiceMock = new Mock <IAccountService>();

            accountServiceMock.Setup(x => x.GetAllAccounts())
            .ReturnsAsync(new List <Account> {
                new Account {
                    Data = { Id = 3, Name = "3" }
                }
            });

            var dialogService = new Mock <IDialogService>().Object;

            var viewmodel = new ModifyPaymentViewModel(paymentServiceMock.Object,
                                                       accountServiceMock.Object,
                                                       dialogService,
                                                       settingsManagerMock.Object,
                                                       new Mock <IMvxMessenger>().Object,
                                                       new Mock <IBackupManager>().Object,
                                                       new Mock <IMvxNavigationService>().Object)
            {
                SelectedPayment =
                    new PaymentViewModel(selectedPayment)
                {
                    ChargedAccount = new AccountViewModel(new Account(account))
                }
            };

            // Act
            viewmodel.SaveCommand.Execute();

            // Assert
            localDateSetting.ShouldBeGreaterThan(DateTime.Now.AddSeconds(-1));
            localDateSetting.ShouldBeLessThan(DateTime.Now.AddSeconds(1));
        }
        public void Save_UpdateTimeStamp()
        {
            var selectedPayment = new PaymentViewModel
            {
                ChargedAccountId = 3,
                ChargedAccount   = new AccountViewModel {
                    Id = 3, Name = "3"
                }
            };

            var localDateSetting = DateTime.MinValue;

            var settingsManagerMock = new Mock <ISettingsManager>();

            settingsManagerMock.SetupSet(x => x.LastDatabaseUpdate = It.IsAny <DateTime>())
            .Callback((DateTime x) => localDateSetting             = x);

            var paymentRepoSetup = new Mock <IPaymentRepository>();

            paymentRepoSetup.Setup(x => x.GetList(null)).Returns(new List <PaymentViewModel>());
            paymentRepoSetup.Setup(x => x.FindById(It.IsAny <int>())).Returns(selectedPayment);
            paymentRepoSetup.Setup(x => x.Save(selectedPayment)).Returns(true);

            var accountRepoMock = new Mock <IAccountRepository>();

            accountRepoMock.Setup(x => x.GetList(null))
            .Returns(new List <AccountViewModel> {
                new AccountViewModel {
                    Id = 3, Name = "3"
                }
            });

            var dialogService = new Mock <IDialogService>().Object;

            var paymentManagerSetup = new Mock <IPaymentManager>();

            paymentManagerSetup.Setup(x => x.SavePayment(It.IsAny <PaymentViewModel>())).Returns(true);
            paymentManagerSetup.Setup(x => x.AddPaymentAmount(It.IsAny <PaymentViewModel>())).Returns(true);

            var viewmodel = new ModifyPaymentViewModel(paymentRepoSetup.Object,
                                                       accountRepoMock.Object,
                                                       dialogService,
                                                       paymentManagerSetup.Object,
                                                       settingsManagerMock.Object,
                                                       new Mock <IMvxMessenger>().Object,
                                                       new Mock <IBackupManager>().Object)
            {
                SelectedPayment = selectedPayment
            };

            viewmodel.SaveCommand.Execute();

            localDateSetting.ShouldBeGreaterThan(DateTime.Now.AddSeconds(-1));
            localDateSetting.ShouldBeLessThan(DateTime.Now.AddSeconds(1));
        }
示例#15
0
        public void Init_IncomeEditing_PropertiesSetupCorrectly()
        {
            Mvx.RegisterSingleton(() => new Mock <IMvxMessenger>().Object);

            var testEndDate = new DateTime(2099, 1, 31);

            var paymentRepoSetup = new Mock <IPaymentRepository>();

            paymentRepoSetup.SetupGet(x => x.Selected).Returns(new Payment
            {
                Type             = (int)PaymentType.Income,
                IsRecurring      = true,
                RecurringPayment = new RecurringPayment
                {
                    EndDate = testEndDate
                }
            });

            var accountRepoMock = new Mock <IAccountRepository>();

            accountRepoMock.Setup(x => x.Load(It.IsAny <Expression <Func <Account, bool> > >()));
            accountRepoMock.SetupAllProperties();

            var accountRepo = accountRepoMock.Object;

            accountRepo.Data = new ObservableCollection <Account>();

            var paymentManager = new PaymentManager(paymentRepoSetup.Object,
                                                    accountRepo,
                                                    new Mock <IDialogService>().Object);


            var defaultManager = new DefaultManager(accountRepo,
                                                    new SettingDataAccess(new Mock <IRoamingSettings>().Object));

            var viewmodel = new ModifyPaymentViewModel(paymentRepoSetup.Object,
                                                       accountRepo,
                                                       new Mock <IDialogService>().Object,
                                                       paymentManager,
                                                       defaultManager);

            //Execute and Assert
            viewmodel.SelectedPayment.ShouldNotBeNull();

            viewmodel.Init("Income", true);
            viewmodel.SelectedPayment.Type.ShouldBe((int)PaymentType.Income);
            viewmodel.SelectedPayment.IsTransfer.ShouldBeFalse();
            viewmodel.SelectedPayment.IsRecurring.ShouldBeTrue();
            viewmodel.SelectedPayment.RecurringPayment.EndDate.ShouldBe(testEndDate);
            viewmodel.SelectedPayment.RecurringPayment.IsEndless.ShouldBeFalse();
        }
示例#16
0
        public async void Init_IncomeEditing_PropertiesSetupCorrectly(PaymentType type)
        {
            // Arrange
            var testEndDate = new DateTime(2099, 1, 31);

            var paymentServiceMock = new Mock <IPaymentService>();

            paymentServiceMock.Setup(x => x.GetById(It.IsAny <int>())).ReturnsAsync(new Payment
            {
                Data =
                {
                    Type             = type,
                    IsRecurring      = true,
                    RecurringPayment = new RecurringPaymentEntity
                    {
                        EndDate      = testEndDate
                    }
                }
            });

            var accountServiceMock = new Mock <IAccountService>();

            accountServiceMock.Setup(x => x.GetAllAccounts()).ReturnsAsync(new List <Account>());

            var settingsManagerMock = new Mock <ISettingsManager>();

            settingsManagerMock.SetupAllProperties();

            var viewmodel = new ModifyPaymentViewModel(paymentServiceMock.Object,
                                                       accountServiceMock.Object,
                                                       new Mock <IDialogService>().Object,
                                                       settingsManagerMock.Object,
                                                       new Mock <IMvxMessenger>().Object,
                                                       new Mock <IBackupManager>().Object,
                                                       new Mock <IMvxLogProvider>().Object,
                                                       new Mock <IMvxNavigationService>().Object);

            // Act
            viewmodel.Prepare(new ModifyPaymentParameter(type, 12));
            await viewmodel.Initialize();

            // Assert
            viewmodel.SelectedPayment.ShouldNotBeNull();
            viewmodel.SelectedPayment.Type.ShouldEqual(type);
            viewmodel.SelectedPayment.IsTransfer.ShouldBeFalse();
            viewmodel.SelectedPayment.IsRecurring.ShouldBeTrue();
            viewmodel.SelectedPayment.RecurringPayment.EndDate.ShouldEqual(testEndDate);
            viewmodel.SelectedPayment.RecurringPayment.IsEndless.ShouldBeFalse();
        }
示例#17
0
        public void Init_IncomeEditing_PropertiesSetupCorrectly()
        {
            var testEndDate = new DateTime(2099, 1, 31);

            var paymentRepoSetup = new Mock <IPaymentRepository>();

            paymentRepoSetup.Setup(x => x.FindById(It.IsAny <int>())).Returns(new Payment
            {
                Type             = (int)PaymentType.Income,
                IsRecurring      = true,
                RecurringPayment = new RecurringPayment
                {
                    EndDate = testEndDate
                }
            });

            var accountRepoMock = new Mock <IAccountRepository>();

            accountRepoMock.Setup(x => x.Load(It.IsAny <Expression <Func <Account, bool> > >()));
            accountRepoMock.Setup(x => x.GetList(null)).Returns(new List <Account>());

            var paymentManager = new PaymentManager(paymentRepoSetup.Object,
                                                    accountRepoMock.Object,
                                                    new Mock <IRecurringPaymentRepository>().Object,
                                                    new Mock <IDialogService>().Object);

            var settingsManagerMock = new Mock <ISettingsManager>();

            settingsManagerMock.SetupAllProperties();

            Mvx.RegisterType(() => settingsManagerMock.Object);

            var viewmodel = new ModifyPaymentViewModel(paymentRepoSetup.Object,
                                                       accountRepoMock.Object,
                                                       new Mock <IDialogService>().Object,
                                                       paymentManager,
                                                       settingsManagerMock.Object);

            viewmodel.Init(PaymentType.Income, 12);

            //Execute and Assert
            viewmodel.SelectedPayment.ShouldNotBeNull();
            viewmodel.SelectedPayment.Type.ShouldBe((int)PaymentType.Income);
            viewmodel.SelectedPayment.IsTransfer.ShouldBeFalse();
            viewmodel.SelectedPayment.IsRecurring.ShouldBeTrue();
            viewmodel.SelectedPayment.RecurringPayment.EndDate.ShouldBe(testEndDate);
            viewmodel.SelectedPayment.RecurringPayment.IsEndless.ShouldBeFalse();
        }
示例#18
0
        public void Save_UpdateTimeStamp()
        {
            var selectedPayment = new Payment
            {
                ChargedAccountId = 3,
                ChargedAccount   = new Account {
                    Id = 3, Name = "3"
                }
            };

            var paymentRepoSetup = new Mock <IPaymentRepository>();

            paymentRepoSetup.Setup(x => x.GetList(null)).Returns(new List <Payment>());
            paymentRepoSetup.Setup(x => x.FindById(It.IsAny <int>())).Returns(selectedPayment);
            paymentRepoSetup.Setup(x => x.Save(selectedPayment)).Returns(true);

            var accountRepoMock = new Mock <IAccountRepository>();

            accountRepoMock.Setup(x => x.Load(It.IsAny <Expression <Func <Account, bool> > >()));
            accountRepoMock.Setup(x => x.GetList(null))
            .Returns(new List <Account> {
                new Account {
                    Id = 3, Name = "3"
                }
            });

            var dialogService = new Mock <IDialogService>().Object;

            var paymentManagerSetup = new Mock <IPaymentManager>();

            paymentManagerSetup.Setup(x => x.SavePayment(It.IsAny <Payment>())).Returns(true);
            paymentManagerSetup.Setup(x => x.AddPaymentAmount(It.IsAny <Payment>())).Returns(true);

            var viewmodel = new ModifyPaymentViewModel(paymentRepoSetup.Object,
                                                       accountRepoMock.Object,
                                                       dialogService,
                                                       paymentManagerSetup.Object)
            {
                SelectedPayment = selectedPayment
            };

            viewmodel.SaveCommand.Execute();

            localDateSetting.ShouldBeGreaterThan(DateTime.Now.AddSeconds(-1));
            localDateSetting.ShouldBeLessThan(DateTime.Now.AddSeconds(1));
        }
        public void Save_UpdateTimeStamp()
        {
            Mvx.RegisterSingleton(() => new Mock <IMvxMessenger>().Object);

            var paymentRepoSetup = new Mock <IPaymentRepository>();

            paymentRepoSetup.SetupGet(x => x.Selected).Returns(new Payment {
                ChargedAccountId = 3, ChargedAccount = new Account {
                    Id = 3, Name = "3"
                },
            });
            paymentRepoSetup.Setup(x => x.Save(paymentRepoSetup.Object.Selected)).Returns(true);

            var paymentManager = new PaymentManager(paymentRepoSetup.Object,
                                                    new Mock <IAccountRepository>().Object,
                                                    new Mock <IDialogService>().Object);

            var accountRepoMock = new Mock <IAccountRepository>();

            accountRepoMock.Setup(x => x.Load(It.IsAny <Expression <Func <Account, bool> > >()));
            accountRepoMock.SetupAllProperties();
            accountRepoMock.Setup(x => x.AddPaymentAmount(paymentRepoSetup.Object.Selected)).Returns(true);

            var accountRepo = accountRepoMock.Object;

            accountRepo.Data = new ObservableCollection <Account> {
                new Account {
                    Id = 3, Name = "3"
                }
            };

            var defaultManager = new DefaultManager(accountRepo);


            var viewmodel = new ModifyPaymentViewModel(paymentRepoSetup.Object,
                                                       accountRepo,
                                                       new Mock <IDialogService>().Object,
                                                       paymentManager,
                                                       defaultManager);

            viewmodel.SaveCommand.Execute();

            localDateSetting.ShouldBeGreaterThan(DateTime.Now.AddSeconds(-1));
            localDateSetting.ShouldBeLessThan(DateTime.Now.AddSeconds(1));
        }
示例#20
0
        public void SelectedItemChangedCommand_UpdatesCorrectely()
        {
            var settingsManagerMock = new Mock <ISettingsManager>();

            settingsManagerMock.SetupAllProperties();

            Mvx.RegisterType(() => settingsManagerMock.Object);

            var accountRepoMock = new Mock <IAccountRepository>();

            accountRepoMock.Setup(x => x.Load(It.IsAny <Expression <Func <Account, bool> > >()));
            accountRepoMock.Setup(x => x.GetList(null)).Returns(new List <Account>());

            var paymentManager = new PaymentManager(new Mock <IPaymentRepository>().Object,
                                                    accountRepoMock.Object,
                                                    new Mock <IRecurringPaymentRepository>().Object,
                                                    new Mock <IDialogService>().Object);

            var viewmodel = new ModifyPaymentViewModel(new Mock <IPaymentRepository>().Object,
                                                       accountRepoMock.Object,
                                                       new Mock <IDialogService>().Object,
                                                       paymentManager,
                                                       settingsManagerMock.Object);

            viewmodel.Init(PaymentType.Income);

            Account test1 = new Account(); //target account
            Account test2 = new Account(); //charge account

            viewmodel.TargetAccounts.Add(test1);
            viewmodel.ChargedAccounts.Add(test1);
            viewmodel.TargetAccounts.Add(test2);
            viewmodel.ChargedAccounts.Add(test2);

            viewmodel.SelectedPayment.TargetAccount  = test1;
            viewmodel.SelectedPayment.ChargedAccount = test2;

            viewmodel.SelectedItemChangedCommand.Execute();

            viewmodel.ChargedAccounts.Contains(viewmodel.SelectedPayment.ChargedAccount).ShouldBeTrue();
            viewmodel.TargetAccounts.Contains(viewmodel.SelectedPayment.TargetAccount).ShouldBeTrue();
            viewmodel.ChargedAccounts.Contains(viewmodel.SelectedPayment.TargetAccount).ShouldBeFalse();
            viewmodel.TargetAccounts.Contains(viewmodel.SelectedPayment.ChargedAccount).ShouldBeFalse();
        }
示例#21
0
        public void Init_SpendingNotEditing_PropertiesSetupCorrectly()
        {
            Mvx.RegisterSingleton(() => new Mock <IMvxMessenger>().Object);

            var paymentRepoSetup = new Mock <IPaymentRepository>();

            paymentRepoSetup.SetupGet(x => x.Selected).Returns(new Payment {
                ChargedAccountId = 3
            });

            var paymentManager = new PaymentManager(paymentRepoSetup.Object,
                                                    new Mock <IAccountRepository>().Object,
                                                    new Mock <IDialogService>().Object);

            var accountRepoMock = new Mock <IAccountRepository>();

            accountRepoMock.Setup(x => x.Load(It.IsAny <Expression <Func <Account, bool> > >()));
            accountRepoMock.SetupAllProperties();

            var accountRepo = accountRepoMock.Object;

            accountRepo.Data = new ObservableCollection <Account> {
                new Account {
                    Id = 3
                }
            };

            var defaultManager = new DefaultManager(accountRepo,
                                                    new SettingDataAccess(new Mock <IRoamingSettings>().Object));

            var viewmodel = new ModifyPaymentViewModel(paymentRepoSetup.Object,
                                                       accountRepo,
                                                       new Mock <IDialogService>().Object,
                                                       paymentManager,
                                                       defaultManager);


            //Execute and Assert
            viewmodel.Init("Income", true);
            viewmodel.SelectedPayment.Type.ShouldBe((int)PaymentType.Expense);
            viewmodel.SelectedPayment.IsTransfer.ShouldBeFalse();
            viewmodel.SelectedPayment.IsRecurring.ShouldBeFalse();
        }
        public void SelectedItemChangedCommand_UpdatesCorrectely()
        {
            var settingsManagerMock = new Mock <ISettingsManager>();

            settingsManagerMock.SetupAllProperties();

            var accountRepoMock = new Mock <IAccountRepository>();

            accountRepoMock.Setup(x => x.GetList(null)).Returns(new List <AccountViewModel>());

            var paymentManager = new PaymentManager(new Mock <IPaymentRepository>().Object,
                                                    accountRepoMock.Object,
                                                    new Mock <IRecurringPaymentRepository>().Object,
                                                    new Mock <IDialogService>().Object);

            var viewmodel = new ModifyPaymentViewModel(new Mock <IPaymentRepository>().Object,
                                                       accountRepoMock.Object,
                                                       new Mock <IDialogService>().Object,
                                                       paymentManager,
                                                       settingsManagerMock.Object,
                                                       new Mock <IMvxMessenger>().Object,
                                                       new Mock <IBackupManager>().Object);

            viewmodel.Init(PaymentType.Income);

            AccountViewModel test1 = new AccountViewModel(); //target AccountViewModel
            AccountViewModel test2 = new AccountViewModel(); //charge AccountViewModel

            viewmodel.TargetAccounts.Add(test1);
            viewmodel.ChargedAccounts.Add(test1);
            viewmodel.TargetAccounts.Add(test2);
            viewmodel.ChargedAccounts.Add(test2);

            viewmodel.SelectedPayment.TargetAccount  = test1;
            viewmodel.SelectedPayment.ChargedAccount = test2;

            viewmodel.SelectedItemChangedCommand.Execute();

            viewmodel.ChargedAccounts.Contains(viewmodel.SelectedPayment.ChargedAccount).ShouldBeTrue();
            viewmodel.TargetAccounts.Contains(viewmodel.SelectedPayment.TargetAccount).ShouldBeTrue();
            viewmodel.ChargedAccounts.Contains(viewmodel.SelectedPayment.TargetAccount).ShouldBeFalse();
            viewmodel.TargetAccounts.Contains(viewmodel.SelectedPayment.ChargedAccount).ShouldBeFalse();
        }
示例#23
0
        public void GoToAddPayment_PaymentType_CorrectPreparation(string typestring, PaymentType type)
        {
            Setup();
            // for navigation parsing
            Ioc.RegisterSingleton <IMvxStringToTypeParser>(new MvxStringToTypeParser());

            var dbHelper          = new Mock <ISqliteConnectionCreator>().Object;
            var accountRepository = new AccountRepository(new AccountDataAccess(dbHelper));
            var paymentRepository = new PaymentRepository(new PaymentDataAccess(dbHelper),
                                                          new RecurringPaymentDataAccess(dbHelper),
                                                          accountRepository,
                                                          new CategoryRepository(new CategoryDataAccess(dbHelper)));
            var paymentManager = new PaymentManager(paymentRepository, accountRepository,
                                                    new Mock <IDialogService>().Object);

            var defaultManager = new DefaultManager(accountRepository,
                                                    new SettingDataAccess(new Mock <IRoamingSettings>().Object));

            var modifyPaymentViewModel =
                new ModifyPaymentViewModel(paymentRepository,
                                           accountRepository,
                                           new Mock <IDialogService>().Object,
                                           paymentManager,
                                           defaultManager);

            var mainViewModel = new MainViewModel();

            mainViewModel.GoToAddPaymentCommand.Execute(typestring);

            Assert.False(modifyPaymentViewModel.IsEdit);
            Assert.True(modifyPaymentViewModel.IsEndless);
            if (type == PaymentType.Transfer)
            {
                Assert.True(modifyPaymentViewModel.IsTransfer);
            }
            else
            {
                Assert.False(modifyPaymentViewModel.IsTransfer);
            }
            Assert.Equal((int)type, modifyPaymentViewModel.SelectedPayment.Type);
        }
示例#24
0
        public void Save_OldDate_InvalidDateInfoShown()
        {
            // Arrange
            base.Setup();
            bool dialogShown = false;

            var dialogServiceMock = new Mock <IDialogService>();

            dialogServiceMock.Setup(x => x.ShowMessage(It.Is <string>(s => s == Strings.InvalidEnddateTitle),
                                                       It.Is <string>(s => s == Strings.InvalidEnddateMessage)))
            .Callback(() => dialogShown = true)
            .Returns(Task.CompletedTask);


            var payment = new PaymentViewModel
            {
                ChargedAccount = new AccountViewModel(new Account())
                {
                    Name = "Konto"
                },
                IsRecurring = true,
                Date        = DateTime.Now.AddDays(-2)
            };

            var viewmodel = new ModifyPaymentViewModel(new Mock <IPaymentService>().Object,
                                                       new Mock <IAccountService>().Object,
                                                       dialogServiceMock.Object,
                                                       new Mock <ISettingsManager>().Object,
                                                       new Mock <IMvxMessenger>().Object,
                                                       new Mock <IBackupManager>().Object,
                                                       new Mock <IMvxLogProvider>().Object,
                                                       new Mock <IMvxNavigationService>().Object);

            // Act
            viewmodel.SelectedPayment = payment;
            viewmodel.SaveCommand.Execute();

            //Assert
            Assert.True(dialogShown);
        }
示例#25
0
        public async void SaveCommand_Recurrence_RecurrenceSetCorrectly(PaymentRecurrence recurrence)
        {
            // Arrange
            base.Setup();
            var testPayment = new Payment();

            var settingsManagerMock = new Mock <ISettingsManager>();

            settingsManagerMock.SetupAllProperties();

            var paymentServiceMock = new Mock <IPaymentService>();

            paymentServiceMock.Setup(x => x.SavePayments(It.IsAny <Payment[]>()))
            .Callback((Payment[] payment) => testPayment = payment.First())
            .Returns(Task.CompletedTask);

            var viewmodel = new ModifyPaymentViewModel(paymentServiceMock.Object,
                                                       new Mock <IAccountService>().Object,
                                                       new Mock <IDialogService>().Object,
                                                       settingsManagerMock.Object,
                                                       new Mock <IMvxMessenger>().Object,
                                                       new Mock <IBackupManager>().Object,
                                                       new Mock <IMvxLogProvider>().Object,
                                                       new Mock <IMvxNavigationService>().Object);

            viewmodel.Prepare(new ModifyPaymentParameter(PaymentType.Income));
            await viewmodel.Initialize();

            viewmodel.SelectedPayment.ChargedAccount = new AccountViewModel(new Account());
            viewmodel.SelectedPayment.IsRecurring    = true;
            viewmodel.Recurrence = recurrence;

            // Act
            viewmodel.SaveCommand.Execute();

            // Assert
            testPayment.Data.RecurringPayment.ShouldNotBeNull();
            testPayment.Data.RecurringPayment.Recurrence.ShouldEqual(recurrence);
        }
        public void SaveCommand_Recurrence_RecurrenceSetCorrectly(PaymentRecurrence recurrence)
        {
            //setup
            var testPayment = new PaymentViewModel();

            var paymentRepoSetup = new Mock <IPaymentRepository>();
            var accountRepoMock  = new Mock <IAccountRepository>();

            var settingsManagerMock = new Mock <ISettingsManager>();

            settingsManagerMock.SetupAllProperties();

            var paymentManagerMock = new Mock <IPaymentManager>();

            paymentManagerMock.Setup(x => x.SavePayment(It.IsAny <PaymentViewModel>())).Callback((PaymentViewModel payment) => testPayment = payment);

            var viewmodel = new ModifyPaymentViewModel(paymentRepoSetup.Object,
                                                       accountRepoMock.Object,
                                                       new Mock <IDialogService>().Object,
                                                       paymentManagerMock.Object,
                                                       settingsManagerMock.Object,
                                                       new Mock <IMvxMessenger>().Object,
                                                       new Mock <IBackupManager>().Object);

            viewmodel.Init(PaymentType.Income);
            viewmodel.SelectedPayment.ChargedAccount = new AccountViewModel();
            viewmodel.SelectedPayment.IsRecurring    = true;
            viewmodel.Recurrence = recurrence;

            // execute
            viewmodel.SaveCommand.Execute();

            //Assert
            testPayment.RecurringPayment.ShouldNotBeNull();
            testPayment.RecurringPayment.Recurrence.ShouldBe(recurrence);
        }