public void BitcoinAveragePriceMonitor_StopMonitoringTest() { // Arrange var expectedResult = 2.5; var mockResponseWithExpectedResult = new Mock<IRestResponse>(); mockResponseWithExpectedResult.SetupGet(m => m.Content) .Returns((expectedResult).ToString()); var mockRestClientThatReturnsMockResponse = new Mock<IRestClient>(); mockRestClientThatReturnsMockResponse.Setup(m => m.Execute(It.IsAny<IRestRequest>())) .Returns(mockResponseWithExpectedResult.Object); var mockSettingsThatReturnsFakeBitcoinAverageUrl = new Mock<ISettings>(); mockSettingsThatReturnsFakeBitcoinAverageUrl.SetupGet(m => m.BitcoinAverageApiUrl).Returns("http://example.com"); var target = new BitcoinAveragePriceMonitor(mockRestClientThatReturnsMockResponse.Object, mockSettingsThatReturnsFakeBitcoinAverageUrl.Object); target.Frequency = 100; // Act Thread thread = new Thread(delegate () { target.StartMonitoring(); }); thread.Start(); Thread.Sleep(130); target.StopMonitoring(); Thread.Sleep(130); // Assert Assert.AreEqual(expectedResult, target.CurrentPrice); mockRestClientThatReturnsMockResponse.Verify(m => m.Execute(It.IsAny<IRestRequest>()), Times.Exactly(2)); }
public void BitcoinAveragePriceMonitor_UnsubscribedObserversNotNotifiedTest() { // Arrange var expectedResult = 2.5; ; var expectedResultString = expectedResult.ToString(); var observerGuid = Guid.NewGuid(); var mockSettingsThatReturnsFakeBitcoinAverageUrl = new Mock<ISettings>(); mockSettingsThatReturnsFakeBitcoinAverageUrl.SetupGet(m => m.BitcoinAverageApiUrl).Returns("http://example.com"); var mockResponseWithExpectedResult = new Mock<IRestResponse>(); mockResponseWithExpectedResult.SetupGet(m => m.Content).Returns(expectedResultString); var mockRestClientThatReturnsMockResponse = new Mock<IRestClient>(); mockRestClientThatReturnsMockResponse.Setup(m => m.Execute(It.IsAny<IRestRequest>())) .Returns(mockResponseWithExpectedResult.Object); var mockObserver = new Mock<ITradePriceObserver>(); mockObserver.SetupGet(m => m.ObserverId).Returns(observerGuid); var target = new BitcoinAveragePriceMonitor(mockRestClientThatReturnsMockResponse.Object, mockSettingsThatReturnsFakeBitcoinAverageUrl.Object); target.Subscribe(mockObserver.Object); target.Frequency = 100; // Act Thread thread = new Thread(delegate () { target.StartMonitoring(); }); thread.Start(); Thread.Sleep(130); target.Unsubscribe(mockObserver.Object); Thread.Sleep(130); target.StopMonitoring(); // Assert mockObserver.Verify(m => m.Update(new TradePrice(expectedResult, target.TargetCurrency)), Times.Exactly(2)); }