public void LoadRecurringList_ListWithRecurringTransaction()
        {
            var dbHelper = new SqliteConnectionCreator(new WindowsSqliteConnectionFactory());

            var transactionDataAccess =
                new TransactionDataAccess(dbHelper);
            var recTransactionDataAccess =
                new RecurringTransactionDataAccess(dbHelper);
            var repository = new TransactionRepository(transactionDataAccess, recTransactionDataAccess);

            transactionDataAccess.SaveItem(new FinancialTransaction {Amount = 999, IsRecurring = false});
            transactionDataAccess.SaveItem(new FinancialTransaction
            {
                Amount = 123,
                IsRecurring = true,
                RecurringTransaction = new RecurringTransaction {IsEndless = true}
            });

            repository.Load();
            var result = repository.LoadRecurringList().ToList();

            result.Count.ShouldBe(1);

            result.First().Id.ShouldBe(2);
            result.First().RecurringTransaction.Id.ShouldBe(1);
        }
        public void TransactionRepository_Update()
        {
            var dbHelper = new SqliteConnectionCreator(new WindowsSqliteConnectionFactory());

            using (var db = dbHelper.GetConnection())
            {
                db.DeleteAll<FinancialTransaction>();
            }

            var repository = new TransactionRepository(new TransactionDataAccess(dbHelper),
                new RecurringTransactionDataAccess(dbHelper));
            var account = new Account
            {
                Name = "TestAccount"
            };

            var transaction = new FinancialTransaction
            {
                ChargedAccount = account,
                Amount = 20
            };

            repository.Save(transaction);
            repository.Data.Count.ShouldBe(1);
            repository.Data[0].ShouldBeSameAs(transaction);

            transaction.Amount = 30;

            repository.Save(transaction);

            repository.Data.Count.ShouldBe(1);
            repository.Data[0].Amount.ShouldBe(30);
        }
        public void CategoryRepository_Update()
        {
            var dbHelper = new SqliteConnectionCreator(new WindowsSqliteConnectionFactory());

            using (var db = dbHelper.GetConnection())
            {
                db.DeleteAll<Category>();
            }

            var repository = new CategoryRepository(new CategoryDataAccess(dbHelper));

            var category = new Category
            {
                Name = "Ausgang"
            };

            repository.Save(category);

            repository.Data.Count.ShouldBe(1);
            repository.Data[0].ShouldBeSameAs(category);

            category.Name = "newName";

            repository.Save(category);

            repository.Data.Count.ShouldBe(1);
            repository.Data[0].Name.ShouldBe("newName");
        }
        public void CategoryRepositor_LoadDataFromDbThroughRepository()
        {
            var dbHelper = new SqliteConnectionCreator(new WindowsSqliteConnectionFactory());

            using (var db = dbHelper.GetConnection())
            {
                db.DeleteAll<Category>();
                db.InsertWithChildren(new Category
                {
                    Name = "Foooo"
                });
            }

            var repository = new CategoryRepository(new CategoryDataAccess(dbHelper));

            repository.Data.Any().ShouldBeTrue();
            repository.Data[0].Name.ShouldBe("Foooo");
        }
        public ClearTransactionBackgroundTask()
        {
            var insightKey = "599ff6bfdc79368ff3d5f5629a57c995fe93352e";

#if DEBUG
            insightKey = Insights.DebugModeKey;
#endif
            if (!Insights.IsInitialized)
            {
                Insights.Initialize(insightKey);
            }

            var sqliteConnectionCreator = new SqliteConnectionCreator(new WindowsSqliteConnectionFactory());

            transactionManager = new TransactionManager(
                new TransactionRepository(new TransactionDataAccess(sqliteConnectionCreator),
                    new RecurringTransactionDataAccess(sqliteConnectionCreator)),
                new AccountRepository(new AccountDataAccess(sqliteConnectionCreator)),
                null);
        }
        public void TransactionRepository_LoadDataFromDbThroughRepository()
        {
            var dbHelper = new SqliteConnectionCreator(new WindowsSqliteConnectionFactory());

            using (var db = dbHelper.GetConnection())
            {
                db.DeleteAll<FinancialTransaction>();
                db.InsertWithChildren(new FinancialTransaction
                {
                    Amount = 999,
                    ChargedAccount = new Account
                    {
                        Name = "testAccount"
                    }
                });
            }

            var repository = new TransactionRepository(new TransactionDataAccess(dbHelper),
                new RecurringTransactionDataAccess(dbHelper));

            repository.Data.Any().ShouldBeTrue();
            repository.Data[0].Amount.ShouldBe(999);
        }
        public ClearPaymentBackgroundTask()
        {
            var insightKey = "599ff6bfdc79368ff3d5f5629a57c995fe93352e";

#if DEBUG
            insightKey = Insights.DebugModeKey;
#endif
            if (!Insights.IsInitialized)
            {
                Insights.Initialize(insightKey);
            }

            var sqliteConnectionCreator = new SqliteConnectionCreator(new WindowsSqliteConnectionFactory());

            var accountRepository = new AccountRepository(new AccountDataAccess(sqliteConnectionCreator));

            paymentManager = new PaymentManager(
                new PaymentRepository(new PaymentDataAccess(sqliteConnectionCreator),
                    new RecurringPaymentDataAccess(sqliteConnectionCreator),
                    accountRepository,
                    new CategoryRepository(new CategoryDataAccess(sqliteConnectionCreator))), 
                accountRepository,
                null);
        }
 public void Init()
 {
     connectionCreator = new SqliteConnectionCreator(new WindowsSqliteConnectionFactory());
 }