public async void UserCanOnlySuccessfullyStartWhenTheyHavePaused() { var mockMiner = new Mock <IMiner>(); mockMiner.SetupProperty(x => x.CurrentState); var firstState = new MinerStartedFromNoGaming(); mockMiner.Object.CurrentState = firstState; var stateHandler = new TrexMiner.MinerStateHandler(mockMiner.Object); var newState = new MinerStartedFromUserRequest(); var eventVerification = AddVerifyableEventHandler(stateHandler); var stateTransitionSuccess = await stateHandler.TransitionToStateAsync(newState); stateTransitionSuccess.Should().Be(false, "We should not transition state when the user has not paused."); mockMiner.Verify(x => x.Start(), Times.Never); mockMiner.Object.CurrentState.Should().Be(firstState); eventVerification().Should().Be(false, "we should not be notified if state transition failed."); }
public async void MinerStartsFromUserRequest() { var mockMiner = new Mock <IMiner>(); mockMiner.SetupProperty(x => x.CurrentState); var firstState = new MinerStoppedFromUserRequest(); mockMiner.Object.CurrentState = firstState; var stateHandler = new TrexMiner.MinerStateHandler(mockMiner.Object); var newState = new MinerStartedFromUserRequest(); var eventVerification = AddVerifyableEventHandler(stateHandler); var stateTransitionSuccess = await stateHandler.TransitionToStateAsync(newState); stateTransitionSuccess.Should().Be(true, "We should start when the user asks to resume from a pause."); mockMiner.Verify(x => x.Start(), Times.Once); mockMiner.Object.CurrentState.Should().Be(newState); eventVerification().Should().Be(true, "we should be notified during successful state transition."); }