public void InvokeFailOverInvoiceService_On_ExternalInvoiceServiceException()
        {
            Mock <IExternalInvoiceServiceFacade> externalInvoiceFacadeMock  = new Mock <IExternalInvoiceServiceFacade>();
            Mock <IFailoverInvoiceService>       failoverInvoiceServiceMock = new Mock <IFailoverInvoiceService>();

            externalInvoiceFacadeMock.SetupSequence(x => x.GetInvoices(It.IsAny <string>()))
            .Returns(() => throw new Exception());

            failoverInvoiceServiceMock.Setup(x => x.GetInvoices(It.IsAny <int>()))
            .Returns(new FailoverInvoiceCollectionBuilder().WithLessThan30DaysTimestamp().Build());


            var sut = new ExternalInvoiceProcessor(externalInvoiceFacadeMock.Object, failoverInvoiceServiceMock.Object);

            sut.Process(1);
            failoverInvoiceServiceMock.Verify(x => x.GetInvoices(It.IsAny <int>()));
        }
        public void ThrowExceptionFor_FailOverInvoiceData_OlderThan30Days()
        {
            Mock <IExternalInvoiceServiceFacade> externalInvoiceFacadeMock  = new Mock <IExternalInvoiceServiceFacade>();
            Mock <IFailoverInvoiceService>       failoverInvoiceServiceMock = new Mock <IFailoverInvoiceService>();

            externalInvoiceFacadeMock.SetupSequence(x => x.GetInvoices(It.IsAny <string>()))
            .Returns(() => throw new Exception());

            failoverInvoiceServiceMock.Setup(x => x.GetInvoices(It.IsAny <int>()))
            .Returns(new FailoverInvoiceCollectionBuilder().WithOlderThan30DaysTimestamp().Build());


            var sut = new ExternalInvoiceProcessor(externalInvoiceFacadeMock.Object, failoverInvoiceServiceMock.Object);

            Exception ex = Assert.Throws <Exception>(() => sut.Process(1));

            Assert.Equal("Failover data is quite old", ex.Message);
            failoverInvoiceServiceMock.Verify(x => x.GetInvoices(It.IsAny <int>()));
        }