public void ShouldThrowIfCustomerBetIsNull()
        {
            // Arrange
            CustomerBet customerBet = null;

            var target = new DefaultTotalWinningsCalculationStrategy();

            // Act & Assert
            Assert.Throws <ArgumentNullException>(() =>
            {
                var totalWinnings = target.CalculateTotalWinnings(customerBet);
            });
        }
        public void ShouldReturnZeroEarningsIfNoBet()
        {
            // Arrange
            var customerBet = new CustomerBet
            {
                Bets = new List <Bet>()
            };

            var target = new DefaultTotalWinningsCalculationStrategy();

            // Act
            var totalWinnings = target.CalculateTotalWinnings(customerBet);

            // Assert
            Assert.Equal(0, totalWinnings);
        }
        public void ShouldCalculateTotalWinningsCorrectly()
        {
            // Arrange
            var customerBet = new CustomerBet
            {
                Bets = new List <Bet>
                {
                    new Bet {
                        ReturnStake = 100, Won = false
                    },
                    new Bet {
                        ReturnStake = 300, Won = true
                    },
                    new Bet {
                        ReturnStake = 200, Won = false
                    },
                    new Bet {
                        ReturnStake = 300, Won = true
                    },
                    new Bet {
                        ReturnStake = 400, Won = true
                    },
                    new Bet {
                        ReturnStake = 100, Won = false
                    }
                }
            };

            var target = new DefaultTotalWinningsCalculationStrategy();

            // Act
            var totalWinnings = target.CalculateTotalWinnings(customerBet);

            // Assert
            Assert.Equal(1000, totalWinnings);
        }