Exemple #1
0
        public async void Add_WithRecurringPayment()
        {
            // Arrange
            var factory    = new DbFactory();
            var unitOfWork = new UnitOfWork(factory);

            var repository = new PaymentRepository(factory);

            var testAccount = new AccountEntity {
                Name = "testAccount"
            };
            var testEntry = new PaymentEntity
            {
                ChargedAccount   = testAccount,
                RecurringPayment = new RecurringPaymentEntity
                {
                    ChargedAccount = testAccount,
                    Recurrence     = PaymentRecurrence.Bimonthly,
                    IsEndless      = true
                },
                IsRecurring = true,
                Note        = "Testtext"
            };

            // Act
            repository.Add(testEntry);
            await unitOfWork.Commit();

            // Assert
            Assert.NotNull(testEntry.Id);
            Assert.NotEqual(0, testEntry.Id);
            Assert.NotEqual(0, testEntry.RecurringPayment.Id);
            Assert.NotEqual(0, testEntry.RecurringPaymentId);
        }
        public async void DeleteAccount_RelatedChargedPaymentsRemoved()
        {
            // Arrange
            var unitOfWork = new UnitOfWork(dbFactory);

            var accountRepository = new AccountRepository(dbFactory);
            var paymentRepository = new PaymentRepository(dbFactory);

            var account = new AccountEntity
            {
                Name = "Testtext"
            };

            var payment = new PaymentEntity
            {
                Note           = "Foo",
                ChargedAccount = account
            };

            accountRepository.Add(account);
            paymentRepository.Add(payment);
            await unitOfWork.Commit();

            Assert.Equal(1, await accountRepository.GetAll().CountAsync());
            Assert.Equal(1, await paymentRepository.GetAll().CountAsync());

            // Act
            accountRepository.Delete(account);
            await unitOfWork.Commit();

            // Assert
            Assert.False(await accountRepository.GetAll().AnyAsync());
            Assert.False(await paymentRepository.GetAll().AnyAsync());
        }
Exemple #3
0
        public async void Delete_EntryMatchedFilterDeleted()
        {
            // Arrange
            var factory    = new DbFactory();
            var unitOfWork = new UnitOfWork(factory);

            var filterText = "Text";
            var repository = new PaymentRepository(factory);
            var testEntry1 = new PaymentEntity
            {
                ChargedAccount = new AccountEntity {
                    Name = "testAccount"
                },
                Note = filterText
            };
            var testEntry2 = new PaymentEntity {
                ChargedAccount = new AccountEntity {
                    Name = "testAccount"
                }
            };

            repository.Add(testEntry1);
            repository.Add(testEntry2);
            await unitOfWork.Commit();

            // Act
            repository.Delete(x => x.Note == filterText);
            await unitOfWork.Commit();

            // Assert
            Assert.Equal(1, repository.GetAll().Count());
        }
Exemple #4
0
        public async void GetAll_AllDataReturned()
        {
            // Arrange
            var factory    = new DbFactory();
            var unitOfWork = new UnitOfWork(factory);

            var repository = new PaymentRepository(factory);

            repository.Add(new PaymentEntity {
                ChargedAccount = new AccountEntity {
                    Name = "testAccount"
                }
            });
            repository.Add(new PaymentEntity {
                ChargedAccount = new AccountEntity {
                    Name = "testAccount"
                }
            });
            repository.Add(new PaymentEntity {
                ChargedAccount = new AccountEntity {
                    Name = "testAccount"
                }
            });
            await unitOfWork.Commit();

            // Act
            var resultList = repository.GetAll().ToList();

            // Assert
            Assert.NotNull(resultList);
            Assert.Equal(3, resultList.Count);
        }
Exemple #5
0
        public async void Get_NothingMatched()
        {
            // Arrange
            var factory    = new DbFactory();
            var unitOfWork = new UnitOfWork(factory);

            var repository = new PaymentRepository(factory);

            repository.Add(new PaymentEntity {
                ChargedAccount = new AccountEntity {
                    Name = "testAccount"
                }
            });
            repository.Add(new PaymentEntity {
                ChargedAccount = new AccountEntity {
                    Name = "testAccount"
                }
            });
            repository.Add(new PaymentEntity {
                ChargedAccount = new AccountEntity {
                    Name = "testAccount"
                }
            });
            await unitOfWork.Commit();

            // Act
            var result = await repository.Get(x => x.Note == "text");

            // Assert
            Assert.Null(result);
        }
Exemple #6
0
        public async void Update_IdUnchanged()
        {
            // Arrange
            var factory    = new DbFactory();
            var unitOfWork = new UnitOfWork(factory);

            var repository = new PaymentRepository(factory);

            var testEntry = new PaymentEntity
            {
                ChargedAccount = new AccountEntity {
                    Name = "testAccount"
                },
                Note = "Testtext"
            };

            // Act
            repository.Add(testEntry);
            await unitOfWork.Commit();

            var idBeforeUpdate = testEntry.Id;

            repository.Update(testEntry);
            await unitOfWork.Commit();

            // Assert
            Assert.Equal(idBeforeUpdate, testEntry.Id);
        }
        public void Run(IBackgroundTaskInstance taskInstance)
        {
            var deferral = taskInstance.GetDeferral();

            try
            {
                MapperConfiguration.Setup();

                var dbManager = new DatabaseManager(new WindowsSqliteConnectionFactory(),
                                                    new MvxWindowsCommonFileStore());

                var paymentRepository = new PaymentRepository(dbManager);

                var paymentManager = new PaymentManager(paymentRepository,
                                                        new AccountRepository(dbManager),
                                                        new RecurringPaymentRepository(dbManager),
                                                        null);

                PaymentRepository.IsCacheMarkedForReload = true;

                new RecurringPaymentManager(paymentManager, paymentRepository,
                                            new SettingsManager(new WindowsUwpSettings())).CheckRecurringPayments();
            }
            finally
            {
                deferral.Complete();
            }
        }
Exemple #8
0
        protected virtual async Task <Payment> PreparePaymentSwitch(UpdatePaymentMethodParam param, Payment activePayment)
        {
            //TODO: Remove for now, but we should void (Bug with Moneris when payment is PendingVerification).
            await PaymentRepository.RemovePaymentAsync(new VoidOrRemovePaymentParam
            {
                CartName    = param.CartName,
                CultureInfo = param.CultureInfo,
                CustomerId  = param.CustomerId,
                PaymentId   = activePayment.Id,
                Scope       = param.Scope
            }).ConfigureAwait(false);

            var cart = await CartRepository.AddPaymentAsync(new AddPaymentParam
            {
                BillingAddress = activePayment.BillingAddress.Clone(),
                CartName       = param.CartName,
                CultureInfo    = param.CultureInfo,
                CustomerId     = param.CustomerId,
                Scope          = param.Scope
            });

            var newPayment = GetActivePayment(cart);

            return(newPayment);
        }
Exemple #9
0
        public void Load_Payment_DataInitialized()
        {
            var accountRepositorySetup = new Mock <IAccountRepository>();

            accountRepositorySetup.SetupGet(x => x.Data).Returns(new ObservableCollection <Account>());

            var dataAccessSetup = new Mock <IDataAccess <Payment> >();

            dataAccessSetup.Setup(x => x.LoadList(null)).Returns(new List <Payment> {
                new Payment {
                    Id = 10
                },
                new Payment {
                    Id = 15
                }
            });

            var categoryDataAccessSetup = new Mock <IRepository <Category> >();

            categoryDataAccessSetup.SetupGet(x => x.Data).Returns(new ObservableCollection <Category>());


            var paymentRepository = new PaymentRepository(dataAccessSetup.Object,
                                                          new Mock <IDataAccess <RecurringPayment> >().Object,
                                                          accountRepositorySetup.Object,
                                                          categoryDataAccessSetup.Object,
                                                          new Mock <INotificationService>().Object);

            paymentRepository.Load();

            Assert.IsTrue(paymentRepository.Data.Any(x => x.Id == 10));
            Assert.IsTrue(paymentRepository.Data.Any(x => x.Id == 15));
        }
Exemple #10
0
        public async void Add_AddNewEntryOnEveryCall()
        {
            // Arrange
            var factory    = new DbFactory();
            var unitOfWork = new UnitOfWork(factory);

            var repository = new PaymentRepository(factory);

            var testEntry = new PaymentEntity
            {
                ChargedAccount = new AccountEntity {
                    Name = "testAccount"
                },
                Note = "Testtext"
            };

            // Act
            repository.Add(testEntry);
            await unitOfWork.Commit();

            testEntry.Id = 0;
            repository.Add(testEntry);
            await unitOfWork.Commit();

            // Assert
            Assert.Equal(2, repository.GetAll().Count());
        }
Exemple #11
0
 public CreditCardPage(Repository rs, CustomerRepository rp, PaymentRepository rppay)
 {
     InitializeComponent();
     _repositoryp = rppay;
     _reserv_rp   = rs;
     _repository  = rp;
 }
Exemple #12
0
        public void Save_DifferentPaymentTypes_CorrectlySaved()
        {
            var accountRepositorySetup = new Mock <IAccountRepository>();

            accountRepositorySetup.SetupGet(x => x.Data).Returns(new ObservableCollection <Account>());

            var categoryDataAccessSetup = new Mock <IRepository <Category> >();

            categoryDataAccessSetup.SetupGet(x => x.Data).Returns(new ObservableCollection <Category>());

            var paymentDataAccessMock = new PaymentDataAccessMock();
            var repository            = new PaymentRepository(paymentDataAccessMock,
                                                              new RecurringPaymentDataAccessMock(),
                                                              accountRepositorySetup.Object,
                                                              categoryDataAccessSetup.Object,
                                                              new Mock <INotificationService>().Object);

            var account = new Account {
                Id   = 2,
                Name = "TestAccount"
            };

            var payment = new Payment {
                ChargedAccount = account,
                TargetAccount  = null,
                Amount         = 20,
                Type           = (int)PaymentType.Income
            };

            repository.Save(payment);

            Assert.AreSame(payment, paymentDataAccessMock.PaymentTestList[0]);
            Assert.AreEqual((int)PaymentType.Income, paymentDataAccessMock.PaymentTestList[0].Type);
        }
Exemple #13
0
        public async void Delete_AssignedPaymentsSetNull()
        {
            // Arrange
            var factory    = new DbFactory();
            var unitOfWork = new UnitOfWork(factory);

            var categoryRepository = new CategoryRepository(factory);
            var paymentRepository  = new PaymentRepository(factory);

            var category = new CategoryEntity {
                Name = "TestCategory"
            };
            var payment = new PaymentEntity
            {
                ChargedAccount = new AccountEntity {
                    Name = "testAccount"
                },
                Category = category
            };

            categoryRepository.Add(category);
            paymentRepository.Add(payment);
            await unitOfWork.Commit();

            // Act
            categoryRepository.Delete(category);
            await unitOfWork.Commit();

            // Assert
            Assert.Null(payment.Category);
            Assert.Null(paymentRepository.GetById(payment.Id).Result.Category);
        }
Exemple #14
0
 public UnitOfWork(bbuContext context)
 {
     _context             = context;
     Addresses            = new AddressRepository(_context);
     AppUsers             = new AppUserRepository(_context);
     Banks                = new BankRepository(_context);
     BankAccounts         = new BankAccountRepository(_context);
     Cemeteries           = new CemeteryRepository(_context);
     Credentials          = new CredentialsRepository(_context);
     Deceaseds            = new DeceasedRepository(_context);
     Doctors              = new DoctorRepository(_context);
     Employees            = new EmployeeRepository(_context);
     Files                = new FileRepository(_context);
     Funerals             = new FuneralRepository(_context);
     FuneralDocuments     = new FuneralDocumentRepository(_context);
     Genders              = new GenderRepository(_context);
     HomeAffairsOffices   = new HomeAffairsOfficeRepository(_context);
     HomeAffairsOfficers  = new HomeAffairsOfficerRepository(_context);
     Hospitals            = new HospitalRepository(_context);
     Informants           = new InformantRepository(_context);
     Members              = new MemberRepository(_context);
     Months               = new MonthRepository(_context);
     Mortuaries           = new MortuaryRepository(_context);
     NextOfKins           = new NextOfKinRepository(_context);
     NumberConfigurations = new NumberConfigurationRepository(_context);
     Payments             = new PaymentRepository(_context);
     PaymentPeriods       = new PaymentPeriodRepository(_context);
     People               = new PersonRepository(_context);
     PurchaseItems        = new PurchaseItemRepository(_context);
     Settings             = new SettingRepository(_context);
     States               = new StateRepository(_context);
     Suppliers            = new SupplierRepository(_context);
     Tasks                = new TaskRepository(_context);
     Years                = new YearRepository(_context);
 }
        public async Task ShouldRetrieveBillingUser()
        {
            var services = new ServiceCollection().AddEntityFrameworkInMemoryDatabase();

            services.AddSingleton(_webHostEnvironmentMock.Object);
            services.AddDbContext <DataContext>(options =>
            {
                options.UseInMemoryDatabase("InMemoryDB");
            });

            // mapper
            var config = new MapperConfiguration(cfg =>
            {
                cfg.AddProfile <AutoMapperProfiles>();
            });
            IMapper mapper = config.CreateMapper();

            var serviceProvider = services.BuildServiceProvider();

            using (var scope = serviceProvider.CreateScope())
            {
                var scopedServices = scope.ServiceProvider;
                var dataContext    = scopedServices.GetRequiredService <DataContext>();
                DbContextSeed.SeedAsync(dataContext).Wait();

                var paymentRepository          = new PaymentRepository(dataContext, mapper);
                UserForRegisterDto userDetails = await paymentRepository.GetBillingUser(1).ConfigureAwait(false);

                Assert.Equal("Nemo", userDetails.FirstName);
            }
        }
Exemple #16
0
        public async Task Given_AValidPaymentWithCreditCard_When_TryToInsert_Then_IsInsertedWithSuccess()
        {
            // arrange
            var dbContextOptions = new DbContextOptionsBuilder <PaymentGatewayContext>()
                                   .UseInMemoryDatabase(databaseName: "InsertTestDatabase")
                                   .Options;

            PaymentMethod paymentMethod = new CreditCard(
                new CVV("235"),
                "John Doe",
                "9568475845123569",
                new ExpiryDate(this.futureMonth, this.futureYear)
                );

            Payment payment = new Payment(542.50D, "USD", paymentMethod);

            // act
            using (var context = new PaymentGatewayContext(dbContextOptions))
            {
                var repository = new PaymentRepository(context);
                await repository.SaveAsync(payment);
            }

            // assert
            using (var context = new PaymentGatewayContext(dbContextOptions))
            {
                Assert.Equal(1, context.Payment.Count());
                Assert.NotNull(context.Payment.Single());

                var paymentFromDatabase = context.Payment.Include(p => p.PaymentMethod).Single();

                Assert.Equal(542.50D, paymentFromDatabase.Amount);
            }
        }
Exemple #17
0
        public void GetUnclearedPayments_AccountNull()
        {
            var accountRepositorySetup = new Mock <IAccountRepository>();

            accountRepositorySetup.SetupGet(x => x.Data).Returns(new ObservableCollection <Account>());

            var categoryDataAccessSetup = new Mock <IRepository <Category> >();

            categoryDataAccessSetup.SetupGet(x => x.Data).Returns(new ObservableCollection <Category>());

            var repository = new PaymentRepository(new PaymentDataAccessMock(),
                                                   new RecurringPaymentDataAccessMock(),
                                                   accountRepositorySetup.Object,
                                                   categoryDataAccessSetup.Object,
                                                   new Mock <INotificationService>().Object);

            repository.Data.Add(new Payment {
                Amount    = 55,
                Date      = DateTime.Today.AddDays(-1),
                Note      = "this is a note!!!",
                IsCleared = false
            }
                                );

            var payments = repository.GetUnclearedPayments();

            Assert.AreEqual(1, payments.Count());
        }
 public PaymentDataAccess()
 {
     _lineRepository    = new LineRepository();
     _paymentRepository = new PaymentRepository();
     _packageRepository = new PackageRepository();
     _clientRepository  = new ClientRepository();
 }
        public void Save_ExistingEntryUpdated()
        {
            var paymentRepository =
                new PaymentRepository(new DatabaseManager(new WindowsSqliteConnectionFactory(),
                    new MvxWpfFileStore(FILE_ROOT)));
            var testPayment = new Fixture().Create<PaymentViewModel>();
            testPayment.Id = 0;

            try
            {
                paymentRepository.Save(testPayment);
                paymentRepository.FindById(testPayment.Id).ShouldNotBeNull();

                const string updatedNote = "FOOOOOOOOOO";
                testPayment.Note = updatedNote;

                paymentRepository.Save(testPayment);
                paymentRepository.ReloadCache();
                paymentRepository.FindById(testPayment.Id).Note.ShouldBe(updatedNote);
            }
            finally
            {
                paymentRepository.Delete(testPayment);
            }
        }
Exemple #20
0
        public async void Add_AddMultipleEntries()
        {
            // Arrange
            var factory    = new DbFactory();
            var unitOfWork = new UnitOfWork(factory);

            var repository = new PaymentRepository(factory);

            // Act
            repository.Add(new PaymentEntity {
                ChargedAccount = new AccountEntity {
                    Name = "testAccount"
                }
            });
            repository.Add(new PaymentEntity {
                ChargedAccount = new AccountEntity {
                    Name = "testAccount"
                }
            });
            repository.Add(new PaymentEntity {
                ChargedAccount = new AccountEntity {
                    Name = "testAccount"
                }
            });
            await unitOfWork.Commit();

            // Assert
            Assert.Equal(3, repository.GetAll().Count());
        }
Exemple #21
0
        public void AddItemToDataList_SaveAccount_IsAddedToData()
        {
            var accountRepositorySetup = new Mock <IAccountRepository>();

            accountRepositorySetup.SetupGet(x => x.Data).Returns(new ObservableCollection <Account>());

            var categoryDataAccessSetup = new Mock <IRepository <Category> >();

            categoryDataAccessSetup.SetupGet(x => x.Data).Returns(new ObservableCollection <Category>());

            var repository = new PaymentRepository(new PaymentDataAccessMock(),
                                                   new RecurringPaymentDataAccessMock(),
                                                   accountRepositorySetup.Object,
                                                   categoryDataAccessSetup.Object,
                                                   new Mock <INotificationService>().Object);

            var account = new Account {
                Id   = 2,
                Name = "TestAccount"
            };

            var payment = new Payment {
                ChargedAccount = account,
                Amount         = 20,
                Type           = (int)PaymentType.Transfer
            };

            repository.Save(payment);
            Assert.IsTrue(repository.Data.Contains(payment));
        }
 public BookingPage(CustomerRepository rp, PaymentRepository rppay)
 {
     InitializeComponent();
     _repository  = rp;
     _repositoryp = rppay;
     RefreshListBox();
 }
Exemple #23
0
        public void PaymentRepository_Delete()
        {
            var accountRepositorySetup = new Mock <IAccountRepository>();

            accountRepositorySetup.SetupGet(x => x.Data).Returns(new ObservableCollection <Account>());

            var categoryDataAccessSetup = new Mock <IRepository <Category> >();

            categoryDataAccessSetup.SetupGet(x => x.Data).Returns(new ObservableCollection <Category>());

            var paymentDataAccessMock = new PaymentDataAccessMock();
            var repository            = new PaymentRepository(new PaymentDataAccessMock(),
                                                              new RecurringPaymentDataAccessMock(),
                                                              accountRepositorySetup.Object,
                                                              categoryDataAccessSetup.Object,
                                                              new Mock <INotificationService>().Object);

            var account = new Account {
                Id   = 2,
                Name = "TestAccount"
            };

            var payment = new Payment {
                ChargedAccount   = account,
                ChargedAccountId = 2,
                Amount           = 20
            };

            repository.Save(payment);
            Assert.AreSame(payment, repository.Data[0]);

            repository.Delete(payment);

            Assert.IsFalse(repository.Data.Any());
        }
Exemple #24
0
 public UpdatePaymentStatusWithBankResponseCommandHandler(IMediator mediator, ILogger <UpdatePaymentStatusWithBankResponseCommandHandler> logger, PaymentService paymentService, PaymentRepository paymentRepository)
 {
     _logger            = logger;
     _mediator          = mediator;
     _paymentService    = paymentService;
     _paymentRepository = paymentRepository;
 }
        public async void Delete_EntryNotFound()
        {
            // Arrange
            var paymentRepository = new PaymentRepository(ambientDbContextLocator);
            var accountRepository = new AccountRepository(ambientDbContextLocator);

            var testAccount = new AccountEntity {
                Name = "testAccount"
            };

            using (var dbContextScope = dbContextScopeFactory.Create())
            {
                accountRepository.Add(testAccount);
                await dbContextScope.SaveChangesAsync();
            }

            var testEntry = new PaymentEntity {
                ChargedAccount = testAccount
            };

            // Act / Assert
            using (var dbContextScope = dbContextScopeFactory.Create())
            {
                paymentRepository.Delete(testEntry);
                await Assert.ThrowsAsync <DbUpdateConcurrencyException>(async() => await dbContextScope.SaveChangesAsync());
            }
        }
Exemple #26
0
        public async void GetMany_MatchedDataReturned()
        {
            // Arrange
            var factory    = new DbFactory();
            var unitOfWork = new UnitOfWork(factory);

            var repository = new PaymentRepository(factory);
            var filterText = "Text";

            repository.Add(new PaymentEntity
            {
                ChargedAccount = new AccountEntity {
                    Name = "testAccount"
                },
                Note = filterText
            });
            repository.Add(new PaymentEntity {
                ChargedAccount = new AccountEntity {
                    Name = "testAccount"
                }
            });
            repository.Add(new PaymentEntity {
                ChargedAccount = new AccountEntity {
                    Name = "testAccount"
                }
            });
            await unitOfWork.Commit();

            // Act
            var resultList = repository.GetMany(x => x.Note == filterText).ToList();

            // Assert
            Assert.NotNull(resultList);
            Assert.Equal(1, resultList.Count);
        }
        public async void Add_IdSet()
        {
            // Arrange
            var paymentRepository = new PaymentRepository(ambientDbContextLocator);
            var accountRepository = new AccountRepository(ambientDbContextLocator);

            var account = new AccountEntity {
                Name = "testAccount"
            };

            using (var dbContextScope = dbContextScopeFactory.Create())
            {
                accountRepository.Add(account);
                await dbContextScope.SaveChangesAsync();
            }

            var testEntry = new PaymentEntity
            {
                ChargedAccount = account,
                Note           = "Testtext"
            };

            // Act
            using (var dbContextScope = dbContextScopeFactory.Create())
            {
                paymentRepository.Add(testEntry);
                await dbContextScope.SaveChangesAsync();
            }

            // Assert
            Assert.NotNull(testEntry.Id);
            Assert.NotEqual(0, testEntry.Id);
        }
Exemple #28
0
        public async void Update_NoNewEntryAdded()
        {
            // Arrange
            var factory    = new DbFactory();
            var unitOfWork = new UnitOfWork(factory);

            var repository = new PaymentRepository(factory);

            var testEntry = new PaymentEntity
            {
                ChargedAccount = new AccountEntity {
                    Name = "testAccount"
                },
                Note = "Testtext"
            };

            // Act
            repository.Add(testEntry);
            await unitOfWork.Commit();

            repository.Update(testEntry);
            await unitOfWork.Commit();

            // Assert
            Assert.Equal(1, repository.GetAll().Count());
        }
Exemple #29
0
        public async Task Given_APaymentId_When_ThePaymentExistsOnTheDataBase_Then_ReturnsThePaymentDetails()
        {
            // arrange
            var dbContextOptions = new DbContextOptionsBuilder <PaymentGatewayContext>()
                                   .UseInMemoryDatabase(databaseName: "GetTestDatabase")
                                   .Options;

            PaymentMethod paymentMethod = new CreditCard(
                new CVV("737"),
                "John Doe",
                "4168842845189769",
                new ExpiryDate(this.futureMonth, this.futureYear)
                );

            Payment payment = new Payment(850D, "EUR", paymentMethod);

            // act
            using (var context = new PaymentGatewayContext(dbContextOptions))
            {
                var repository = new PaymentRepository(context);
                await repository.SaveAsync(payment);
            }

            // assert
            using (var context = new PaymentGatewayContext(dbContextOptions))
            {
                var repository = new PaymentRepository(context);

                var paymentFromDatabase = await repository.GetByIdAsync(payment.Id);

                Assert.NotNull(paymentFromDatabase);
                Assert.Equal(payment.Amount, paymentFromDatabase.Amount);
                Assert.Equal(payment.Currency, paymentFromDatabase.Currency);
            }
        }
Exemple #30
0
        public async void Add_AddedAndRead()
        {
            // Arrange
            var factory    = new DbFactory();
            var unitOfWork = new UnitOfWork(factory);

            var repository = new PaymentRepository(factory);

            var testEntry = new PaymentEntity
            {
                ChargedAccount = new AccountEntity {
                    Name = "testAccount"
                },
                Note = "Testtext"
            };

            // Act
            repository.Add(testEntry);
            await unitOfWork.Commit();

            // Assert
            var loadedEntry = await repository.GetById(testEntry.Id);

            Assert.Equal(testEntry.Note, loadedEntry.Note);
        }
Exemple #31
0
        public async void Update_EntryUpdated()
        {
            // Arrange
            var factory    = new DbFactory();
            var unitOfWork = new UnitOfWork(factory);

            var repository = new PaymentRepository(factory);

            var newValue  = "newText";
            var testEntry = new PaymentEntity
            {
                ChargedAccount = new AccountEntity {
                    Name = "testAccount"
                },
                Note = "Testtext"
            };

            // Act
            repository.Add(testEntry);
            await unitOfWork.Commit();

            testEntry.Note = newValue;
            repository.Update(testEntry);
            await unitOfWork.Commit();

            // Assert
            var loadedEntry = await repository.GetById(testEntry.Id);

            Assert.Equal(newValue, loadedEntry.Note);
        }
Exemple #32
0
        public UnitOfWork()
        {
            _context = new DataContext();

            People = new PersonRepository(_context);
            Payments = new PaymentRepository(_context);
            PaymentDetails = new PaymentDetailRepository(_context);
        }
        public void AddPayment()
        {
            using (CapriconContext context = new CapriconContext())
            {
                var messageRepository = new MessageRepository(context);
                var existingMessage = messageRepository.GetAll().LastOrDefault();

                Assert.IsNotNull(existingMessage);

                var newPayment = new Payment()
                {
                    PaymentDate = DateTime.Now,
                    Amount = 750,
                    Message = existingMessage
                };

                var paymentRep = new PaymentRepository(context);
                paymentRep.Add(newPayment);

                try
                {
                    context.SaveChanges();
                }
                catch (DbEntityValidationException ex)
                {
                    //Retrieve validation errors
                    ex.EntityValidationErrors.ToList().ForEach
                    (
                        v =>
                        {
                            v.ValidationErrors.ToList().ForEach
                                (
                                    e =>
                                    {
                                        System.Diagnostics.Debug.WriteLine(e.ErrorMessage);
                                    }
                                );
                        }
                    );
                    Assert.Fail("Test failed");
                }

                //retrieve saved object
                var context1 = new CapriconContext();
                var repository = new PaymentRepository(context1);
                var savedPayments = repository.GetAll().ToList();

                Assert.AreEqual(savedPayments.Count(), 3, "returns 20 records");
                var savedPaymentsList = savedPayments;
                savedPaymentsList.ForEach
                    (
                        p =>
                        {
                            Debug.WriteLine(p.PaymentId + " - " + p.Amount + " " + p.Message.MessageId);
                        }
                    );
            };
        }
        public void ClearPayments()
        {
            var dbManager = new DatabaseManager(new DroidSqliteConnectionFactory(), new MvxAndroidFileStore());

            var paymentRepository = new PaymentRepository(dbManager);

            var paymentManager = new PaymentManager(paymentRepository,
                new AccountRepository(dbManager),
                new RecurringPaymentRepository(dbManager),
                null);

            paymentManager.ClearPayments();
        }
        private void CheckRecurringPayments()
        {
            var dbManager = new DatabaseManager(new DroidSqliteConnectionFactory(), new MvxAndroidFileStore());

            var paymentRepository = new PaymentRepository(dbManager);

            var paymentManager = new PaymentManager(paymentRepository,
                new AccountRepository(dbManager),
                new RecurringPaymentRepository(dbManager),
                null);

            new RecurringPaymentManager(paymentManager, paymentRepository, new SettingsManager(new Settings())).CheckRecurringPayments();
        }
        public void DeletePayment()
        {
            using (var uow = new CapriconContext())
            {
                var paymentRep = new PaymentRepository(uow);
                var existingPayment = paymentRep.Find(p => p.PaymentId == 2).FirstOrDefault();

                Assert.IsNotNull(existingPayment);

                int paymentId;
                if (existingPayment != null)
                {
                    paymentId = existingPayment.PaymentId;

                    //Delete payment
                    paymentRep.Delete(existingPayment);

                    try
                    {
                        uow.SaveChanges();
                    }
                    catch (DbEntityValidationException ex)
                    {
                        //Retrieve validation errors
                        ex.EntityValidationErrors.ToList().ForEach
                        (
                            v =>
                            {
                                v.ValidationErrors.ToList().ForEach
                                    (
                                        e =>
                                        {
                                            System.Diagnostics.Debug.WriteLine(e.ErrorMessage);
                                        }
                                    );
                            }
                        );
                        Assert.Fail("Test failed");
                    }

                    Assert.IsNull(paymentRep.Find(p => p.PaymentId == paymentId).FirstOrDefault());
                }
                else //no payments were selected
                    Assert.Fail("No payment was selected");
            }
        }
        public void Save_IdSet()
        {
            var paymentRepository =
                new PaymentRepository(new DatabaseManager(new WindowsSqliteConnectionFactory(),
                    new MvxWpfFileStore(FILE_ROOT)));
            var testPayment = new Fixture().Create<PaymentViewModel>();
            testPayment.Id = 0;

            try
            {
                paymentRepository.Save(testPayment);
                paymentRepository.ReloadCache();
                testPayment.Id.ShouldBeGreaterThan(0);
            }
            finally
            {
                paymentRepository.Delete(testPayment);
            }
        }
        public void Save_WithTargetAccount()
        {
            var paymentRepository =
                new PaymentRepository(new DatabaseManager(new WindowsSqliteConnectionFactory(),
                    new MvxWpfFileStore(FILE_ROOT)));

            var accountRepository =
                new AccountRepository(new DatabaseManager(new WindowsSqliteConnectionFactory(),
                    new MvxWpfFileStore(FILE_ROOT)));

            var account = new Fixture().Create<AccountViewModel>();
            account.Id = 0;
            accountRepository.Save(account);

            var testPayment = new Fixture().Create<PaymentViewModel>();
            testPayment.Id = 0;
            testPayment.ChargedAccount = account;
            testPayment.TargetAccount = null;

            paymentRepository.Save(testPayment);
            paymentRepository.ReloadCache();
            var selected = paymentRepository.FindById(testPayment.Id);

            selected.ShouldNotBeNull();
            selected.ShouldBeInstanceOf<PaymentViewModel>();

            selected.ChargedAccount.ShouldNotBeNull();
            selected.ChargedAccount.Id.ShouldBe(selected.ChargedAccountId);
            selected.ChargedAccount.Id.ShouldBe(testPayment.ChargedAccount.Id);

            paymentRepository.Delete(testPayment);
            paymentRepository.FindById(testPayment.Id).ShouldBeNull();
        }
        public void GetList_WithRecurringPayment_RecPaymentDependenciesLoaded()
        {
            var paymentRepository =
                new PaymentRepository(new DatabaseManager(new WindowsSqliteConnectionFactory(),
                    new MvxWpfFileStore(FILE_ROOT)));

            var accountRepository =
                new AccountRepository(new DatabaseManager(new WindowsSqliteConnectionFactory(),
                    new MvxWpfFileStore(FILE_ROOT)));

            var fixture = new Fixture();

            var account = fixture.Create<AccountViewModel>();
            account.Id = 0;
            accountRepository.Save(account);

            var testPayment = fixture.Create<PaymentViewModel>();
            testPayment.Id = 0;
            testPayment.RecurringPaymentId = 0;
            testPayment.RecurringPayment.Id = 0;
            testPayment.IsRecurring = true;
            testPayment.ChargedAccount = account;
            testPayment.RecurringPayment.ChargedAccount = account;

            paymentRepository.Save(testPayment);
            paymentRepository.ReloadCache();
            var selected = paymentRepository.GetList(x => x.Id == testPayment.Id).First();

            selected.ShouldNotBeNull();
            selected.ShouldBeInstanceOf<PaymentViewModel>();

            selected.RecurringPayment.ShouldNotBeNull();
            selected.RecurringPayment.Id.ShouldBe(selected.RecurringPaymentId);
            selected.RecurringPayment.Id.ShouldBe(testPayment.RecurringPayment.Id);

            selected.RecurringPayment.ChargedAccount.ShouldNotBeNull();

            paymentRepository.Delete(testPayment);
            paymentRepository.FindById(testPayment.Id).ShouldBeNull();
        }
        public void Save_WithRecurringPayment_IdInCacheSet()
        {
            var paymentRepository =
                new PaymentRepository(new DatabaseManager(new WindowsSqliteConnectionFactory(),
                    new MvxWpfFileStore(FILE_ROOT)));

            var testPayment = new Fixture().Create<PaymentViewModel>();
            testPayment.Id = 0;
            testPayment.IsRecurring = true;
            testPayment.RecurringPayment.Id = 0;

            paymentRepository.Save(testPayment);
            var selected = paymentRepository.FindById(testPayment.Id);

            selected.ShouldNotBeNull();
            selected.ShouldBeInstanceOf<PaymentViewModel>();

            selected.RecurringPayment.ShouldNotBeNull();
            selected.RecurringPayment.ShouldBeInstanceOf<RecurringPaymentViewModel>();

            selected.RecurringPayment.Id.ShouldBeGreaterThan(0);
            selected.RecurringPaymentId.ShouldBeGreaterThan(0);
        }
        public void SaveAndUpdate_WithRecurringPayment_NoDuplicates()
        {
            var paymentRepository =
                new PaymentRepository(new DatabaseManager(new WindowsSqliteConnectionFactory(),
                new MvxWpfFileStore(FILE_ROOT)));

            var recurringPaymentRepository =
                new RecurringPaymentRepository(new DatabaseManager(new WindowsSqliteConnectionFactory(),
                    new MvxWpfFileStore(FILE_ROOT)));

            var recurringPayment = new Fixture().Create<RecurringPaymentViewModel>();
            recurringPayment.Id = 0;

            recurringPaymentRepository.Save(recurringPayment);
            paymentRepository.ReloadCache();

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

            testPayment.RecurringPayment = recurringPayment;

            paymentRepository.Save(testPayment);
            paymentRepository.Save(testPayment);
            var selected = paymentRepository.FindById(testPayment.Id);

            recurringPaymentRepository.GetList(x => x.Note == testPayment.RecurringPayment.Note).Count().ShouldBe(1);
        }
        public void Save_WithCategory()
        {
            var paymentRepository =
                new PaymentRepository(new DatabaseManager(new WindowsSqliteConnectionFactory(),
                    new MvxWpfFileStore(FILE_ROOT)));

            var categoryRepository =
                new CategoryRepository(new DatabaseManager(new WindowsSqliteConnectionFactory(),
                    new MvxWpfFileStore(FILE_ROOT)));

            var testCategory = new Fixture().Create<CategoryViewModel>();
            testCategory.Id = 0;

            categoryRepository.Save(testCategory);

            var testPayment = new Fixture().Create<PaymentViewModel>();
            testPayment.Id = 0;
            testPayment.Category = testCategory;

            paymentRepository.Save(testPayment);
            paymentRepository.ReloadCache();
            var selected = paymentRepository.FindById(testPayment.Id);

            selected.ShouldNotBeNull();
            selected.ShouldBeInstanceOf<PaymentViewModel>();

            selected.Category.ShouldNotBeNull();
            selected.Category.Id.ShouldBe(selected.CategoryId.Value);
            selected.Category.Id.ShouldBe(testPayment.Category.Id);

            paymentRepository.Delete(testPayment);
            paymentRepository.FindById(testPayment.Id).ShouldBeNull();
        }
        public void GetList_WithChildren()
        {
            var paymentRepository =
                new PaymentRepository(new DatabaseManager(new WindowsSqliteConnectionFactory(),
                    new MvxWpfFileStore(FILE_ROOT)));

            var categoryRepository =
                new CategoryRepository(new DatabaseManager(new WindowsSqliteConnectionFactory(),
                    new MvxWpfFileStore(FILE_ROOT)));

            var fixture = new Fixture();

            var category = fixture.Create<CategoryViewModel>();
            category.Id = 0;
            categoryRepository.Save(category);

            var payment = fixture.Create<PaymentViewModel>();
            payment.Id = 0;
            payment.Category = category;

            paymentRepository.Save(payment);
            paymentRepository.ReloadCache();

            var selected = paymentRepository.GetList(x => x.Id == payment.Id).First();
            selected.ShouldNotBeNull();
            selected.Category.ShouldNotBeNull();
        }
        public void GetList_WithoutFilter()
        {
            var paymentRepository =
                new PaymentRepository(new DatabaseManager(new WindowsSqliteConnectionFactory(),
                    new MvxWpfFileStore(FILE_ROOT)));
            var testPayment = new Fixture().Create<PaymentViewModel>();
            testPayment.Id = 0;

            try
            {
                paymentRepository.Save(testPayment);
                paymentRepository.ReloadCache();

                var selectedAccount = paymentRepository.GetList().First();

                selectedAccount.Id.ShouldBe(testPayment.Id);
                selectedAccount.Amount.ShouldBe(testPayment.Amount);
            }
            finally
            {
                paymentRepository.Delete(testPayment);
            }
        }
        public void UpdatePayment()
        {
            using (var uow = new CapriconContext())
            {
                var paymentRep = new PaymentRepository(uow);

                var existingPayments = paymentRep.GetAll().ToList();

                var existingPayment = existingPayments.Find(p => p.PaymentId == 3);

                Assert.IsNotNull(existingPayment);

                var messageRepository = new MessageRepository(uow);
                var existingMessage = messageRepository.GetAll().FirstOrDefault();

                Assert.IsNotNull(existingMessage);

                existingPayment.PaymentDate = DateTime.Now;
                existingPayment.Amount = 350;
                existingPayment.Message = existingMessage;

                //check for validation rules
                //existingPayment.PaymentDate = DateTime.Now;

                paymentRep.Attach(existingPayment);
                uow.Entry(existingPayment).State = EntityState.Modified;

                try
                {
                    uow.SaveChanges();
                }
                catch (DbEntityValidationException ex)
                {
                    //Retrieve validation errors
                    ex.EntityValidationErrors.ToList().ForEach
                    (
                        v =>
                        {
                            v.ValidationErrors.ToList().ForEach
                                (
                                    e =>
                                    {
                                        System.Diagnostics.Debug.WriteLine(e.ErrorMessage);
                                    }
                                );
                        }
                    );
                    Assert.Fail("Test failed");
                }
            };

            //retrieve saved object
            var uow1 = new CapriconContext();
            var repository = new PaymentRepository(uow1);
            var savedPayments = repository.GetAll().ToList();

            Assert.AreEqual(savedPayments[0].Amount, 350);
        }
        public void Save_WithCategory_FkSet()
        {
            var paymentRepository =
                new PaymentRepository(new DatabaseManager(new WindowsSqliteConnectionFactory(),
                    new MvxWpfFileStore(FILE_ROOT)));

            var categoryRepository =
                new CategoryRepository(new DatabaseManager(new WindowsSqliteConnectionFactory(),
                    new MvxWpfFileStore(FILE_ROOT)));

            var fixture = new Fixture();

            var category = fixture.Create<CategoryViewModel>();

            categoryRepository.Save(category);
            category.Id.ShouldBeGreaterThan(0);

            var testPayment = new Fixture().Create<PaymentViewModel>();
            testPayment.Id = 0;
            testPayment.Category = category;

            paymentRepository.Save(testPayment);
            paymentRepository.ReloadCache();
            paymentRepository.FindById(testPayment.Id).CategoryId.Value.ShouldBeGreaterThan(0);
        }
        public void Save_WithNoChildrenSet()
        {
            var paymentRepository =
                new PaymentRepository(new DatabaseManager(new WindowsSqliteConnectionFactory(),
                    new MvxWpfFileStore(FILE_ROOT)));

            var testPayment = new PaymentViewModel
            {
                Amount = 40,
                ChargedAccount = new AccountViewModel()
            };

            paymentRepository.Save(testPayment);
            paymentRepository.ReloadCache();
            var selected = paymentRepository.FindById(testPayment.Id);

            selected.ShouldNotBeNull();
            selected.ShouldBeInstanceOf<PaymentViewModel>();
        }
        public void SaveAndUpdate_WithCategory_NoDuplicates()
        {
            var paymentRepository =
                new PaymentRepository(new DatabaseManager(new WindowsSqliteConnectionFactory(),
                    new MvxWpfFileStore(FILE_ROOT)));

            var categoryRepository =
                new CategoryRepository(new DatabaseManager(new WindowsSqliteConnectionFactory(),
                    new MvxWpfFileStore(FILE_ROOT)));

            var category = new Fixture().Create<CategoryViewModel>();
            category.Id = 0;

            categoryRepository.Save(category);

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

            testPayment.Category = category;

            paymentRepository.Save(testPayment);
            paymentRepository.Save(testPayment);
            paymentRepository.ReloadCache();
            var selected = paymentRepository.FindById(testPayment.Id);

            categoryRepository.GetList(x => x.Name == testPayment.Category.Name).Count().ShouldBe(1);
        }
        public void Save_WithRecurringPayment_FkSet()
        {
            var paymentRepository =
                new PaymentRepository(new DatabaseManager(new WindowsSqliteConnectionFactory(),
                    new MvxWpfFileStore(FILE_ROOT)));

            var recurringPaymentRepository =
                new RecurringPaymentRepository(new DatabaseManager(new WindowsSqliteConnectionFactory(),
                    new MvxWpfFileStore(FILE_ROOT)));

            var fixture = new Fixture();

            var recurringPayment = fixture.Create<RecurringPaymentViewModel>();

            recurringPaymentRepository.Save(recurringPayment);
            recurringPayment.Id.ShouldBeGreaterThan(0);

            var testPayment = new Fixture().Create<PaymentViewModel>();
            testPayment.Id = 0;
            testPayment.RecurringPayment = recurringPayment;

            paymentRepository.Save(testPayment);
            paymentRepository.ReloadCache();
            paymentRepository.FindById(testPayment.Id).RecurringPaymentId.ShouldBe(recurringPayment.Id);
        }
        public void FindById_AccountDeleted()
        {
            var paymentRepository =
                new PaymentRepository(new DatabaseManager(new WindowsSqliteConnectionFactory(),
                    new MvxWpfFileStore(FILE_ROOT)));

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

            paymentRepository.Save(testPayment);
            paymentRepository.ReloadCache();
            var selected = paymentRepository.FindById(testPayment.Id);

            selected.ShouldNotBeNull();
            selected.ShouldBeInstanceOf<PaymentViewModel>();

            paymentRepository.Delete(testPayment);
            paymentRepository.FindById(testPayment.Id).ShouldBeNull();
        }
        public void Delete_WithChildren_PaymentDeleted()
        {
            var paymentRepository =
                new PaymentRepository(new DatabaseManager(new WindowsSqliteConnectionFactory(),
                    new MvxWpfFileStore(FILE_ROOT)));

            var categoryRepository =
                new CategoryRepository(new DatabaseManager(new WindowsSqliteConnectionFactory(),
                    new MvxWpfFileStore(FILE_ROOT)));

            var category = new Fixture().Create<CategoryViewModel>();
            category.Id = 0;
            categoryRepository.Save(category);

            var testPayment = new Fixture().Create<PaymentViewModel>();
            testPayment.Id = 0;
            testPayment.Category = category;

            paymentRepository.Save(testPayment);
            paymentRepository.ReloadCache();
            var payment = paymentRepository.FindById(testPayment.Id);

            payment.ShouldNotBeNull();
            payment.Category.ShouldNotBeNull();

            paymentRepository.Delete(testPayment);
            paymentRepository.FindById(testPayment.Id).ShouldBeNull();

            categoryRepository.FindById(testPayment.Category.Id).ShouldNotBeNull();
        }