public void Existing_connection_can_be_opened_and_closed_externally() { var dbConnection = new FakeDbConnection( "Database=FrodoLives", state: ConnectionState.Closed); using (var connection = new FakeRelationalConnection( CreateOptions(new FakeRelationalOptionsExtension { Connection = dbConnection }))) { Assert.Equal(0, connection.DbConnections.Count); connection.Open(); Assert.Equal(0, connection.DbConnections.Count); Assert.Equal(1, dbConnection.OpenCount); connection.Close(); Assert.Equal(1, dbConnection.OpenCount); Assert.Equal(1, dbConnection.CloseCount); dbConnection.SetState(ConnectionState.Open); connection.Open(); Assert.Equal(1, dbConnection.OpenCount); Assert.Equal(1, dbConnection.CloseCount); connection.Close(); Assert.Equal(1, dbConnection.OpenCount); Assert.Equal(1, dbConnection.CloseCount); dbConnection.SetState(ConnectionState.Closed); connection.Open(); Assert.Equal(2, dbConnection.OpenCount); Assert.Equal(1, dbConnection.CloseCount); connection.Close(); Assert.Equal(2, dbConnection.OpenCount); Assert.Equal(2, dbConnection.CloseCount); } }
public void Throws_when_rollback_is_called_without_active_transaction() { using (var connection = new FakeRelationalConnection( CreateOptions(new FakeRelationalOptionsExtension { ConnectionString = "Database=FrodoLives" }))) { Assert.Equal(0, connection.DbConnections.Count); Assert.Equal( RelationalStrings.NoActiveTransaction, Assert.Throws <InvalidOperationException>( () => connection.RollbackTransaction()).Message); } }
public void Can_create_new_connection_lazily_using_given_connection_string() { using (var connection = new FakeRelationalConnection( CreateOptions(new FakeRelationalOptionsExtension { ConnectionString = "Database=FrodoLives" }))) { Assert.Equal(0, connection.DbConnections.Count); var dbConnection = connection.DbConnection; Assert.Equal(1, connection.DbConnections.Count); Assert.Equal("Database=FrodoLives", dbConnection.ConnectionString); } }
public FakeDataStore( StateManager stateManager, DbContextService <IModel> model, EntityKeyFactorySource entityKeyFactorySource, EntityMaterializerSource entityMaterializerSource, ClrCollectionAccessorSource collectionAccessorSource, ClrPropertySetterSource propertySetterSource, FakeRelationalConnection connection, FakeCommandBatchPreparer batchPreparer, BatchExecutor batchExecutor, ILoggerFactory loggerFactory) : base(stateManager, model, entityKeyFactorySource, entityMaterializerSource, collectionAccessorSource, propertySetterSource, connection, batchPreparer, batchExecutor, loggerFactory) { }
public void Can_create_new_connection_from_exsting_DbConnection() { var dbConnection = new FakeDbConnection("Database=FrodoLives"); using (var connection = new FakeRelationalConnection( CreateOptions(new FakeRelationalOptionsExtension { Connection = dbConnection }))) { Assert.Equal(0, connection.DbConnections.Count); Assert.Same(dbConnection, connection.DbConnection); Assert.Equal(0, connection.DbConnections.Count); } }
public void Can_use_existing_transaction() { var dbConnection = new FakeDbConnection("Database=FrodoLives"); var dbTransaction = dbConnection.BeginTransaction(IsolationLevel.Unspecified); using (var connection = new FakeRelationalConnection( CreateOptions(new FakeRelationalOptionsExtension { Connection = dbConnection }))) { using (connection.UseTransaction(dbTransaction)) { Assert.Equal(dbTransaction, connection.CurrentTransaction.GetDbTransaction()); } } }
public FakeDataStoreServices( FakeDataStore store, RecordingDataStoreCreator creator, FakeRelationalConnection connection, FakeValueGeneratorCache valueGeneratorCache, FakeDatabase database, ModelBuilderFactory modelBuilderFactory, TestMigrator migrator) { _store = store; _creator = creator; _connection = connection; _valueGeneratorCache = valueGeneratorCache; _database = database; _modelBuilderFactory = modelBuilderFactory; _migrator = migrator; }
public void Existing_connection_can_start_in_opened_state() { var dbConnection = new FakeDbConnection( "Database=FrodoLives", state: ConnectionState.Open); using (var connection = new FakeRelationalConnection( CreateOptions(new FakeRelationalOptionsExtension { Connection = dbConnection }))) { Assert.Equal(0, connection.DbConnections.Count); connection.Open(); Assert.Equal(0, connection.DbConnections.Count); Assert.Equal(0, dbConnection.OpenCount); connection.Open(); connection.Open(); Assert.Equal(0, dbConnection.OpenCount); connection.Close(); connection.Close(); Assert.Equal(0, dbConnection.OpenCount); Assert.Equal(0, dbConnection.CloseCount); connection.Close(); Assert.Equal(0, dbConnection.OpenCount); Assert.Equal(0, dbConnection.CloseCount); connection.Open(); Assert.Equal(0, dbConnection.OpenCount); connection.Close(); Assert.Equal(0, dbConnection.OpenCount); Assert.Equal(0, dbConnection.CloseCount); } }
public async Task Lazy_connection_is_async_opened_and_closed_when_necessary() { using (var connection = new FakeRelationalConnection( CreateOptions(new FakeRelationalOptionsExtension { ConnectionString = "Database=FrodoLives" }))) { Assert.Equal(0, connection.DbConnections.Count); var cancellationToken = new CancellationTokenSource().Token; await connection.OpenAsync(cancellationToken); Assert.Equal(1, connection.DbConnections.Count); var dbConnection = connection.DbConnections[0]; Assert.Equal(1, dbConnection.OpenAsyncCount); await connection.OpenAsync(cancellationToken); await connection.OpenAsync(cancellationToken); Assert.Equal(1, dbConnection.OpenAsyncCount); connection.Close(); connection.Close(); Assert.Equal(1, dbConnection.OpenAsyncCount); Assert.Equal(0, dbConnection.CloseCount); connection.Close(); Assert.Equal(1, dbConnection.OpenAsyncCount); Assert.Equal(1, dbConnection.CloseCount); await connection.OpenAsync(cancellationToken); Assert.Equal(2, dbConnection.OpenAsyncCount); connection.Close(); Assert.Equal(2, dbConnection.OpenAsyncCount); Assert.Equal(2, dbConnection.CloseCount); } }
public void Existing_connection_is_opened_and_closed_when_necessary() { var dbConnection = new FakeDbConnection("Database=FrodoLives"); using (var connection = new FakeRelationalConnection( CreateOptions(new FakeRelationalOptionsExtension { Connection = dbConnection }))) { Assert.Equal(0, connection.DbConnections.Count); connection.Open(); Assert.Equal(0, connection.DbConnections.Count); Assert.Equal(1, dbConnection.OpenCount); connection.Open(); connection.Open(); Assert.Equal(1, dbConnection.OpenCount); connection.Close(); connection.Close(); Assert.Equal(1, dbConnection.OpenCount); Assert.Equal(0, dbConnection.CloseCount); connection.Close(); Assert.Equal(1, dbConnection.OpenCount); Assert.Equal(1, dbConnection.CloseCount); connection.Open(); Assert.Equal(2, dbConnection.OpenCount); connection.Close(); Assert.Equal(2, dbConnection.OpenCount); Assert.Equal(2, dbConnection.CloseCount); } }
public void Lazy_connection_is_opened_and_closed_when_necessary() { using (var connection = new FakeRelationalConnection( CreateOptions(new FakeRelationalOptionsExtension { ConnectionString = "Database=FrodoLives" }))) { Assert.Equal(0, connection.DbConnections.Count); connection.Open(); Assert.Equal(1, connection.DbConnections.Count); var dbConnection = connection.DbConnections[0]; Assert.Equal(1, dbConnection.OpenCount); connection.Open(); connection.Open(); Assert.Equal(1, dbConnection.OpenCount); connection.Close(); connection.Close(); Assert.Equal(1, dbConnection.OpenCount); Assert.Equal(0, dbConnection.CloseCount); connection.Close(); Assert.Equal(1, dbConnection.OpenCount); Assert.Equal(1, dbConnection.CloseCount); connection.Open(); Assert.Equal(2, dbConnection.OpenCount); connection.Close(); Assert.Equal(2, dbConnection.OpenCount); Assert.Equal(2, dbConnection.CloseCount); } }
public void Lazy_connection_is_recreated_if_used_again_after_being_disposed() { var connection = new FakeRelationalConnection( CreateOptions(new FakeRelationalOptionsExtension { ConnectionString = "Database=FrodoLives" })); Assert.Equal(0, connection.DbConnections.Count); var dbConnection = (FakeDbConnection)connection.DbConnection; Assert.Equal(1, connection.DbConnections.Count); connection.Open(); #if NET451 || DNX451 // On CoreCLR, DbConnection.Dispose() calls DbConnection.Close() connection.Close(); #endif connection.Dispose(); Assert.Equal(1, dbConnection.OpenCount); Assert.Equal(1, dbConnection.CloseCount); Assert.Equal(1, dbConnection.DisposeCount); Assert.Equal(1, connection.DbConnections.Count); dbConnection = (FakeDbConnection)connection.DbConnection; Assert.Equal(2, connection.DbConnections.Count); connection.Open(); #if NET451 || DNX451 connection.Close(); #endif connection.Dispose(); Assert.Equal(1, dbConnection.OpenCount); Assert.Equal(1, dbConnection.CloseCount); Assert.Equal(1, dbConnection.DisposeCount); }
public async Task Transaction_can_begin_with_isolation_level_async() { using (var connection = new FakeRelationalConnection( CreateOptions(new FakeRelationalOptionsExtension { ConnectionString = "Database=FrodoLives" }))) { Assert.Equal(0, connection.DbConnections.Count); using (var transaction = await connection.BeginTransactionAsync(IsolationLevel.Chaos)) { Assert.Equal(1, connection.DbConnections.Count); var dbConnection = connection.DbConnections[0]; Assert.Equal(1, dbConnection.DbTransactions.Count); var dbTransaction = dbConnection.DbTransactions[0]; Assert.Equal(IsolationLevel.Chaos, dbTransaction.IsolationLevel); } } }
public TestMigrator( HistoryRepository historyRepository, MigrationAssembly migrationAssembly, FakeModelDiffer modelDiffer, FakeMigrationOperationSqlGeneratorFactory ddlSqlGeneratorFactory, FakeSqlGenerator dmlSqlGenerator, SqlStatementExecutor sqlExecutor, RecordingDataStoreCreator storeCreator, FakeRelationalConnection connection, ILoggerFactory loggerFactory) : base( historyRepository, migrationAssembly, modelDiffer, ddlSqlGeneratorFactory, dmlSqlGenerator, sqlExecutor, storeCreator, connection, loggerFactory) { }
public void Rollback_calls_rollback_on_DbTransaction() { using (var connection = new FakeRelationalConnection( CreateOptions(new FakeRelationalOptionsExtension { ConnectionString = "Database=FrodoLives" }))) { Assert.Equal(0, connection.DbConnections.Count); using (var transaction = connection.BeginTransaction()) { Assert.Equal(1, connection.DbConnections.Count); var dbConnection = connection.DbConnections[0]; Assert.Equal(1, dbConnection.DbTransactions.Count); var dbTransaction = dbConnection.DbTransactions[0]; connection.RollbackTransaction(); Assert.Equal(1, dbTransaction.RollbackCount); } } }
public void Current_transaction_is_disposed_when_connection_is_disposed() { var connection = new FakeRelationalConnection( CreateOptions( new FakeRelationalOptionsExtension { ConnectionString = "Database=FrodoLives" })); Assert.Equal(0, connection.DbConnections.Count); var transaction = connection.BeginTransaction(); Assert.Equal(1, connection.DbConnections.Count); var dbConnection = connection.DbConnections[0]; Assert.Equal(1, dbConnection.DbTransactions.Count); var dbTransaction = dbConnection.DbTransactions[0]; connection.Dispose(); Assert.Equal(1, dbTransaction.DisposeCount); Assert.Null(connection.CurrentTransaction); }