public async Task GetNextState_FromUnknownState_ThrowsException() { //Arrange var flow = new ProvisionInstanceStateFlow( "some-plan-id", new Dogger.Domain.Models.Instance() { Name = "some-instance-name" }); var serviceProvider = TestServiceProviderFactory.CreateUsingStartup(); var stateFactory = new ProvisioningStateFactory(serviceProvider); var fakeState = Substitute.For <IProvisioningState>(); var fakeMediator = Substitute.For <IMediator>(); //Act var exception = await Assert.ThrowsExceptionAsync <UnknownFlowStateException>(async() => await flow.GetNextStateAsync(new NextStateContext( fakeMediator, stateFactory, fakeState))); //Assert Assert.IsNotNull(exception); }
public async Task GetInitialState_ValuesGiven_TransfersValuesToInitialState() { //Arrange var flow = new ProvisionInstanceStateFlow( "some-plan-id", new Dogger.Domain.Models.Instance() { Name = "some-instance-name" }); var serviceProvider = TestServiceProviderFactory.CreateUsingStartup(); var stateFactory = new ProvisioningStateFactory(serviceProvider); var fakeMediator = Substitute.For <IMediator>(); //Act var state = await flow.GetInitialStateAsync(new InitialStateContext( fakeMediator, stateFactory)) as ICreateLightsailInstanceState; //Assert Assert.IsNotNull(state); Assert.AreEqual("some-plan-id", state.PlanId); Assert.AreEqual("some-instance-name", state.DatabaseInstance.Name); }
public async Task GetNextState_FromCompleteInstanceSetupState_ReturnsNull() { //Arrange var flow = new ProvisionInstanceStateFlow( "some-plan-id", new Dogger.Domain.Models.Instance() { Name = "some-instance-name" }); var serviceProvider = TestServiceProviderFactory.CreateUsingStartup(); var stateFactory = new ProvisioningStateFactory(serviceProvider); var fakeState = Substitute.For <ICompleteInstanceSetupState>(); var fakeMediator = Substitute.For <IMediator>(); //Act var state = await flow.GetNextStateAsync(new NextStateContext( fakeMediator, stateFactory, fakeState)); //Assert Assert.IsNull(state); }
public async Task GetNextState_FromCreateLightsailInstanceState_ReturnsInstallDockerOnInstanceStateWithValuesTransferred() { //Arrange var fakeUserId = Guid.NewGuid(); var flow = new ProvisionInstanceStateFlow( "some-plan-id", new Dogger.Domain.Models.Instance() { Name = "some-instance-name" }) { UserId = fakeUserId }; var serviceProvider = TestServiceProviderFactory.CreateUsingStartup(); var stateFactory = new ProvisioningStateFactory(serviceProvider); var fakeMediator = Substitute.For <IMediator>(); var fakeState = Substitute.For <ICreateLightsailInstanceState>(); fakeState.CreatedLightsailInstance.Returns(new Instance() { PublicIpAddress = "127.0.0.1" }); //Act var state = await flow.GetNextStateAsync(new NextStateContext( fakeMediator, stateFactory, fakeState)) as IInstallSoftwareOnInstanceState; //Assert Assert.IsNotNull(state); Assert.AreEqual("127.0.0.1", state.IpAddress); Assert.AreEqual(fakeUserId, state.UserId); }