public void TestALinkThatIsNotExcelForCorrectException() { var mockLogger = new Mock <ILogFunctions>(); var errorMessageString = string.Empty; Exception errorException = null; var errorAction = new Action <string, Exception>((message, exception) => { errorMessageString = message; errorException = exception; }); mockLogger.SetupGet(x => x.Error).Returns(errorAction); var action = new Action <string>(message => { }); mockLogger.SetupGet(x => x.Debug).Returns(action); var mockWebClientFactory = new Mock <IWebClientFactory>(); var mockWebClient = new Mock <IWebClient>(); mockWebClient.Setup(x => x.DownloadData(It.IsAny <Uri>())).Returns(new byte[20]); mockWebClientFactory.Setup(x => x.Create()).Returns(mockWebClient.Object); var getInspectionService = new GetInspectionsService(mockLogger.Object, Mock.Of <IGetOfstedDetailsFromExcelPackageService>(), mockWebClientFactory.Object); var urlWithoutExcel = "http://blah.xyz"; Assert.Throws <UrlReadingException>(() => getInspectionService.GetInspectionsDetail(urlWithoutExcel)); mockLogger.Verify(x => x.Debug, Times.Exactly(3)); Assert.IsTrue(errorMessageString.StartsWith("Error whilst trying to read excel details from url: ["), "Logged Error message does not contain expected words"); Assert.IsNotNull(errorException); Assert.IsTrue(errorException.Message.StartsWith("Error whilst trying to read excel details from url: ["), "Exception message does not contain expected words"); }
public void TestAnInvalidUrlForCorrectException(string invalidUrl, string exceptionMessage) { var mockLogger = new Mock <ILogFunctions>(); var errorMessageString = string.Empty; Exception errorException = null; var errorAction = new Action <string, Exception>((message, exception) => { errorMessageString = message; errorException = exception; }); mockLogger.SetupGet(x => x.Error).Returns(errorAction); var action = new Action <string>(message => { }); mockLogger.SetupGet(x => x.Debug).Returns(action); var mockWebClientFactory = new Mock <IWebClientFactory>(); var mockWebClient = new Mock <IWebClient>(); mockWebClient.Setup(x => x.DownloadData(It.IsAny <Uri>())).Throws <UriFormatException>(); mockWebClientFactory.Setup(x => x.Create()).Returns(mockWebClient.Object); var getInspectionService = new GetInspectionsService(mockLogger.Object, Mock.Of <IGetOfstedDetailsFromExcelPackageService>(), mockWebClientFactory.Object); Assert.Throws <UrlReadingException>(() => getInspectionService.GetInspectionsDetail(invalidUrl)); mockLogger.Verify(x => x.Debug, Times.Exactly(2)); Assert.IsTrue(errorMessageString.StartsWith(exceptionMessage), "Logged Error message does not contain expected words"); Assert.IsNotNull(errorException); Assert.IsTrue(errorException.Message.StartsWith(exceptionMessage), "Exception message does not contain expected words"); }
public void TestALinkThatReturnsExcelAndCountLoggerDebugCalls() { var mockLogger = new Mock <ILogFunctions>(); var action = new Action <string>(message => { }); mockLogger.SetupGet(x => x.Debug).Returns(action); var mockWebClientFactory = new Mock <IWebClientFactory>(); var mockWebClient = new Mock <IWebClient>(); var excelPackage = CreateBasicExcelSpreadsheetForStubbing(); mockWebClient.Setup(x => x.DownloadData(It.IsAny <Uri>())).Returns(excelPackage.GetAsByteArray); mockWebClientFactory.Setup(x => x.Create()).Returns(mockWebClient.Object); var getInspectionService = new GetInspectionsService(mockLogger.Object, Mock.Of <IGetOfstedDetailsFromExcelPackageService>(), mockWebClientFactory.Object); const string urlWithExcel = "http://blah.xyz"; getInspectionService.GetInspectionsDetail(urlWithExcel); mockLogger.Verify(x => x.Debug, Times.Exactly(7)); }