示例#1
0
        public void ShouldSendWellFormedAlert()
        {
            // Arrange.
            const ApplicationStatuses currentStatus = ApplicationStatuses.Submitted;
            const ApplicationStatuses newStatus     = ApplicationStatuses.Successful;

            const int    legacyApplicationId = 3456789;
            const string unsuccessfulReason  = "You do not have the required grades";

            ApplicationStatusChanged applicationStatusChanged = null;

            var serviceBus = new Mock <IServiceBus>();

            serviceBus.Setup(mock => mock
                             .PublishMessage(It.IsAny <ApplicationStatusChanged>()))
            .Callback <ApplicationStatusChanged>(each =>
            {
                applicationStatusChanged = each;
            });

            var strategy = new ApplicationStatusAlertStrategyBuilder()
                           .With(serviceBus)
                           .Build();

            var summary = new ApplicationStatusSummaryBuilder(newStatus)
                          .WithLegacyApplicationId(legacyApplicationId)
                          .WithUnsuccessfulReason(unsuccessfulReason)
                          .Build();

            // Act.
            strategy.Send(currentStatus, summary);

            // Assert.
            applicationStatusChanged.Should().NotBeNull();
            applicationStatusChanged.LegacyApplicationId.Should().Be(legacyApplicationId);
            applicationStatusChanged.ApplicationStatus.Should().Be(newStatus);
            applicationStatusChanged.UnsuccessfulReason.Should().Be(unsuccessfulReason);
        }
示例#2
0
        public void Send(ApplicationStatuses currentStatus, ApplicationStatusSummary applicationStatusSummary)
        {
            if (!applicationStatusSummary.IsLegacySystemUpdate())
            {
                return;
            }

            if (currentStatus == applicationStatusSummary.ApplicationStatus)
            {
                return;
            }

            if (!(applicationStatusSummary.ApplicationStatus == ApplicationStatuses.Successful ||
                  applicationStatusSummary.ApplicationStatus == ApplicationStatuses.Unsuccessful))
            {
                return;
            }

            var applicationStatusChanged = new ApplicationStatusChanged
            {
                LegacyApplicationId = applicationStatusSummary.LegacyApplicationId,
                ApplicationStatus   = applicationStatusSummary.ApplicationStatus,
                UnsuccessfulReason  = applicationStatusSummary.UnsuccessfulReason
            };

            var message =
                $"Queuing application status changed for LegacyApplicationId: {applicationStatusChanged.LegacyApplicationId} with ApplicationStatus: {applicationStatusChanged.ApplicationStatus}, UnsuccessfulReason: {applicationStatusChanged.UnsuccessfulReason}";

            try
            {
                _logService.Debug(message);
                _serviceBus.PublishMessage(applicationStatusChanged);
            }
            catch (Exception e)
            {
                _logService.Warn(message + " failed!", e);
            }
        }
示例#3
0
 private static void OnApplicationStatusChanged(AppType newStatus)
 {
     ApplicationStatusChanged?.Invoke(null, new ChangeAppStatusEventArgs {
         NewStatus = newStatus
     });
 }