/// <summary>
        /// Provides an override for provisioning and a way to complete the saga instance in case
        /// the provisioning fails or times out. Works on the assumption that the resource that is
        /// passed to it has been created manually and exists.
        /// </summary>
        /// <param name="message">The message.</param>
        public void Handle(ForceProvisioningCompletionCommand message)
        {
            Data.SiteUrl = message.SiteUrl;
            Data.ProvisioningRequestStatus = ProvisioningRequestStatus.Provisioned.ToString();

            Bus.Publish <ProvisioningStatusChanged>(m =>
            {
                m.ProjectId = Data.ProjectId;
                m.SiteUrl   = Data.SiteUrl;
                m.RequestId = Data.RequestId;
                m.ProvisioningRequestStatusId = (int)ProvisioningRequestStatus.Provisioned;
            });

            GenerateDmp(Data.ProjectId, Data.SiteUrl);
            Complete();
        }
Beispiel #2
0
        public void Complete_when_force_provisioning_completion_command_is_received()
        {
            var completeCommand = new ForceProvisioningCompletionCommand {
                ProjectId = 1, SiteUrl = _siteUrl
            };

            Test.Saga <ProvisioningSaga>()
            .ExpectPublish <ProvisioningStatusChanged>(m =>
                                                       m.ProjectId == 1 &&
                                                       m.RequestId == 1 &&
                                                       m.SiteUrl == _siteUrl &&
                                                       m.ProvisioningRequestStatusId == (int)ProvisioningRequestStatus.Provisioned)
            .ExpectSend <GenerateDmpCommand>(m => m.ProjectId == 1 && m.SiteUrl == _siteUrl)
            .When(x =>
            {
                x.Data.ProjectId = 1;
                x.Data.SiteUrl   = null;
                x.Data.RequestId = 1;
                x.Handle(completeCommand);
            })
            .AssertSagaCompletionIs(true);
        }