public void SetUp() { var sagaType = typeof(ThingySaga); _resolverMock = InjectMock <IResolver>(); _sagaStoreMock = InjectMock <ISagaStore>(); _sagaDefinitionServiceMock = InjectMock <ISagaDefinitionService>(); _sagaErrorHandlerMock = InjectMock <ISagaErrorHandler>(); _sagaUpdaterMock = new Mock <ISagaUpdater>(); _sagaLocatorMock = new Mock <ISagaLocator>(); _resolverMock .Setup(r => r.Resolve(It.Is <Type>(t => typeof(ISagaLocator).IsAssignableFrom(t)))) .Returns(_sagaLocatorMock.Object); _resolverMock .Setup(r => r.Resolve(It.Is <Type>(t => typeof(ISagaUpdater).IsAssignableFrom(t)))) .Returns(_sagaUpdaterMock.Object); _sagaDefinitionServiceMock .Setup(d => d.GetSagaDetails(It.IsAny <Type>())) .Returns(new[] { SagaDetails.From(sagaType), }); }
public async Task <TSaga> UpdateAsync <TSaga>( ISagaId sagaId, SagaDetails sagaDetails, ISourceId sourceId, Func <TSaga, CancellationToken, Task> updateSaga, CancellationToken cancellationToken) where TSaga : ISaga { using (await _asyncLock.WaitAsync(cancellationToken).ConfigureAwait(false)) { object obj; if (!_sagas.TryGetValue(sagaId, out obj)) { obj = Activator.CreateInstance(sagaDetails.SagaType, new object[] { sagaId }); _sagas[sagaId] = obj; } var saga = (TSaga)obj; await updateSaga(saga, cancellationToken).ConfigureAwait(false); return(saga); } }
public Task <bool> HandleAsync(ISagaId sagaId, SagaDetails sagaDetails, Exception exception, CancellationToken cancellationToken) { return(Task.FromResult(true)); }