public void When_Unusual_Customers_Exist_Then_Customer_Count_Is_Correct() { var highWinRate = new HighWinRate(new List <CustomerModel> { new CustomerModel { Id = 1, Fullname = string.Empty, AverageBet = 100 }, new CustomerModel { Id = 2, Fullname = string.Empty, AverageBet = 50 } }, new List <SettledBetModel> { new SettledBetModel { Id = 3, CustomerId = 1, CustomerName = string.Empty, EventId = 5, ParticipantId = 8, Stake = 50, Win = 200 }, new SettledBetModel { Id = 3, CustomerId = 2, CustomerName = string.Empty, EventId = 5, ParticipantId = 8, Stake = 50, Win = 400 }, new SettledBetModel { Id = 5, CustomerId = 2, CustomerName = string.Empty, EventId = 5, ParticipantId = 8, Stake = 50, Win = 0 } } ); var calculator = new CustomerCalculatorService(); var result = calculator.DoCalculation(highWinRate); Assert.AreEqual(result.Count, 1, "Incorrect number of customers with high win rate returned"); }
public void Test_HighWinRateForOneCustomer_Success() { var riskMetrics = new HighWinRate(mConfig.HighWinRateThreshold); Bet[] bets = { new Bet { Customer = 1, Stake = 1, Win = 1 }, new Bet { Customer = 1, Stake = 1, Win = 2 }, new Bet { Customer = 1, Stake = 1, Win = 3 }, new Bet { Customer = 1, Stake = 1, Win = 0 }, new Bet { Customer = 1, Stake = 1, Win = 10 }, new Bet { Customer = 1, Stake = 1, Win = 0 }, new Bet { Customer = 2, Stake = 1, Win = 0 }, new Bet { Customer = 2, Stake = 1, Win = 0 }, new Bet { Customer = 2, Stake = 1, Win = 1 }, new Bet { Customer = 3, Stake = 1, Win = 1 } }; var results = riskMetrics.Evaluate(bets, new Bet[] {}); Assert.AreEqual(1, results.Count(), "Only customer 1 has a high win rate"); Assert.IsTrue(results.Single().StartsWith($"UNUSUAL: Customer {bets[0].Customer} has a win rate of ")); }
public List <CustomerModel> GetUnusualCustomers(IEnumerable <CustomerModel> customers, IEnumerable <SettledBetModel> settledBets) { var highWinRate = new HighWinRate(customers, settledBets); return(_calculator.DoCalculation(highWinRate)); }