Ejemplo n.º 1
0
        public async Task WithTryOnceSynchronizationStrategyExecuteOnceIfFails()
        {
            // Arrange
            SynchronizationStrategy = SchemaSynchronizationStrategy.TryOnce;
            DatabaseDriver.CreateConnection(ConnectionString)
            .Returns(
                x => throw new ApplicationException(),
                x => throw new ApplicationException(),
                x => DbConnection);

            var target = GetTarget();

            // Act
            try
            {
                await target.SynchronizeSchemaAsync(ConnectionString, DatabaseDriver, CancellationToken);
            }
            catch (ApplicationException) { }
            await target.SynchronizeSchemaAsync(ConnectionString, DatabaseDriver, CancellationToken);

            await target.SynchronizeSchemaAsync(ConnectionString, DatabaseDriver, CancellationToken);

            // Assert
            DatabaseDriver.Received(1).CreateConnection(ConnectionString);
        }
Ejemplo n.º 2
0
        protected async Task <DbConnection> GetConnectionAsync(CancellationToken cancellationToken)
        {
            await Table.SynchronizeSchemaAsync(ConnectionString, DatabaseDriver, cancellationToken).ConfigureAwait(false);

            var connection = DatabaseDriver.CreateConnection(ConnectionString);
            await connection.OpenAsync(cancellationToken).ConfigureAwait(false);

            return(connection);
        }
Ejemplo n.º 3
0
 public void DropTable(string schemaName, string tableName)
 {
     using (var connection = DatabaseDriver.CreateConnection(ConnectionString))
     {
         connection.Open();
         using (var command = connection.CreateCommand())
         {
             command.CommandText = $"DROP TABLE IF EXISTS {DatabaseDriver.ParseIdentifier(schemaName ?? DatabaseDriver.DefaultSchema)}.{DatabaseDriver.ParseIdentifier(tableName)}";
             command.ExecuteNonQuery();
         }
         connection.Close();
     }
 }
Ejemplo n.º 4
0
 public TableFacts()
 {
     Schema          = "my";
     Name            = "Items";
     KeyColumnsNames = new[] { "Id" };
     Columns         = new Dictionary <string, SqlType>()
     {
         { "Id", new SqlType(DbType.Guid) },
         { "Name", new SqlType(DbType.String, 250) },
     };
     SynchronizationStrategy = SchemaSynchronizationStrategy.UntilSuccess;
     ConnectionString        = "db=fake;user=a;pass=b";
     DatabaseDriver          = Substitute.For <IDatabaseDriver>();
     DbConnection            = Substitute.For <DbConnection>();
     DbCommand    = Substitute.For <DbCommand>();
     DbDataReader = Substitute.For <DbDataReader>();
     DatabaseDriver.CreateConnection(ConnectionString).Returns(DbConnection);
     DatabaseDriver.GetSqlStatementTemplate(Arg.Any <SqlStatement>()).Returns("");
     DbConnection.CreateCommand().Returns(DbCommand);
     DbCommand.ExecuteScalarAsync(Arg.Any <CancellationToken>()).Returns(true);
     DbCommand.ExecuteReaderAsync(Arg.Any <CancellationToken>()).Returns(DbDataReader);
 }