コード例 #1
0
        public void Test_ImportFromSplitwise_Update_NotPaid_NoShare()
        {
            this.GenerateSplitwiseUser();

            var splitwiseTransaction = this.context.GenerateSplitwiseTransaction(
                1,
                "Description",
                DateTime.Today.ToLocalDate(),
                false,
                DateTime.UtcNow.AddHours(-1),
                0,
                10);

            // Add update to expense where user is no longer part of it.
            var expense = this.SplitwiseContextMock.GenerateExpense(
                1,
                "Description",
                DateTime.Today.ToLocalDate(),
                false,
                DateTime.UtcNow,
                0,
                0);

            this.SplitwiseManager.ImportFromSplitwise();

            this.RefreshContext();

            Wv8Assert.IsNone(
                this.context.SplitwiseTransactions.SingleOrNone(st => st.Id == splitwiseTransaction.Id));
        }
コード例 #2
0
        public void Test_ImportFromSplitwise_Removed_Paid()
        {
            // Add processed Splitwise transaction to database.
            this.GenerateSplitwiseUser();
            var user2 = this.SplitwiseContextMock.GenerateUser(2, "USER2");
            var user3 = this.SplitwiseContextMock.GenerateUser(3, "USER3");

            var(account, _) = this.context.GenerateAccount();
            var split1 = this.context.GenerateSplitDetail(user2.Id, 15);
            var split2 = this.context.GenerateSplitDetail(user3.Id, 25);
            var splits = new List <SplitDetailEntity> {
                split1, split2
            };

            var(splitwiseAccount, _) = this.context.GenerateAccount(AccountType.Splitwise);
            var category             = this.context.GenerateCategory();
            var splitwiseTransaction = this.context.GenerateSplitwiseTransaction(
                1,
                updatedAt: DateTime.Now.AddDays(-7),
                paidAmount: 50,
                personalAmount: 10,
                date: DateTime.Today.ToLocalDate(),
                description: "Description",
                imported: true,
                splits: splits);

            this.context.GenerateTransaction(
                splitwiseAccount,
                TransactionType.Expense,
                splitwiseTransaction.Description,
                splitwiseTransaction.Date,
                splitwiseTransaction.PaidAmount,
                category,
                splitwiseTransaction: splitwiseTransaction,
                splitDetails: splits);
            this.SaveAndProcess();

            // Add new version to mock. Deleted.
            var expense = this.SplitwiseContextMock.GenerateExpense(
                1,
                updatedAt: DateTime.UtcNow,
                paidAmount: splitwiseTransaction.PaidAmount,
                personalAmount: splitwiseTransaction.PersonalAmount,
                date: splitwiseTransaction.Date,
                description: splitwiseTransaction.Description,
                splits: splitwiseTransaction.SplitDetails.Select(sd => sd.AsSplit()).ToList(),
                isDeleted: true);

            this.SplitwiseManager.ImportFromSplitwise();

            // Verify revert
            this.RefreshContext();
            var accountBalance = this.context.Accounts.Single(a => a.Id == splitwiseAccount.Id).CurrentBalance;

            Assert.Equal(0, accountBalance);

            splitwiseTransaction = this.context.SplitwiseTransactions.Single(st => st.Id == splitwiseTransaction.Id);
            Assert.True(splitwiseTransaction.IsDeleted);
            Assert.False(splitwiseTransaction.Imported);

            Wv8Assert.IsNone(this.context.Transactions.SingleOrNone(t => t.SplitwiseTransactionId == splitwiseTransaction.Id));
        }