public async Task TransferAsync_TestDataAdapter_DataTransferContextPassed() { const string SourceAdapterName = "TestSource"; const string SinkAdapterName = "TestSink"; var sourceMock = new Mock <IDataSourceAdapter>(); sourceMock .Setup(m => m.ReadNextAsync(It.IsAny <ReadOutputByRef>(), It.IsAny <CancellationToken>())) .Returns(Task.FromResult <IDataItem>(null)); var sinkMock = new Mock <IDataSinkAdapter>(); sinkMock .Setup(m => m.WriteAsync(It.IsAny <IDataItem>(), It.IsAny <CancellationToken>())) .Returns(TaskHelper.NoOp); var sourceFactoryMock = new Mock <IDataSourceAdapterFactoryAdapter>(); sourceFactoryMock .Setup(m => m.CreateAsync(It.IsAny <object>(), It.IsAny <IDataTransferContext>(), It.IsAny <CancellationToken>())) .Callback <object, IDataTransferContext, CancellationToken>((a, c, ct) => Assert.AreEqual(SourceAdapterName, c.SourceName, TestResources.InvalidDataSourceNameInTransferContext)) .Returns(Task.FromResult(sourceMock.Object)); var sinkFactoryMock = new Mock <IDataSinkAdapterFactoryAdapter>(); sinkFactoryMock .Setup(m => m.CreateAsync(It.IsAny <object>(), It.IsAny <IDataTransferContext>(), It.IsAny <CancellationToken>())) .Callback <object, IDataTransferContext, CancellationToken>((a, c, ct) => Assert.AreEqual(SinkAdapterName, c.SinkName, TestResources.InvalidDataSinkNameInTransferContext)) .Returns(Task.FromResult(sinkMock.Object)); var service = new DataTransferService( new Dictionary <string, IDataSourceAdapterFactoryAdapter> { { SourceAdapterName, sourceFactoryMock.Object } }, new Dictionary <string, IDataSinkAdapterFactoryAdapter> { { SinkAdapterName, sinkFactoryMock.Object } }, Mocks.Of <IDataTransferAction>() .Where(a => a.ExecuteAsync( It.IsAny <IDataSourceAdapter>(), It.IsAny <IDataSinkAdapter>(), It.IsAny <ITransferStatistics>(), It.IsAny <CancellationToken>()) == Task.FromResult <object>(null)) .First() ); await service.TransferAsync( SourceAdapterName, null, SinkAdapterName, null, new DummyTransferStatisticsMock(), CancellationToken.None); }
public async Task TransferAsync_TestDataAdapters_DisposeCalled() { const string SourceAdapterName = "TestSource"; const string SinkAdapterName = "TestSink"; var sourceMock = new Mock <IDataSourceAdapter>(); sourceMock .Setup(m => m.ReadNextAsync(It.IsAny <ReadOutputByRef>(), It.IsAny <CancellationToken>())) .Returns(Task.FromResult <IDataItem>(null)); sourceMock .Setup(m => m.Dispose()) .Verifiable(); var sinkMock = new Mock <IDataSinkAdapter>(); sinkMock .Setup(m => m.WriteAsync(It.IsAny <IDataItem>(), It.IsAny <CancellationToken>())) .Returns(TaskHelper.NoOp); sinkMock .Setup(m => m.Dispose()) .Verifiable(); var service = new DataTransferService( new Dictionary <string, IDataSourceAdapterFactoryAdapter> { { SourceAdapterName, Mocks.Of <IDataSourceAdapterFactoryAdapter>() .Where(m => m.CreateAsync(It.IsAny <object>(), It.IsAny <IDataTransferContext>(), It.IsAny <CancellationToken>()) == Task.FromResult(sourceMock.Object)).First() } }, new Dictionary <string, IDataSinkAdapterFactoryAdapter> { { SinkAdapterName, Mocks.Of <IDataSinkAdapterFactoryAdapter>() .Where(m => m.CreateAsync(It.IsAny <object>(), It.IsAny <IDataTransferContext>(), It.IsAny <CancellationToken>()) == Task.FromResult(sinkMock.Object)).First() } }, Mocks.Of <IDataTransferAction>() .Where(a => a.ExecuteAsync( It.IsAny <IDataSourceAdapter>(), It.IsAny <IDataSinkAdapter>(), It.IsAny <ITransferStatistics>(), It.IsAny <CancellationToken>()) == Task.FromResult <object>(null)) .First() ); await service.TransferAsync( SourceAdapterName, null, SinkAdapterName, null, new DummyTransferStatisticsMock(), CancellationToken.None); sourceMock.Verify(); sinkMock.Verify(); }