public ItemMatchPipelinePlumber( ISynchSourcesConfig <T1, T2, TId> sourceConfig, IList <ISynchronizationResolver <ItemMatch <T1, T2> > > synchronizationResolvers, Func <IEnumerable <T1>, IEnumerable <T2>, IEnumerable <ItemMatch <T1, T2> > > preprocessor) { _preprocessor = preprocessor; _resolutionStep = new ChangeResolutionStep <ItemMatch <T1, T2>, ISynchSourcesConfig <T1, T2, TId> >(synchronizationResolvers, sourceConfig); _dispatchStep = new ChangeDispatchingStep <ItemMatch <T1, T2> >(); }
public void SetUpTest() { _shouldResolve = false; _testSynchronizationResolver = new SynchronizationResolver <LocalTestResource, string>( "bogus config", (item, cfg) => _shouldResolve, (item, cfg) => { _isResolved = true; return(new SynchronizationResult(true)); }); var changeResolvers = new List <ISynchronizationResolver <LocalTestResource> > { _testSynchronizationResolver }; _resolutionStepUnderTest = new ChangeResolutionStep <LocalTestResource, string>( changeResolvers, "bogus config"); }
public void SetUpTest() { _shouldResolve = false; _testSynchronizationResolver = new SynchronizationResolver<LocalTestResource, string>( "bogus config", (item, cfg) => _shouldResolve, (item, cfg) => { _isResolved = true; return new SynchronizationResult(true); }); var changeResolvers = new List<ISynchronizationResolver<LocalTestResource>> { _testSynchronizationResolver }; _resolutionStepUnderTest = new ChangeResolutionStep<LocalTestResource, string>( changeResolvers, "bogus config"); }
public void ShouldWrapExceptionIntoChangeResolutionException() { var exception = new Exception("Whatever resolution error"); _testSynchronizationResolver = new SynchronizationResolver <LocalTestResource, string>( "bogus config", (item, cfg) => { throw exception; }, (item, cfg) => { _isResolved = true; return(new SynchronizationResult(true)); }); var changeResolvers = new List <ISynchronizationResolver <LocalTestResource> > { _testSynchronizationResolver }; _resolutionStepUnderTest = new ChangeResolutionStep <LocalTestResource, string>( changeResolvers, "bogus config"); var localTestResource = new LocalTestResource(1); try { _resolutionStepUnderTest.Resolve(localTestResource); Assert.Fail("Expecting ChangeResolutionException"); } catch (ChangeResolutionException ex) { Assert.AreEqual("Failed to resolve change for LocalTestResource - 1", ex.Message); Assert.AreEqual(exception, ex.InnerException); Assert.AreEqual(localTestResource, ex.Item); } }
public OneWayPullChannel( [NotNull] IChannelConfiguration <T1, T2, TId, TSynch> channelConfig, [NotNull] Func <Task <IEnumerable <T1> > > t1DataSource, [NotNull] Func <Task <IEnumerable <T2> > > t2DataSource) { if (channelConfig == null) { throw new ArgumentNullException(nameof(channelConfig)); } if (t1DataSource == null) { throw new ArgumentNullException(nameof(t1DataSource)); } if (t2DataSource == null) { throw new ArgumentNullException(nameof(t2DataSource)); } _channelConfig = channelConfig; _t1DataSource = t1DataSource; _t2DataSource = t2DataSource; _resolutionStep = new ChangeResolutionStep <TSynch, IChannelConfiguration <T1, T2, TId, TSynch> >(channelConfig.SynchronizationResolvers.ToList(), channelConfig); }
public void ShouldWrapExceptionIntoChangeResolutionException() { var exception = new Exception("Whatever resolution error"); _testSynchronizationResolver = new SynchronizationResolver<LocalTestResource, string>( "bogus config", (item, cfg) => { throw exception; }, (item, cfg) => { _isResolved = true; return new SynchronizationResult(true); }); var changeResolvers = new List<ISynchronizationResolver<LocalTestResource>> { _testSynchronizationResolver }; _resolutionStepUnderTest = new ChangeResolutionStep<LocalTestResource, string>( changeResolvers, "bogus config"); var localTestResource = new LocalTestResource(1); try { _resolutionStepUnderTest.Resolve(localTestResource); Assert.Fail("Expecting ChangeResolutionException"); } catch(ChangeResolutionException ex) { Assert.AreEqual("Failed to resolve change for LocalTestResource - 1", ex.Message); Assert.AreEqual(exception, ex.InnerException); Assert.AreEqual(localTestResource, ex.Item); } }