public void ExtractParameter_ShouldMapSpecifiedParameterEnumerableToIDbDataParameter()
        {
            //ARRANGE
            var specifiedParameter1 = new SpecifiedParameter("testName", "testValue", DbType.String,
                                                             ParameterDirection.InputOutput, 3, 4, 5);

            var specifiedParameter2 = new SpecifiedParameter("testName", 5436543, DbType.Int32,
                                                             ParameterDirection.Output, 13, 14, 15);

            var specifiedParameters = new[] { specifiedParameter1, specifiedParameter2 };

            var context = CreateContext(specifiedParameters);

            var dataParameters = new List <IDbDataParameter>();

            CommandParametersFake.CallsTo(x => x.Add(A <object> ._))
            .Invokes((object parameter) => dataParameters.Add((IDbDataParameter)parameter));

            //ACT
            _parameterExtractor.ExtractParameter(context);

            //ASSERT
            Assert.AreEqual(2, dataParameters.Count);
            AssertSpecifiedParameterWithDbDataParameter(specifiedParameter1, dataParameters[0]);
            AssertSpecifiedParameterWithDbDataParameter(specifiedParameter2, dataParameters[1]);
        }
        public void SetParameter_ShouldThrowArgumentNullException_WhenValueIsNull()
        {
            //ARRANGE
            const string parameterName = "testParameterName";
            var          parameter     = new SpecifiedParameter(parameterName);

            //ASSERT
            Assert.Throws <ArgumentNullException>(() => parameter.SetParameter(null));
        }
        private bool AssertSpecifiedParameterWithDbDataParameter(SpecifiedParameter specifiedParameter,
                                                                 IDbDataParameter dataParameter)
        {
            Assert.AreEqual(specifiedParameter.ParameterName, dataParameter.ParameterName);
            Assert.AreEqual(specifiedParameter.Value, dataParameter.Value);
            Assert.AreEqual(specifiedParameter.DbType.Value, dataParameter.DbType);
            Assert.AreEqual(specifiedParameter.Direction.Value, dataParameter.Direction);
            Assert.AreEqual(specifiedParameter.Precision.Value, dataParameter.Precision);
            Assert.AreEqual(specifiedParameter.Scale.Value, dataParameter.Scale);
            Assert.AreEqual(specifiedParameter.Size.Value, dataParameter.Size);

            return(true);
        }
        public void Constructor_ShouldInitializeWithDefaultValues()
        {
            //ARRANGE
            const string             parameterName = "testParameterName";
            const ParameterDirection direction     = ParameterDirection.Input;

            //ACT
            var parameter = new SpecifiedParameter(parameterName);

            //ASSERT
            Assert.AreEqual(parameterName, parameter.ParameterName);
            Assert.IsNull(parameter.Value);
            Assert.IsNull(parameter.DbType);
            Assert.AreEqual(direction, parameter.Direction);
            Assert.IsNull(parameter.Precision);
            Assert.IsNull(parameter.Scale);
            Assert.IsNull(parameter.Size);
        }
        public void GetValueFromOutputParameter()
        {
            //ARRANGE
            const string text          = "testText";
            const string duplicateText = "testTexttestText";
            const string queryText     = "exec dbo.spDuplicateString @text out";

            var parameter = new SpecifiedParameter("@text", text, direction: ParameterDirection.InputOutput, size: 128);

            var query = _queryFactory.CreateQuery();

            //ACT
            query.Execute(queryText, parameter);

            //ASSERT
            Assert.AreEqual(duplicateText, parameter.GetOutputValue <string>());

            query.Dispose();
        }
        public void GetOutputValue_ShouldReturnValueFromDataParameter()
        {
            //ARRANGE
            const string parameterName = "testParameterName";
            var          parameter     = new SpecifiedParameter(parameterName);

            const int        value         = 5;
            IDbDataParameter dataParameter = A.Fake <IDbDataParameter>();

            dataParameter.CallsTo(x => x.Value)
            .Returns(value);

            //ACT
            parameter.SetParameter(dataParameter);
            var valueFromParameter = parameter.GetOutputValue <int>();

            //ASSERT
            Assert.AreEqual(value, valueFromParameter);
            dataParameter.CallsTo(x => x.Value)
            .MustHaveHappened(Repeated.Exactly.Once);
        }
        public void Constructor_ShouldInitializeWithSpecifiedValues()
        {
            //ARRANGE
            const string             parameterName = "testParameterName";
            const int                value         = 4;
            const DbType             dbType        = DbType.Date;
            const ParameterDirection direction     = ParameterDirection.Input;
            const byte               precision     = 4;
            const byte               scale         = 8;
            const int                size          = 3;

            //ACT
            var parameter = new SpecifiedParameter(parameterName, value, dbType, direction, precision, scale, size);

            //ASSERT
            Assert.AreEqual(parameterName, parameter.ParameterName);
            Assert.AreEqual(value, parameter.Value);
            Assert.AreEqual(dbType, parameter.DbType);
            Assert.AreEqual(direction, parameter.Direction);
            Assert.AreEqual(precision, parameter.Precision);
            Assert.AreEqual(scale, parameter.Scale);
            Assert.AreEqual(size, parameter.Size);
        }
Ejemplo n.º 8
0
        private void AddParameter(Context.Infrastructure.AdoExecutorContext context, SpecifiedParameter parameter)
        {
            IDbDataParameter dataParameter = context.Configuration.DataObjectFactory.CreateDataParameter();

            dataParameter.ParameterName = parameter.ParameterName;
            dataParameter.Value         = parameter.Value ?? DBNull.Value;

            if (parameter.DbType.HasValue)
            {
                dataParameter.DbType = parameter.DbType.Value;
            }

            if (parameter.Direction.HasValue)
            {
                dataParameter.Direction = parameter.Direction.Value;
            }

            if (parameter.Precision.HasValue)
            {
                dataParameter.Precision = parameter.Precision.Value;
            }

            if (parameter.Scale.HasValue)
            {
                dataParameter.Scale = parameter.Scale.Value;
            }

            if (parameter.Size.HasValue)
            {
                dataParameter.Size = parameter.Size.Value;
            }

            parameter.SetParameter(dataParameter);

            context.Command.Parameters.Add(dataParameter);
        }