コード例 #1
0
        public void IncomesForCurrentMonthTest()
        {
            // Arrange
            Category category1 = new Category(1)
            {
                Name = "Salary", Color = Color.Blue
            };

            Wallet wallet1 = new Wallet(Guid.NewGuid(), "Wall_let", "desc", "UAH", 0, Guid.NewGuid());

            Transaction transaction1 = new Transaction(Guid.NewGuid(), 10.10M, "UAH", category1, "", DateTimeOffset.Now);
            Transaction transaction2 = new Transaction(Guid.NewGuid(), 132.32M, "UAH", category1, "", DateTimeOffset.Now);
            Transaction transaction3 = new Transaction(Guid.NewGuid(), 43.76M, "UAH", category1, "",
                                                       new DateTimeOffset(DateTimeOffset.Now.Year, DateTimeOffset.Now.Month - 1, DateTimeOffset.Now.Day,
                                                                          DateTimeOffset.Now.Hour, DateTimeOffset.Now.Minute, DateTimeOffset.Now.Second,
                                                                          DateTimeOffset.Now.Offset));

            wallet1.AddTransaction(transaction1);
            wallet1.AddTransaction(transaction2);
            wallet1.AddTransaction(transaction3);

            decimal expected = transaction1.Sum + transaction2.Sum;

            // Act
            decimal actual = wallet1.IncomesForCurrentMonth();

            // Assert
            Assert.Equal(expected, actual);
        }
コード例 #2
0
        public async Task <Wallet> GetWallet(string walletName)
        {
            var walletStage = dbContext.Wallets.FirstOrDefault(f => f.WalletName.ToUpper().Trim() == walletName.ToUpper().Trim());

            if (walletStage == null)
            {
                return(null);
            }

            var wallet = new Wallet(walletStage.WalletId, walletStage.WalletName);

            foreach (var t in walletStage.Transactions)
            {
                if (t.TransactionType == Business.Enums.ETransactionType.Credit)
                {
                    wallet.AddTransaction(new CreditTransaction(t.Amount, t.Description, t.TransactionDate));
                }
                else
                {
                    wallet.AddTransaction(new DebitTransaction(t.Amount, t.Description, t.TransactionDate));
                }
            }

            return(wallet);
        }
コード例 #3
0
        public void IncomesTest()
        {
            // Arrange
            DateTimeOffset now   = DateTimeOffset.Now;
            DateTimeOffset today = new DateTimeOffset(now.Year, now.Month, now.Day, 0, 0, 0, now.Offset);

            Category category1 = new Category(1)
            {
                Name = "Salary", Color = Color.Blue
            };
            Category category2 = new Category(2)
            {
                Name = "Health", Color = Color.Green
            };

            Wallet wallet1 = new Wallet(Guid.NewGuid(), "Wall_let", "desc", "UAH", 0, Guid.NewGuid());

            Transaction transaction1 = new Transaction(Guid.NewGuid(), 10.10M, "UAH", category1, "", now);
            Transaction transaction2 = new Transaction(Guid.NewGuid(), -5.19M, "UAH", category2, "", now);
            Transaction transaction3 = new Transaction(Guid.NewGuid(), 32.32M, "UAH", category1, "", now);

            wallet1.AddTransaction(transaction1);
            wallet1.AddTransaction(transaction2);
            wallet1.AddTransaction(transaction3);

            decimal expected = transaction1.Sum + transaction3.Sum;

            // Act
            decimal actual = wallet1.Incomes(today, now);

            // Assert
            Assert.Equal(expected, actual);
        }
コード例 #4
0
        public void CurrentBalanceTest()
        {
            // Arrange
            Category category1 = new Category(1)
            {
                Name = "Salary", Color = Color.Blue
            };
            Category category2 = new Category(2)
            {
                Name = "Health", Color = Color.Green
            };

            decimal initialBalance = 50.00M;

            Wallet wallet1 = new Wallet(Guid.NewGuid(), "Wall_let", "desc", "UAH", initialBalance, Guid.NewGuid());

            Transaction transaction1 = new Transaction(Guid.NewGuid(), 10.10M, "UAH", category1, "", DateTimeOffset.Now);
            Transaction transaction2 = new Transaction(Guid.NewGuid(), -5.19M, "UAH", category2, "", DateTimeOffset.Now);
            Transaction transaction3 = new Transaction(Guid.NewGuid(), 32.32M, "UAH", category1, "", DateTimeOffset.Now);

            wallet1.AddTransaction(transaction1);
            wallet1.AddTransaction(transaction2);
            wallet1.AddTransaction(transaction3);

            decimal expected = initialBalance + transaction1.Sum + transaction2.Sum + transaction3.Sum;

            // Act
            decimal actual = wallet1.CurrentBalance;

            // Assert
            Assert.Equal(expected, actual);
        }
コード例 #5
0
        public void AddTransactionTest()
        {
            // Arrange
            Category categoryHealth = new Category(1)
            {
                Name = "Health", Color = Color.Green
            };
            Category categoryEat = new Category(2)
            {
                Name = "Eat", Color = Color.Red
            };

            Wallet walletNoCategories = new Wallet(Guid.NewGuid(), "Without categories", "desc", "UAH", 0, Guid.NewGuid());

            Wallet walletHealthCategory = new Wallet(Guid.NewGuid(), "With category (Health)", "desc", "USD", 0, Guid.NewGuid());

            walletHealthCategory.AddCategory(categoryHealth);

            Transaction transactionEat    = new Transaction(Guid.NewGuid(), -10.10M, "UAH", categoryEat, "", DateTimeOffset.Now);
            Transaction transactionHealth = new Transaction(Guid.NewGuid(), -2.02M, "UAH", categoryHealth, "", DateTimeOffset.Now);

            // Act
            bool wncAddTe = walletNoCategories.AddTransaction(transactionEat);
            bool wncAddTh = walletNoCategories.AddTransaction(transactionHealth);
            bool whcAddTe = walletHealthCategory.AddTransaction(transactionEat);
            bool whcAddTh = walletHealthCategory.AddTransaction(transactionHealth);

            // Assert
            Assert.True(wncAddTe);
            Assert.True(wncAddTh);
            Assert.Equal(2, walletNoCategories.GetTenRecentlyAddedTransactions().Count);
            Assert.False(whcAddTe);
            Assert.True(whcAddTh);
            Assert.Single(walletHealthCategory.GetTenRecentlyAddedTransactions());
        }
コード例 #6
0
        public void GetTransactionTest()
        {
            // Arrange
            Category category1 = new Category(1)
            {
                Name = "Salary", Color = Color.Blue
            };

            Wallet wallet1 = new Wallet(1)
            {
                Name = "Wall_let", Currency = "UAH"
            };

            Transaction transaction1 = new Transaction(1)
            {
                Sum = 10.10M, Currency = "UAH", Category = category1, Date = DateTime.Today
            };

            wallet1.AddTransaction(transaction1);

            // Act
            Transaction actualNonNull = wallet1.GetTransaction(1);
            Transaction actualNull    = wallet1.GetTransaction(0);

            // Assert
            Assert.Equal(transaction1, actualNonNull);
            Assert.Null(actualNull);
        }
コード例 #7
0
        public void RemoveTransactionByIndexTest()
        {
            // Arrange
            Category category1 = new Category(1)
            {
                Name = "Salary", Color = Color.Blue
            };

            Wallet wallet1 = new Wallet(1)
            {
                Name = "Wall_let", Currency = "UAH"
            };

            Transaction transaction1 = new Transaction(1)
            {
                Sum = 10.10M, Currency = "UAH", Category = category1, Date = DateTime.Today
            };

            wallet1.AddTransaction(transaction1);

            // Act
            bool remT1 = wallet1.RemoveTransaction(1);
            bool remT2 = wallet1.RemoveTransaction(0);

            // Assert
            Assert.True(remT1);
            Assert.False(remT2);
        }
コード例 #8
0
        public void GetTransactionsTest()
        {
            // Arrange
            Category category1 = new Category(1)
            {
                Name = "Salary", Color = Color.Blue
            };

            Wallet wallet1 = new Wallet(Guid.NewGuid(), "Wall_let", "desc", "UAH", 0, Guid.NewGuid());

            List <Transaction> transactions = new List <Transaction>();

            for (int i = 1; i <= 12; i++)
            {
                Transaction transaction1 = new Transaction(Guid.NewGuid(), i * 10.10M, "UAH", category1, "", DateTimeOffset.Now);
                transactions.Add(transaction1);
                wallet1.AddTransaction(transaction1);
            }

            // Act
            List <Transaction> actual     = wallet1.GetTransactions(1, 10);
            List <Transaction> actualNull = wallet1.GetTransactions(0, 100);

            // Assert
            for (int i = 0; i < 10; i++)
            {
                Assert.Equal(transactions[i], actual[i]);
            }
            Assert.Null(actualNull);
        }
コード例 #9
0
        public void GetTenRecentlyAddedTransactionsTest()
        {
            // Arrange
            Category category1 = new Category(1)
            {
                Name = "Salary", Color = Color.Blue
            };

            Wallet wallet1 = new Wallet(Guid.NewGuid(), "Wall_let", "desc", "UAH", 0, Guid.NewGuid());

            List <Transaction> transactions = new List <Transaction>();

            for (int i = 1; i <= 12; i++)
            {
                Transaction transaction1 = new Transaction(Guid.NewGuid(), i * 10.10M, "UAH", category1, "", DateTimeOffset.Now);
                transactions.Add(transaction1);
                wallet1.AddTransaction(transaction1);
            }

            // Act
            List <Transaction> actual = wallet1.GetTenRecentlyAddedTransactions();

            // Assert
            for (int i = actual.Count - 1; i >= 0; i--)
            {
                Assert.Equal(transactions[i + (transactions.Count - actual.Count)], actual[i]);
            }
        }
コード例 #10
0
        public void GetTenRecentlyAddedTransactionsTest()
        {
            // Arrange
            Category category1 = new Category(1)
            {
                Name = "Salary", Color = Color.Blue
            };

            Wallet wallet1 = new Wallet(1)
            {
                Name = "Wall_let", Currency = "UAH"
            };

            List <Transaction> transactions = new List <Transaction>();

            for (int i = 1; i <= 12; i++)
            {
                Transaction transaction1 = new Transaction(i)
                {
                    Sum = i * 10.10M, Currency = "UAH", Category = category1, Date = DateTime.Today
                };
                transactions.Add(transaction1);
                wallet1.AddTransaction(transaction1);
            }

            // Act
            List <Transaction> actual = wallet1.GetTenRecentlyAddedTransactions();

            // Assert
            for (int i = actual.Count - 1; i >= 0; i--)
            {
                Assert.Equal(transactions[i + (transactions.Count - actual.Count)], actual[i]);
            }
        }
コード例 #11
0
        public void AddTransactionTest()
        {
            // Arrange
            Category categoryHealth = new Category(1)
            {
                Name = "Health", Color = Color.Green
            };
            Category categoryEat = new Category(2)
            {
                Name = "Eat", Color = Color.Red
            };

            Wallet walletNoCategories = new Wallet(1)
            {
                Name = "Without categories", Currency = "UAH"
            };

            Wallet walletHealthCategory = new Wallet(2)
            {
                Name = "With category (Health)", Currency = "USD"
            };

            walletHealthCategory.AddCategory(categoryHealth);

            Transaction transactionEat = new Transaction(1)
            {
                Sum = -10.10M, Currency = "UAH", Category = categoryEat, Date = DateTime.Today
            };
            Transaction transactionHealth = new Transaction(2)
            {
                Sum = -2.02M, Currency = "UAH", Category = categoryHealth, Date = DateTime.Today
            };

            // Act
            bool wncAddTe = walletNoCategories.AddTransaction(transactionEat);
            bool wncAddTh = walletNoCategories.AddTransaction(transactionHealth);
            bool whcAddTe = walletHealthCategory.AddTransaction(transactionEat);
            bool whcAddTh = walletHealthCategory.AddTransaction(transactionHealth);

            // Assert
            Assert.True(wncAddTe);
            Assert.True(wncAddTh);
            Assert.Equal(2, walletNoCategories.GetTenRecentlyAddedTransactions().Count);
            Assert.False(whcAddTe);
            Assert.True(whcAddTh);
            Assert.Single(walletHealthCategory.GetTenRecentlyAddedTransactions());
        }
コード例 #12
0
        public void EditTransactionTest()
        {
            //Arrange
            var owner = new User()
            {
                Id      = id1,
                Name    = "Liza",
                Surname = "Andriienko",
                Email   = "*****@*****.**"
            };
            List <Category> categories = new List <Category>();
            var             category0  = new Category(owner, "Food", Colors.Red, new FileInfo("coins.txt"), Guid.NewGuid());
            var             category1  = new Category(owner, "Restaurants", Colors.Blue, new FileInfo("coins.txt"), Guid.NewGuid());

            categories.Add(category0);
            categories.Add(category1);
            owner.Categories = categories;
            var wallet = new Wallet(owner)
            {
                Id             = id2,
                Name           = "Wallet1",
                InitialBalance = 505.3m,
                Description    = "new wallet"
            };
            var transaction = new Transaction()
            {
                Id          = id3,
                Sum         = 275.89m,
                Currency    = Currencies.USD,
                Description = "new transaction",
                Date        = new DateTimeOffset(2021, 7, 20, 14, 10, 5, new TimeSpan(2, 0, 0)),
                Category    = category0
            };

            //Act
            wallet.AddTransaction(transaction, owner.Id, false);

            wallet.EditCategoryOfTransaction(id3, category1, id1);
            wallet.EditCurrencyOfTransaction(id3, Currencies.EUR, id1);
            var newDate = new DateTimeOffset(2021, 6, 5, 3, 7, 2, new TimeSpan(2, 0, 0));

            wallet.EditDateOfTransaction(id3, newDate, id1);
            wallet.EditFilesOfTransaction(id3, null, id1);
            wallet.EditSumOfTransaction(id3, 100, id1);

            var copyTr         = wallet.GetCopyOfTransaction(id3);
            var actualCategory = copyTr.Category.Equals(category1);
            var actualCurrency = copyTr.Currency == Currencies.EUR;
            var actualDate     = copyTr.Date.Equals(newDate);
            var actualSum      = copyTr.Sum == 100;

            //Assert
            Assert.True(actualCategory);
            Assert.True(actualCurrency);
            Assert.True(actualDate);
            Assert.True(actualSum);
        }
コード例 #13
0
        public void CurrentBalanceTest()
        {
            // Arrange
            Category category1 = new Category(1)
            {
                Name = "Salary", Color = Color.Blue
            };
            Category category2 = new Category(2)
            {
                Name = "Health", Color = Color.Green
            };

            decimal initialBalance = 50.00M;

            Wallet wallet1 = new Wallet(1)
            {
                Name = "Wall_let", Currency = "UAH", InitialBalance = initialBalance
            };

            Transaction transaction1 = new Transaction(1)
            {
                Sum = 10.10M, Currency = "UAH", Category = category1, Date = DateTime.Today
            };
            Transaction transaction2 = new Transaction(2)
            {
                Sum = -5.19M, Currency = "UAH", Category = category2, Date = DateTime.Today
            };
            Transaction transaction3 = new Transaction(3)
            {
                Sum = 32.32M, Currency = "UAH", Category = category1, Date = DateTime.Today
            };

            wallet1.AddTransaction(transaction1);
            wallet1.AddTransaction(transaction2);
            wallet1.AddTransaction(transaction3);

            decimal expected = initialBalance + transaction1.Sum + transaction2.Sum + transaction3.Sum;

            // Act
            decimal actual = wallet1.CurrentBalance;

            // Assert
            Assert.Equal(expected, actual);
        }
コード例 #14
0
        public async Task <Wallet> LoadWalletTransactions(Wallet wallet)
        {
            List <Transaction> transactions = await _storage.GetAllAsyncForObject(wallet);

            foreach (var transaction in transactions)
            {
                wallet.AddTransaction(AuthenticationService.CurrentUser, transaction);
            }
            return(wallet);
        }
コード例 #15
0
        public void ExpensesTest()
        {
            // Arrange
            Category category1 = new Category(1)
            {
                Name = "Salary", Color = Color.Blue
            };
            Category category2 = new Category(2)
            {
                Name = "Health", Color = Color.Green
            };

            Wallet wallet1 = new Wallet(1)
            {
                Name = "Wall_let", Currency = "UAH"
            };

            Transaction transaction1 = new Transaction(1)
            {
                Sum = 10.10M, Currency = "UAH", Category = category1, Date = DateTime.Today
            };
            Transaction transaction2 = new Transaction(2)
            {
                Sum = -5.19M, Currency = "UAH", Category = category2, Date = DateTime.Today
            };
            Transaction transaction3 = new Transaction(3)
            {
                Sum = -32.32M, Currency = "UAH", Category = category2, Date = DateTime.Today
            };

            wallet1.AddTransaction(transaction1);
            wallet1.AddTransaction(transaction2);
            wallet1.AddTransaction(transaction3);

            decimal expected = Math.Abs(transaction2.Sum + transaction3.Sum);

            // Act
            decimal actual = wallet1.Expenses(DateTime.Today, DateTime.Today);

            // Assert
            Assert.Equal(expected, actual);
        }
コード例 #16
0
 // Start is called before the first frame update
 void Start()
 {
     Characters  = model.Characters.Select(c => new Character(c)).ToList();
     BattleGroup = new List <Character>();
     for (int i = 0; i < Math.Min(3, Characters.Count); i++)
     {
         AssingToBattle(Characters[i]);
     }
     Wallet = new Wallet();
     Wallet.AddTransaction(CurrencyType.Food, model.Food);
 }
コード例 #17
0
        public void ExpensesForCurrentMonthTest()
        {
            // Arrange
            Category category1 = new Category(1)
            {
                Name = "Health", Color = Color.Green
            };

            Wallet wallet1 = new Wallet(1)
            {
                Name = "Wall_let", Currency = "UAH"
            };

            Transaction transaction1 = new Transaction(1)
            {
                Sum = -10.10M, Currency = "UAH", Category = category1, Date = DateTime.Today
            };
            Transaction transaction2 = new Transaction(2)
            {
                Sum = -132.32M, Currency = "UAH", Category = category1, Date = DateTime.Today
            };
            Transaction transaction3 = new Transaction(3)
            {
                Sum      = -43.76M,
                Currency = "UAH",
                Category = category1,
                Date     = new DateTime(DateTime.Today.Year, DateTime.Today.Month - 1, DateTime.Today.Day)
            };

            wallet1.AddTransaction(transaction1);
            wallet1.AddTransaction(transaction2);
            wallet1.AddTransaction(transaction3);

            decimal expected = Math.Abs(transaction1.Sum + transaction2.Sum);

            // Act
            decimal actual = wallet1.ExpensesForCurrentMonth();

            // Assert
            Assert.Equal(expected, actual);
        }
コード例 #18
0
        public void IncomesForCurrentMonthTest()
        {
            // Arrange
            Category category1 = new Category(1)
            {
                Name = "Salary", Color = Color.Blue
            };

            Wallet wallet1 = new Wallet(1)
            {
                Name = "Wall_let", Currency = "UAH"
            };

            Transaction transaction1 = new Transaction(1)
            {
                Sum = 10.10M, Currency = "UAH", Category = category1, Date = DateTime.Today
            };
            Transaction transaction2 = new Transaction(2)
            {
                Sum = 132.32M, Currency = "UAH", Category = category1, Date = DateTime.Today
            };
            Transaction transaction3 = new Transaction(3)
            {
                Sum      = 43.76M,
                Currency = "UAH",
                Category = category1,
                Date     = new DateTime(DateTime.Today.Year, DateTime.Today.Month - 1, DateTime.Today.Day)
            };

            wallet1.AddTransaction(transaction1);
            wallet1.AddTransaction(transaction2);
            wallet1.AddTransaction(transaction3);

            decimal expected = transaction1.Sum + transaction2.Sum;

            // Act
            decimal actual = wallet1.IncomesForCurrentMonth();

            // Assert
            Assert.Equal(expected, actual);
        }
コード例 #19
0
        public async Task GetTransactionsAsync()
        {
            var dbTransactions = await _storage.GetAllAsync(Wallet.Id.ToString("N"));

            foreach (var dbTransaction in dbTransactions)
            {
                var transaction = new Transaction(Wallet, dbTransaction.Guid, dbTransaction.Sum, dbTransaction.Currency, dbTransaction.Date, Wallet.Owner.GetCategory(dbTransaction.Category));
                transaction.Description = dbTransaction.Description;
                _transactions.Add(transaction);
                Wallet.AddTransaction(transaction, Wallet.Owner.Id, true);
            }
        }
コード例 #20
0
        public void AddTransactionTest()
        {
            //Arrange
            var owner = new User()
            {
                Id      = id1,
                Name    = "Liza",
                Surname = "Andriienko",
                Email   = "*****@*****.**"
            };
            List <Category> categories = new List <Category>();
            var             category   = new Category(owner, "Food", Colors.Red, new FileInfo("coins.txt"), Guid.NewGuid());

            categories.Add(category);
            owner.Categories = categories;
            var wallet = new Wallet(owner)
            {
                Id             = id2,
                Name           = "Wallet1",
                InitialBalance = 505.3m,
                Description    = "new wallet"
            };
            var transaction = new Transaction()
            {
                Id          = id1,
                Sum         = 275.89m,
                Currency    = Currencies.USD,
                Description = "new transaction",
                Date        = new DateTimeOffset(2021, 7, 20, 14, 10, 5, new TimeSpan(2, 0, 0)),
                Category    = category
            };

            //Act
            wallet.AddTransaction(transaction, owner.Id, false);
            var actual = (wallet.TransactionsAmount() == 1 &&
                          wallet.CurrentBalance == (wallet.InitialBalance + transaction.Sum));

            //Assert
            //Assert.True(actual);
            Assert.False(actual);
        }
コード例 #21
0
        public void GetTransactionTest()
        {
            // Arrange
            Category category1 = new Category(1)
            {
                Name = "Salary", Color = Color.Blue
            };

            Wallet wallet1 = new Wallet(Guid.NewGuid(), "Wall_let", "desc", "UAH", 0, Guid.NewGuid());

            Transaction transaction1 = new Transaction(Guid.NewGuid(), 10.10M, "UAH", category1, "", DateTimeOffset.Now);

            wallet1.AddTransaction(transaction1);

            // Act
            Transaction actualNonNull = wallet1.GetTransaction(1);
            Transaction actualNull    = wallet1.GetTransaction(0);

            // Assert
            Assert.Equal(transaction1, actualNonNull);
            Assert.Null(actualNull);
        }
コード例 #22
0
        public void RemoveTransactionByIndexTest()
        {
            // Arrange
            Category category1 = new Category(1)
            {
                Name = "Salary", Color = Color.Blue
            };

            Wallet wallet1 = new Wallet(Guid.NewGuid(), "Wall_let", "desc", "UAH", 0, Guid.NewGuid());

            Transaction transaction1 = new Transaction(Guid.NewGuid(), 10.10M, "UAH", category1, "", DateTimeOffset.Now);

            wallet1.AddTransaction(transaction1);

            // Act
            bool remT1 = wallet1.RemoveTransaction(1);
            bool remT2 = wallet1.RemoveTransaction(0);

            // Assert
            Assert.True(remT1);
            Assert.False(remT2);
        }
コード例 #23
0
        public void GetTransactionsTest()
        {
            // Arrange
            Category category1 = new Category(1)
            {
                Name = "Salary", Color = Color.Blue
            };

            Wallet wallet1 = new Wallet(1)
            {
                Name = "Wall_let", Currency = "UAH"
            };

            List <Transaction> transactions = new List <Transaction>();

            for (int i = 1; i <= 12; i++)
            {
                Transaction transaction1 = new Transaction(i)
                {
                    Sum = i * 10.10M, Currency = "UAH", Category = category1, Date = DateTime.Today
                };
                transactions.Add(transaction1);
                wallet1.AddTransaction(transaction1);
            }

            // Act
            List <Transaction> actual     = wallet1.GetTransactions(1, 10);
            List <Transaction> actualNull = wallet1.GetTransactions(0, 100);

            // Assert
            for (int i = 0; i < 10; i++)
            {
                Assert.Equal(transactions[i], actual[i]);
            }
            Assert.Null(actualNull);
        }
コード例 #24
0
        public async void AddTransaction()
        {
            try
            {
                if (_addTransaction.MoneyAmount == 0.0m)//|| _addTransaction.Category == null || _addTransaction.Currency == null)
                {
                    // MessageBox.Show("Please, choose money amount,category and currency");
                    MessageBox.Show("Please, choose money amount");
                    return;
                }

                if (_addTransaction.Category == null)
                {
                    MessageBox.Show("Please, choose category");
                    return;
                }

                if (_addTransaction.Currency == null)
                {
                    MessageBox.Show("Please, choose currency");
                    return;
                }
                if (_addTransaction.Date == null)
                {
                    MessageBox.Show("Please, choose date");
                    return;
                }
                if (DateTime.Compare(_addTransaction.Date.Value, DateTime.Today.AddDays(1)) > 0)
                {
                    MessageBox.Show($" {_addTransaction.Date.Value} - Please, don`t look in the future...");
                    return;
                }

                IsEnabled = false;


                _addTransaction.Guid = Guid.NewGuid();
                _wallet.AddTransaction(CurrentInformation.User, _addTransaction);
                //TODO: MAKE METHOD FOR UPDATE AFTER TRANSACTION

                await Task.Run(() => _walService.AddOrUpdateWalletAsync(_wallet));

                await Task.Run(() => _tranService.AddOrUpdateTransactionAsync(_addTransaction));

                MessageBox.Show("Adding wallet transaction completed!");
                UpdateTransactionsCollection();

                RaisePropertyChanged(nameof(DisplayName));
                RaisePropertyChanged(nameof(Transactions));
                RaisePropertyChanged(nameof(TenTransactions));
                RaisePropertyChanged(nameof(LastMonthIncome));
                RaisePropertyChanged(nameof(LastMonthExpense));
            }

            catch (Exception ex)
            {
                MessageBox.Show($"Adding wallet transaction failed {ex.Message}");
            }
            finally // is done independently from exception
            {
                IsEnabled = true;
            }
        }
コード例 #25
0
        public void CheckSpendingsTest()
        {
            //Arrange
            var owner = new User()
            {
                Id      = id1,
                Name    = "Liza",
                Surname = "Andriienko",
                Email   = "*****@*****.**"
            };
            List <Category> categories = new List <Category>();
            var             category0  = new Category(owner, "Food", Colors.Red, new FileInfo("coins.txt"), Guid.NewGuid());
            var             category1  = new Category(owner, "Restaurants", Colors.Blue, new FileInfo("coins.txt"), Guid.NewGuid());

            categories.Add(category0);
            categories.Add(category1);
            owner.Categories = categories;
            var wallet = new Wallet(owner)
            {
                Id             = id2,
                Name           = "Wallet1",
                InitialBalance = 0,
                Description    = "new wallet",
                MainCurrency   = Currencies.USD
            };
            var transaction1 = new Transaction()
            {
                Id          = id1,
                Sum         = 275.5m,
                Currency    = Currencies.USD,
                Description = "new transaction",
                Date        = new DateTimeOffset(2021, 3, 20, 14, 10, 5, new TimeSpan(2, 0, 0)),
                Category    = category0
            };
            var transaction2 = new Transaction()
            {
                Id          = id2,
                Sum         = 83.1m,
                Currency    = Currencies.UAH,
                Description = "transaction in UAH",
                Date        = new DateTimeOffset(2021, 3, 20, 14, 10, 5, new TimeSpan(2, 0, 0)),
                Category    = category1,
                Files       = new List <FileInfo>()
            };
            var transaction3 = new Transaction()
            {
                Id          = id3,
                Sum         = -95.2m,
                Currency    = Currencies.EUR,
                Description = "transaction in EUR",
                Date        = new DateTimeOffset(2021, 3, 22, 18, 20, 5, new TimeSpan(2, 0, 0)),
                Category    = category0
            };

            //Act
            wallet.AddTransaction(transaction1, owner.Id, false);
            wallet.AddTransaction(transaction2, owner.Id, false);
            wallet.AddTransaction(transaction3, owner.Id, false);

            var actualIncome    = wallet.GeneralSumOfIncomeForMonth() == (decimal)278.5;
            var actualSpendings = wallet.GeneralSumOfSpendingsForMonth() == (decimal)80;

            //Assert
            //Assert.True(actualIncome);
            Assert.False(actualIncome);
            Assert.False(actualSpendings);
        }