public async Task SendPeriodEndStartedEvent_ApprovalsServiceIsRemoved()
        {
            var messageSession = await MessageSessionBuilder.BuildAsync();

            var serviceStatus = await ServiceFabricManager.IsApprovalsServiceRunning();

            serviceStatus.Should().BeTrue("Approvals service is not running prior to test");

            var periodEndEvent = new PeriodEndStartedEvent {
                CollectionPeriod = new CollectionPeriod {
                    AcademicYear = 1920, Period = 6
                }
            };
            await messageSession.Publish(periodEndEvent).ConfigureAwait(false);

            var result = await new TimeService()
                         .WaitForBoolean(async() =>
                                         await ServiceFabricManager.IsApprovalsServiceRunning(),
                                         false);

            if (result == false)
            {
                return;
            }

            Assert.Fail("Approvals service is still running 15s after sending message");
        }
        public async Task SendPeriodEndStoppedEvent_ApprovalsServiceIsReinstalled()
        {
            var messageSession = await MessageSessionBuilder.BuildAsync();

            var serviceStatus = await ServiceFabricManager.IsApprovalsServiceRunning();

            serviceStatus.Should().BeFalse("Approvals service is running prior to test start");

            var periodEndEvent = new PeriodEndStoppedEvent();
            await messageSession.Publish(periodEndEvent).ConfigureAwait(false);

            var result = await new TimeService()
                         .WaitForBoolean(async() =>
                                         await ServiceFabricManager.IsApprovalsServiceRunning(),
                                         true);

            if (result)
            {
                return;
            }

            Assert.Fail("Approvals service is not running 15s after sending message");
        }