public async Task ReturnDataGivenAccountNumber1234() { var result = await _accountRepository.Balance(1234); List <string> validCurrs = new List <string> { "USD", "THB" }; Assert.AreEqual(true, result.Successful, "Balance for account number 1234 should success"); Assert.AreEqual(1234, result.AccountNumber, "Balance for account number 1234 should have AccuntNumber: 1234"); Assert.AreEqual(2, result.AccountBalances.Count, "Balance for account number 1234 should return 2 items of AccountBalance"); Assert.AreEqual(1, result.AccountBalances.Where(a => a.Currency == "THB").Count(), "Balance for account number 1234 should return 1 items of AccountBalance with currency: THB"); Assert.AreEqual(1, result.AccountBalances.Where(a => a.Currency == "USD").Count(), "Balance for account number 1234 should return 1 items of AccountBalance with currency: USD"); Assert.AreEqual(5000, result.AccountBalances.First(a => a.Currency == "THB").Balance, "Balance for account number 1234 should return balance 22500 for currency: THB"); Assert.AreEqual(250, result.AccountBalances.First(a => a.Currency == "USD").Balance, "Balance for account number 1234 should return balance 0 for currency: USD"); //Negative Assert.AreEqual(0, result.AccountBalances.Where(a => !validCurrs.Contains(a.Currency)).Count(), "Balance for account number 1234 should return no items of AccountBalance with currency except THB, USD"); Assert.AreEqual(null, result.Currency, "Balance for account number 1234 should not return currency in root"); Assert.AreEqual(null, result.Balance, "Balance for account number 1234 should not amount currency in root"); }