Ejemplo n.º 1
0
        public void AssignsValuesSuccessfully()
        {
            const string             commandText    = "select 1;";
            const int                timeout        = 45;
            const CommandType        commandType    = CommandType.StoredProcedure;
            const string             alias          = "alias";
            const CommandFlagSetting flag           = CommandFlagSetting.Pipelined;
            const IsolationLevel     isolationLevel = IsolationLevel.Chaos;
            const string             split          = "field";

            var result = new DatabaseCommandSetting(
                alias,
                commandText,
                commandType,
                timeout,
                split,
                flag,
                isolationLevel);

            Equal(commandText, result.CommandText);
            Equal(timeout, result.CommandTimeout);
            Equal(commandType, result.CommandType);
            Equal(alias, result.ConnectionAlias);
            Equal(flag, result.Flags);
            Equal(isolationLevel, result.IsolationLevel);
            Equal(split, result.Split);
        }
Ejemplo n.º 2
0
        [InlineData(0, IsolationLevel.Serializable)] // no value should default to serializable.
        public void AssignsIsolationLevelSuccessfully(int value, IsolationLevel expected)
        {
            const string alias       = "alias";
            const string commandText = "select 1;";

            var result         = new DatabaseCommandSetting(alias, commandText, isolationLevel: (IsolationLevel)value);
            var isolationLevel = (IsolationLevel)value;

            Equal(expected, result.IsolationLevel);
            Equal(value, (int)isolationLevel);
        }
Ejemplo n.º 3
0
        public void ProviderExceptionReturnedToCaller()
        {
            var providerMock = new Mock <DbProviderFactory>();

            providerMock.Setup(x => x.CreateConnection()).Throws(new NotImplementedException("Unit test"));
            var connector = new DatabaseConnector(_settings, () => providerMock.Object);
            var setting   = new DatabaseCommandSetting("test.alias", "select 1");
            var result    = Throws <NotImplementedException>(() => connector.CreateConnection(setting));

            Equal("Unit test", result.Message);
        }
 private CommandDefinition GetCommandDefinition(
     DatabaseCommandSetting setting,
     object parameters                   = null,
     IDbTransaction transaction          = null,
     CancellationToken cancellationToken = default(CancellationToken)) => new CommandDefinition(
     commandText: setting.CommandText,
     parameters: parameters,
     transaction: transaction,
     commandTimeout: setting.CommandTimeout,
     commandType: setting.CommandType,
     flags: (CommandFlags)setting.Flags,
     cancellationToken: cancellationToken);
Ejemplo n.º 5
0
        public void NoAliasedConnectionThrowsNullReferenceException()
        {
            var providerMock = new Mock <DbProviderFactory>();
            var connector    = new DatabaseConnector(_settings, () => providerMock.Object);
            var setting      = new DatabaseCommandSetting("Does.Not.Exist", "test");

            var result = Throws <NullReferenceException>(() => connector.CreateConnection(setting));

            Equal(
                $"There is no connection with the alias '{setting.ConnectionAlias}' in the settings. Please check settings.",
                result.Message);
        }
Ejemplo n.º 6
0
        public void Successfully()
        {
            var connectionMock = new Mock <DbConnection>();
            var providerMock   = new Mock <DbProviderFactory>();

            providerMock.Setup(x => x.CreateConnection()).Returns(() => connectionMock.Object);
            var connector = new DatabaseConnector(_settings, () => providerMock.Object);
            var setting   = new DatabaseCommandSetting("test.alias", "select 1");
            var result    = connector.CreateConnection(setting);

            NotNull(result);
            Equal(System.Data.ConnectionState.Closed, result.State);
        }
Ejemplo n.º 7
0
        public void ProviderReturnsNullConnectionThrowsNullReferenceException()
        {
            var providerMock = new Mock <DbProviderFactory>();

            providerMock.Setup(x => x.CreateConnection()).Returns(() => null);
            var connector = new DatabaseConnector(_settings, () => providerMock.Object);
            var setting   = new DatabaseCommandSetting("test.alias", "select 1");
            var result    = Throws <NullReferenceException>(() => connector.CreateConnection(setting));

            Equal(
                $"The provider predicate did not return a connection for the aliased connection '{setting.ConnectionAlias}'.",
                result.Message);
        }
Ejemplo n.º 8
0
        public void ReturnsDefaults()
        {
            const string alias       = "alias";
            const string commandText = "select 1;";

            var result = new DatabaseCommandSetting(alias, commandText);

            Equal(commandText, result.CommandText);
            Equal(30, result.CommandTimeout);
            Equal(CommandType.Text, result.CommandType);
            Equal(alias, result.ConnectionAlias);
            Equal(CommandFlagSetting.None, result.Flags);
            Equal(IsolationLevel.Serializable, result.IsolationLevel);
            Equal("Id", result.Split);
        }
        public virtual IDbConnection CreateConnection(DatabaseCommandSetting commandSetting)
        {
            // pre-conditions.
            Require <ArgumentNullException>(commandSetting != null, nameof(commandSetting));

            // get the connection string setting from the root connections.
            var connectionStringSetting =
                _settings.Connections.SingleOrDefault(x => x.Alias == commandSetting.ConnectionAlias);

            Require <NullReferenceException>(connectionStringSetting != null, Messages.NoAliasedConnection,
                                             commandSetting.ConnectionAlias);

            // invoke the provider predicate to return a connection.
            var connection = _providerPredicate.Invoke().CreateConnection();

            Require <NullReferenceException>(connection != null, Messages.NoConnectionCreated,
                                             commandSetting.ConnectionAlias);

            // assign the connection and return
            connection.ConnectionString = connectionStringSetting.ConnectionString;
            return(connection);
        }