public void UpdateAccounts_ShouldReturnAccounts_WhenAccountExists() { //Arrange _httpMessageHandlerMock .Protected() .Setup <Task <HttpResponseMessage> >("SendAsync", ItExpr.IsAny <HttpRequestMessage>(), ItExpr.IsAny <CancellationToken>()) .Returns(Task.FromResult(new HttpResponseMessage(HttpStatusCode.OK) { StatusCode = HttpStatusCode.OK, Content = new StringContent( @"[{ ""id"": ""71452118-efc7-4cc4-8780-a5e22d4baa53"", ""currency"": ""BTC"", ""balance"": ""0.0000000000000000"", ""available"": ""0.0000000000000000"", ""hold"": ""0.0000000000000000"", ""profile_id"": ""75da88c5-05bf-4f54-bc85-5c775bd68254"", ""trading_enabled"":true }, { ""id"": ""e316cb9a-0808-4fd7-8914-97829c1925de"", ""currency"": ""USD"", ""balance"": ""80.2301373066930000"", ""available"": ""79.2266348066930000"", ""hold"": ""1.0035025000000000"", ""profile_id"": ""75da88c5-05bf-4f54-bc85-5c775bd68254"" }]") })) .Verifiable(); HttpClient httpClient = new HttpClient(_httpMessageHandlerMock.Object); _connectionAdapter.HttpClient = httpClient; Coinbase subjectUnderTest = new Coinbase { ConnectionAdapter = _connectionAdapter }; //Act subjectUnderTest.UpdateAccountsAsync().Wait(); //Assert Assert.IsNotNull(subjectUnderTest.Accounts); Assert.AreEqual(2, subjectUnderTest.Accounts.Count); Assert.AreEqual("71452118-efc7-4cc4-8780-a5e22d4baa53", subjectUnderTest.Accounts[0].ID); Assert.AreEqual("BTC", subjectUnderTest.Accounts[0].Currency); Assert.AreEqual((decimal)0.0000000000000000, subjectUnderTest.Accounts[0].Balance.ToDecimal()); Assert.AreEqual((decimal)0.0000000000000000, subjectUnderTest.Accounts[0].Available.ToDecimal()); Assert.AreEqual((decimal)0.0000000000000000, subjectUnderTest.Accounts[0].Hold.ToDecimal()); Assert.AreEqual("e316cb9a-0808-4fd7-8914-97829c1925de", subjectUnderTest.Accounts[1].ID); Assert.AreEqual("USD", subjectUnderTest.Accounts[1].Currency); Assert.AreEqual((decimal)Math.Round(80.23013731, 6), subjectUnderTest.Accounts[1].Balance.ToDecimal()); Assert.AreEqual((decimal)Math.Round(79.22663481, 6), subjectUnderTest.Accounts[1].Available.ToDecimal()); Assert.AreEqual((decimal)Math.Round(1.00350250, 6), subjectUnderTest.Accounts[1].Hold.ToDecimal()); }
public void UpdateAccountsWithParameter_ShouldReturnAccounts_WhenAccountExists() { //Arrange _httpMessageHandlerMock .Protected() .Setup <Task <HttpResponseMessage> >("SendAsync", ItExpr.IsAny <HttpRequestMessage>(), ItExpr.IsAny <CancellationToken>()) .Returns(Task.FromResult(new HttpResponseMessage(HttpStatusCode.OK) { StatusCode = HttpStatusCode.OK, Content = new StringContent( @"[{ ""id"": ""71452118-efc7-4cc4-8780-a5e22d4baa53"", ""currency"": ""BTC"", ""balance"": ""0.0000000000000000"", ""available"": ""0.0000000000000000"", ""hold"": ""0.0000000000000000"", ""profile_id"": ""75da88c5-05bf-4f54-bc85-5c775bd68254"", ""trading_enabled"":true }]") })) .Verifiable(); HttpClient httpClient = new HttpClient(_httpMessageHandlerMock.Object); _connectionAdapter.HttpClient = httpClient; Coinbase subjectUnderTest = new Coinbase(); subjectUnderTest.ConnectionAdapter = _connectionAdapter; //Act subjectUnderTest.UpdateAccountsAsync("71452118-efc7-4cc4-8780-a5e22d4baa53").Wait(); //Assert Assert.IsNotNull(subjectUnderTest.Accounts); Assert.AreEqual(1, subjectUnderTest.Accounts.Count); Assert.AreEqual("71452118-efc7-4cc4-8780-a5e22d4baa53", subjectUnderTest.Accounts[0].ID); Assert.AreEqual("BTC", subjectUnderTest.Accounts[0].Currency); Assert.AreEqual((decimal)0.0000000000000000, subjectUnderTest.Accounts[0].Balance.ToDecimal()); Assert.AreEqual((decimal)0.0000000000000000, subjectUnderTest.Accounts[0].Available.ToDecimal()); Assert.AreEqual((decimal)0.0000000000000000, subjectUnderTest.Accounts[0].Hold.ToDecimal()); }