public async Task ShouldFormatExceptionAsUnHandlerExceptionResult() { // Arrange LogSettings logSettings = new LogSettings(); Mock <IOptionsSnapshot <LogSettings> > mockOptions = new Mock <IOptionsSnapshot <LogSettings> >(); mockOptions.Setup(x => x.Value).Returns(logSettings); Mock <IRequestLogger> mockRequestLogger = new Mock <IRequestLogger>(); Mock <ILogger <TestQuery> > mockLogger = new Mock <ILogger <TestQuery> >(); Mock <IQueryHandler <TestQuery, string> > mockQueryHandler = new Mock <IQueryHandler <TestQuery, string> >(); var query = new TestQuery(); mockQueryHandler .Setup(x => x.Handle(query, It.IsAny <RequestContext>())) .ThrowsAsync(new Exception()); var decorator = new LogQueryHandlerDecorator <TestQuery, string>(mockRequestLogger.Object, mockQueryHandler.Object, mockOptions.Object, mockLogger.Object); // Act var result = await decorator.Handle(query, Helper.Context); // Assert Assert.True(result.HasError); Assert.Equal(Constants.UnhandledException, result.Errors[0].Code); }
public async Task ShouldNotLogIfQueryIsInExcludeList() { // Arrange LogSettings logSettings = new LogSettings { Exclude = new List <string> { typeof(TestQuery).Name } }; Mock <IOptionsSnapshot <LogSettings> > mockOptions = new Mock <IOptionsSnapshot <LogSettings> >(); mockOptions.Setup(x => x.Value).Returns(logSettings); Mock <IRequestLogger> mockRequestLogger = new Mock <IRequestLogger>(); Mock <ILogger <TestQuery> > mockLogger = new Mock <ILogger <TestQuery> >(); Mock <IQueryHandler <TestQuery, string> > mockQueryHandler = new Mock <IQueryHandler <TestQuery, string> >(); var query = new TestQuery(); mockQueryHandler .Setup(x => x.Handle(query, It.IsAny <RequestContext>())) .ReturnsAsync(new QueryResult <string>("OK")); var decorator = new LogQueryHandlerDecorator <TestQuery, string>(mockRequestLogger.Object, mockQueryHandler.Object, mockOptions.Object, mockLogger.Object); // Act var result = await decorator.Handle(query, Helper.Context); // Assert mockRequestLogger.Verify(x => x.Log(It.IsAny <RequestLog>()), Times.Exactly(0)); Assert.Equal(Messages.Success, result.Code); }
public async Task ShouldLogIfSettingsIsNotProvided() { // Arrange LogSettings logSettings = new LogSettings(); // Mock<LogSettings> mockOptions = new Mock<LogSettings>; // mockOptions. Mock <IRequestLogger> mockRequestLogger = new Mock <IRequestLogger>(); Mock <ILogger <TestQuery> > mockLogger = new Mock <ILogger <TestQuery> >(); Mock <IQueryHandler <TestQuery, string> > mockQueryHandler = new Mock <IQueryHandler <TestQuery, string> >(); var query = new TestQuery(); mockQueryHandler .Setup(x => x.Handle(query, It.IsAny <RequestContext>())) .ReturnsAsync(new QueryResult <string>("OK")); var decorator = new LogQueryHandlerDecorator <TestQuery, string>(mockRequestLogger.Object, mockQueryHandler.Object, logSettings, mockLogger.Object); // Act var result = await decorator.Handle(query, Helper.Context); // Assert mockRequestLogger.Verify(x => x.Log(It.IsAny <RequestLog>()), Times.Exactly(1)); Assert.Equal(Messages.Success, result.Code); }