public async Task GetBalances19()
        {
            var svc = new DatabaseTransactions(new SqliteInMemoryDatabase());

            var now = DateTime.UtcNow;

            await CreateTestTransactions(now, svc);

            var balances = (await svc.GetBalances(1, null)).ToArray();

            Assert.AreEqual(3, balances.Length);

            //1 -> 0 == -5 TEST
            //1 -> 0 == -1 TEST2
            //1 -> 2 == 5 TEST3

            Assert.AreEqual(-5, balances[0].Amount);
            Assert.AreEqual("test", balances[0].Unit);

            Assert.AreEqual(-1, balances[1].Amount);
            Assert.AreEqual("test2", balances[1].Unit);

            Assert.AreEqual(5, balances[2].Amount);
            Assert.AreEqual("test3", balances[2].Unit);
        }
        public async Task CreateTransactionDoesNotThrow()
        {
            var svc = new DatabaseTransactions(new SqliteInMemoryDatabase());

            var now = DateTime.UtcNow;
            await svc.CreateTransaction(0, 1, 10, "TEST", "Note 1", now);
        }
        public async Task CreateTransactionDoesNotThrow()
        {
            var db      = new SqliteInMemoryDatabase();
            var tsx     = new DatabaseTransactions(db);
            var pending = new DatabasePendingTransactions(db, tsx);

            var now = DateTime.UtcNow;
            await pending.CreatePending(0, 1, 10, "GBP", "Note", now);
        }
        public async Task GetBalances10()
        {
            var svc = new DatabaseTransactions(new SqliteInMemoryDatabase());

            var now = DateTime.UtcNow;

            await CreateTestTransactions(now, svc);

            var balances = (await svc.GetBalances(1, 0)).ToArray();

            Assert.AreEqual(2, balances.Length);
        }
        public async Task GetTransactionByToId()
        {
            var svc = new DatabaseTransactions(new SqliteInMemoryDatabase());

            var now = DateTime.UtcNow;

            await CreateTestTransactions(now, svc);

            var tsx = await(svc.GetTransactions(toId: 0)).OrderBy(a => a.Instant).ToArrayAsync();

            Assert.AreEqual(1, tsx.Length);
            Assert.AreEqual("test", tsx[0].Unit);
        }
        public async Task GetTransactionByBefore()
        {
            var svc = new DatabaseTransactions(new SqliteInMemoryDatabase());

            var now = DateTime.UtcNow;

            await CreateTestTransactions(now, svc);

            var tsx = await(svc.GetTransactions(before: now + TimeSpan.FromMinutes(2.5))).OrderBy(a => a.Instant).ToArrayAsync();

            Assert.AreEqual(2, tsx.Length);
            Assert.AreEqual("test", tsx[0].Unit);
            Assert.AreEqual("test", tsx[1].Unit);
        }
        public async Task GetAllTransactions()
        {
            var svc = new DatabaseTransactions(new SqliteInMemoryDatabase());

            var now = DateTime.UtcNow;

            await CreateTestTransactions(now, svc);

            var tsx = await svc.GetAllTransactions(0);

            Assert.AreEqual(3, tsx.Count);
            Assert.AreEqual("test", tsx[0].Unit);
            Assert.AreEqual("Note 2", tsx[1].Note);
        }
        public async Task GetTransactionByUnit()
        {
            var db      = new SqliteInMemoryDatabase();
            var tsx     = new DatabaseTransactions(db);
            var pending = new DatabasePendingTransactions(db, tsx);

            var now = DateTime.UtcNow;

            var(a, b, c, d) = await CreateTestTransactions(now, pending);

            var results = await(pending.Get(unit: "test")).ToArrayAsync();

            Assert.AreEqual(2, results.Length);
            Assert.AreEqual("Note 1", results[0].Note);
            Assert.AreEqual("Note 2", results[1].Note);
        }
        public async Task DenyNotExistsTransaction()
        {
            var db      = new SqliteInMemoryDatabase();
            var tsx     = new DatabaseTransactions(db);
            var pending = new DatabasePendingTransactions(db, tsx);

            var now = DateTime.UtcNow;

            var(a, b, c, d) = await CreateTestTransactions(now, pending);

            Assert.AreEqual(DenyResult.IdNotFound, await pending.DenyPending(d + 10));

            var notConfirmed = await(pending.Get(state: PendingState.Pending)).ToArrayAsync();

            Assert.AreEqual(4, notConfirmed.Length);
        }
        public async Task GetTransactionByAfter()
        {
            var db      = new SqliteInMemoryDatabase();
            var tsx     = new DatabaseTransactions(db);
            var pending = new DatabasePendingTransactions(db, tsx);

            var now = DateTime.UtcNow;

            var(a, b, c, d) = await CreateTestTransactions(now, pending);

            var results = await(pending.Get(after: now + TimeSpan.FromMinutes(2.5))).ToArrayAsync();

            Assert.AreEqual(2, results.Length);
            Assert.AreEqual("test2", results[0].Unit);
            Assert.AreEqual("test3", results[1].Unit);
        }
Esempio n. 11
0
        public async Task GetTransactionByToId()
        {
            var db      = new SqliteInMemoryDatabase();
            var tsx     = new DatabaseTransactions(db);
            var pending = new DatabasePendingTransactions(db, tsx);

            var now = DateTime.UtcNow;

            var(a, b, c, d) = await CreateTestTransactions(now, pending);

            var results = await(await pending.Get(toId: 1)).ToArray();

            Assert.AreEqual(2, results.Length);
            Assert.AreEqual("test", results[0].Unit);
            Assert.AreEqual("test2", results[1].Unit);
        }
        public async Task ConfirmAlreadyDeniedTransaction()
        {
            var db      = new SqliteInMemoryDatabase();
            var tsx     = new DatabaseTransactions(db);
            var pending = new DatabasePendingTransactions(db, tsx);

            var now = DateTime.UtcNow;

            var(a, b, c, d) = await CreateTestTransactions(now, pending);

            Assert.AreEqual(DenyResult.Denied, await pending.DenyPending(a));
            Assert.AreEqual(ConfirmResult.AlreadyDenied, await pending.ConfirmPending(a));

            var notConfirmed = await(pending.Get(state: PendingState.Pending)).ToArrayAsync();

            Assert.AreEqual(3, notConfirmed.Length);
        }
        public async Task GetTransactionByPending()
        {
            var db      = new SqliteInMemoryDatabase();
            var tsx     = new DatabaseTransactions(db);
            var pending = new DatabasePendingTransactions(db, tsx);

            var now = DateTime.UtcNow;

            var(a, b, c, d) = await CreateTestTransactions(now, pending);

            var results = await(pending.Get(state: PendingState.Pending)).ToArrayAsync();

            Assert.AreEqual(4, results.Length);
            Assert.AreEqual(a, results[0].Id);
            Assert.AreEqual(c, results[1].Id);
            Assert.AreEqual(b, results[2].Id);
            Assert.AreEqual(d, results[3].Id);
        }
        public async Task GetTransactionByDebtId()
        {
            var db      = new SqliteInMemoryDatabase();
            var tsx     = new DatabaseTransactions(db);
            var pending = new DatabasePendingTransactions(db, tsx);

            var now = DateTime.UtcNow;

            var(a, b, c, d) = await CreateTestTransactions(now, pending);

            var results = await pending.Get(debtId : a).ToArrayAsync();

            Assert.AreEqual(1, results.Length);
            Assert.AreEqual("test", results[0].Unit);
            Assert.AreEqual("Note 1", results[0].Note);
            Assert.AreEqual((uint)0, results[0].FromId);
            Assert.AreEqual((uint)1, results[0].ToId);
            Assert.IsTrue(results[0].State == PendingState.Pending);
            Assert.AreEqual(a, results[0].Id);
        }
        public async Task DenyPendingTransaction()
        {
            var db      = new SqliteInMemoryDatabase();
            var tsx     = new DatabaseTransactions(db);
            var pending = new DatabasePendingTransactions(db, tsx);

            var now = DateTime.UtcNow;

            var(a, b, c, d) = await CreateTestTransactions(now, pending);

            var transactionsBefore = await(tsx.GetTransactions(0, 1, "TEST")).ToArrayAsync();

            Assert.AreEqual(0, transactionsBefore.Length);

            Assert.AreEqual(DenyResult.Denied, await pending.DenyPending(a));

            var notConfirmed = await(pending.Get(state: PendingState.Pending)).ToArrayAsync();

            Assert.AreEqual(3, notConfirmed.Length);

            var transactionsAfter = await(tsx.GetTransactions(0, 1, "TEST")).ToArrayAsync();

            Assert.AreEqual(0, transactionsAfter.Length);
        }