public async Task Get_MediatorWithCommandRequest_ExecutesChangeTrackerContextInterceptorAndEnablesTracking() { // arrange var autoMocker = new AutoMocker(); var serviceProvider = autoMocker.GetMock <IServiceProvider>(); var testHandler = new Mock <TestHandler>(); var logger = new Mock <IBoltOnLogger <ChangeTrackerInterceptor> >(); serviceProvider.Setup(s => s.GetService(typeof(IHandler <TestCommand, bool>))) .Returns(testHandler.Object); var request = new TestCommand(); var changeTrackerContext = new ChangeTrackerContext(); autoMocker.Use <IEnumerable <IInterceptor> >(new List <IInterceptor> { new ChangeTrackerInterceptor(logger.Object, changeTrackerContext) }); var sut = autoMocker.CreateInstance <BoltOn.Mediator.Pipeline.Mediator>(); testHandler.Setup(s => s.HandleAsync(request, It.IsAny <CancellationToken>())).Returns(Task.FromResult(true)); // act var result = await sut.ProcessAsync(request); // assert Assert.True(result); Assert.False(changeTrackerContext.IsQueryRequest); logger.Verify(l => l.Debug($"Entering {nameof(ChangeTrackerInterceptor)}...")); logger.Verify(l => l.Debug($"IsQueryRequest: {false}")); }
public CustomChangeTrackerInterceptor(IBoltOnLogger <CustomChangeTrackerInterceptor> logger, ChangeTrackerContext changeTrackerContext) { _logger = logger; _changeTrackerContext = changeTrackerContext; }