public void CachingDataLoader_Recreate()
        {
            CsvDataLoader wrapped = new CsvDataLoader("C:\\path");

            // Create a caching data loader
            CachingDataLoader original = new CachingDataLoader(wrapped);

            // Clone the caching data loader
            CachingDataLoader recreated = new CachingDataLoader();
            ((IDataLoader)recreated).Argument = ((IDataLoader)original).Argument;

            // It should be exactly the same as the original
            Assert.AreEqual(
                original.WrappedDataLoader.GetType(),
                recreated.WrappedDataLoader.GetType());

            recreated.WrappedDataLoader.Should().BeOfType<CsvDataLoader>();

            // The wrapped data loader should be restored completely too
            CsvDataLoader recreatedWrapped = recreated.WrappedDataLoader as CsvDataLoader;

            Assert.IsNotNull(recreatedWrapped);
            Assert.AreEqual(wrapped.ContainerFolderPath, recreatedWrapped.ContainerFolderPath);
        }
 protected static DbConnection CreateConnection(string path = null)
 {
     var dataLoader = new CsvDataLoader(path ?? DefaultTestDataUri);
     var cachingLoader = new CachingDataLoader(dataLoader);
     return DbConnectionFactory.CreateTransient(cachingLoader);
 }