Ejemplo n.º 1
0
        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);
                }
            }
Ejemplo n.º 3
0
 public Task <bool> HandleAsync(ISagaId sagaId, SagaDetails sagaDetails, Exception exception,
                                CancellationToken cancellationToken)
 {
     return(Task.FromResult(true));
 }