public void ShouldThrowIfTreeRetryFails()
        {
            var retryer = new DeserializeFailureRetryer();
            var item = new FakeItem();
            var exception = new Exception();

            retryer.AddTreeRetry(item, exception);

            Action<IItemData> callback = delegate (IItemData x) { throw new Exception(); };

            Assert.Throws<DeserializationAggregateException>(() => retryer.RetryAll(Substitute.For<ISourceDataStore>(), callback, callback));
        }
        public void ShouldRetrieveTreeRetry()
        {
            var retryer = new DeserializeFailureRetryer();
            var item = new FakeItem();
            var exception = new Exception();
            retryer.AddTreeRetry(item, exception);

            var callback = Substitute.For<Action<IItemData>>();

            retryer.RetryAll(Substitute.For<ISourceDataStore>(), callback, callback);

            callback.Received()(item);
        }