public void ShouldNotSetDataStorageIfNoIRequireDataStorageProviderFound()
    {
      // arrange
      var database = Database.GetDatabase("master");
      var provider = Substitute.For<DataProvider>();
      typeof(Database).GetField("_dataProviders", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(database, new DataProviderCollection { provider });

      var dataStorage = Substitute.For<DataStorage>(database);

      var args = new InitDbArgs(database, dataStorage);
      var processor = new InitDataProviders();

      // act
      Action action = () => processor.Process(args);

      // assert
      action.ShouldNotThrow();
    }
    public void ShouldSetDataStorageForIRequireDataStorageProviders()
    {
      // arrange
      var database = Database.GetDatabase("master");
      var provider = Substitute.For<DataProvider, IRequireDataStorage>();
      typeof(Database).GetField("_dataProviders", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(database, new DataProviderCollection { provider });

      var dataStorage = Substitute.For<DataStorage>(database);

      var args = new InitDbArgs(database, dataStorage);
      var processor = new InitDataProviders();

      // act
      processor.Process(args);

      // assert
      ((IRequireDataStorage)provider).Received().SetDataStorage(dataStorage);
    }