コード例 #1
0
        public void AddBonusOnOpen_GetBalanceOfCard_Passed()
        {
            var card = new Card("4790878827491205", "4790878827491205", CardType.VISA, Currency.RUR);

            blservice.AddBonusOnOpen(card);
            Assert.Equal(10M, blservice.GetBalanceOfCard(card));
        }
コード例 #2
0
        public void AddTransactionPassed()
        {
            var user = new User("*****@*****.**");
            var card = user.OpenNewCard("firstcard", Currency.RUR, CardType.VISA);

            var transaction = card.AddTransaction(new Transaction(10M, card));

            Assert.Equal(2, card.Transactions.Count);
            Assert.Equal(20M, blservice.GetBalanceOfCard(card));
        }
コード例 #3
0
        public void AddBonusOnOpen_GetBalanceOfCard_Passed()
        {
            var card = new Card
            {
                CardName   = "4790878827491205",
                CardNumber = "4790878827491205",
                CardType   = CardType.VISA,
                Currency   = Currency.RUR
            };

            _businessLogicService.AddBonusOnOpen(card);
            Assert.Equal(10M, _businessLogicService.GetBalanceOfCard(card));
        }
コード例 #4
0
        public void OpenNewCardPassed()
        {
            var user       = new User("*****@*****.**");
            var card       = user.OpenNewCard("firstcard", Currency.RUR, CardType.VISA);
            var actualCard = user.Cards.First();

            Assert.Equal(1, user.Cards.Count);
            Assert.Equal(CardType.VISA, card.CardType);
            Assert.Equal(1, card.Transactions.Count);
            Assert.Equal(1, actualCard.Transactions.Count);
            Assert.StrictEqual(card, actualCard);

            Assert.Equal(10M, blservice.GetBalanceOfCard(card));
        }
コード例 #5
0
        /// <summary>
        /// Create new transaction with validation
        /// </summary>
        /// <param name="sum">Sum of the transaction</param>
        /// <param name="from">Link card from</param>
        /// <param name="to">Link card to</param>
        public Transaction(decimal sum, Card from, Card to)
        {
            if (from == null)
            {
                throw new BusinessLogicException(TypeBusinessException.TRANSACTION,
                                                 "From card is null", "Не найдена карта с которой совершается перевод");
            }

            if (to == null)
            {
                throw new BusinessLogicException(TypeBusinessException.TRANSACTION,
                                                 "To card is null", "Не найдена карта на которую совершается перевод");
            }

            if (from.CardNumber == to.CardNumber)
            {
                throw new BusinessLogicException(TypeBusinessException.TRANSACTION,
                                                 "From card and to card is Equal", "Нельзя перевести на туже карту");
            }

            if (sum <= 0)
            {
                throw new UserDataException("Transaction need more then 0", $"from {from.CardName} to {to.CardName}");
            }

            if (!blService.CheckCardActivity(from))
            {
                throw new BusinessLogicException(TypeBusinessException.CARD,
                                                 "Card is expired", $"Карта {from.CardNumber } просрочена");
            }

            if (!blService.CheckCardActivity(to))
            {
                throw new BusinessLogicException(TypeBusinessException.CARD,
                                                 "Card is expired", $"Карта {to.CardNumber } просрочена");
            }

            if (blService.GetBalanceOfCard(from) < sum)
            {
                throw new BusinessLogicException(TypeBusinessException.CARD,
                                                 "No money", $" Недостаточно средств на карте {from.CardNumber }");
            }

            CardFromNumber = from.CardNumber;
            CardToNumber   = to.CardNumber;
            FromSum        = sum;
            ToSum          = blService.GetConvertSum(sum, from.Currency, to.Currency);
        }