public void DbResultToSampleObjectAllowMissing()
        {
            const string mandatoryField         = "Mandatory";
            const int    expectedMandatoryValue = 890;

            {
                DataTable dt = DatasetGenerator.CreateNewBasicDataTable(
                    new string[] { mandatoryField },
                    new Type[] { typeof(int) });

                using (IDataReader dr = DatasetGenerator.CreateBasicDataReader(dt, expectedMandatoryValue))
                {
                    dr.Read();

                    SampleObject obj = new SampleObject();

                    DbAutoFillHelper.FillObjectFromDataReader(dr, obj);

                    Assert.AreEqual(expectedMandatoryValue, obj.Mandatory);
                }
            }

            {
                DataTable dt = DatasetGenerator.CreateNewBasicDataTable(new string[] { }, new Type[] { });

                using (IDataReader dr = DatasetGenerator.CreateBasicDataReader(dt, new object[] { }))
                {
                    dr.Read();
                    SampleObject obj = new SampleObject();

                    Assert.ThrowsException <MissingFieldException>(() => { DbAutoFillHelper.FillObjectFromDataReader(dr, obj); });
                }
            }
        }
        public void DbParametersFromComplexObject()
        {
            const string expectedNameInName       = "p_NameIN_IN";
            const string expectedToDbUuidName     = "p_ToDbUuid";
            const string expectedNameINValue      = "ComplexObject";
            const string expectedAliasedFieldName = "p_ALittleTest";
            const int    expectedToDbUuidValue    = 5;

            ComplexObject obj = new ComplexObject
            {
                NameIN   = expectedNameINValue,
                ToDbUuid = expectedToDbUuidValue,
                FromDbId = 66,
                Aliased  = true
            };

            DbAutoFillHelper.FillDbParametersFromObject(command, obj);

            Assert.AreEqual(expectedNameInName, command.Parameters[expectedNameInName].ParameterName);
            Assert.AreEqual(expectedNameINValue, command.Parameters[expectedNameInName].Value);
            Assert.AreEqual(expectedToDbUuidName, command.Parameters[expectedToDbUuidName].ParameterName);
            Assert.AreEqual(expectedToDbUuidValue, command.Parameters[expectedToDbUuidName].Value);
            Assert.AreEqual(expectedAliasedFieldName, command.Parameters[expectedAliasedFieldName].ParameterName);
            Assert.ThrowsException <IndexOutOfRangeException>(() => { string n = command.Parameters["FromDbId"].ParameterName; });
            Assert.ThrowsException <IndexOutOfRangeException>(() => { string n = command.Parameters["Unsettable"].ParameterName; });
        }
예제 #3
0
        public void SetParametersFromObject_StructuredGood_Null_Test()
        {
            DbAutoFillHelper.AddParametersFromObjectMembers(_command, _dvco);

            Assert.AreEqual(_command.Parameters.Count, 1);
            Assert.IsTrue(((INullable)_command.Parameters[OBJECT_MYSTRUCTUREDFIELD_NAME].SqlValue).IsNull);
        }
예제 #4
0
        public void Advanced_SetParametersFromObject_ParametersSuffix_OnProperty_Test()
        {
            AdvancedAutoFillClass aafc = new AdvancedAutoFillClass();

            DbAutoFillHelper.AddParametersFromObjectMembers(_command, aafc);

            Assert.IsTrue(_command.Parameters.Contains(ADVANCED_PARAMETER_SUFFIX_PARAM_NAME));
        }
예제 #5
0
        public void Advanced_SetParametersFromObject_ParametersSuffix_OnClass_Test()
        {
            ClassWithSuffix cws = new ClassWithSuffix();

            DbAutoFillHelper.AddParametersFromObjectMembers(_command, cws);

            Assert.IsTrue(_command.Parameters.Contains(ADVANCED_PARAMETER_SUFFIX_PARAM_NAME));
        }
예제 #6
0
        public void SetParametersFromObject_GoodValues_Test()
        {
            DbAutoFillHelper.AddParametersFromObjectMembers(_command, _dvco);

            Assert.AreEqual(_command.Parameters[DEFAULT_PARAMETER1_NAME].Value, DEFAULT_PARAMETER_1_VALUE);
            Assert.AreEqual(_command.Parameters[DEFAULT_PARAMETER2_NAME].Value, DEFAULT_PARAMETER_2_VALUE);
            Assert.AreEqual(_command.Parameters[DEFAULT_ToDB_PARAMETER_NAME].Value, DEFAULT_ToDBPARAMETER_VALUE);
        }
예제 #7
0
        public void GetDbAnonymousValue_Test()
        {
            DbAnonymousValue <int> value = new DbAnonymousValue <int>();

            DbAutoFillHelper.FillObjectFromDataReader(value, _dataReader);

            Assert.AreEqual(value.GetValue(), ANONYMOUS_SET_VALUE);
        }
예제 #8
0
        public void SetParameters_NamedDbAnonymousValue_Test()
        {
            DbAnonymousValue <int> val = new DbAnonymousValue <int>(ANONYMOUS_VALUE_ALIAS, ANONYMOUS_SET_VALUE);

            DbAutoFillHelper.AddParameterWithValue(_command, val);

            Assert.IsTrue(_command.Parameters.Contains(ANONYMOUS_VALUE_ALIAS));
            Assert.AreEqual(_command.Parameters[ANONYMOUS_VALUE_ALIAS].Value, ANONYMOUS_SET_VALUE);
        }
        public void AddConcreteAnonymousValue()
        {
            DbAnonymousValue <string> expected = new DbAnonymousValue <string>("ParameterName", "AString");

            DbAutoFillHelper.AddParameterWithValue(command, expected);

            Assert.AreEqual(expected.Alias, command.Parameters[0].ParameterName);
            Assert.AreEqual(expected.GetValue(), command.Parameters[0].Value);
        }
예제 #10
0
        public void Basic_SetParametersFromObject_PlainField_Test()
        {
            SecondObject so = new SecondObject();

            DbAutoFillHelper.AddParametersFromObjectMembers(_command, so);

            Assert.IsTrue(_command.Parameters.Contains(BASIC_PARAMETER_SECOND_OBJECT_NORMAL_FIELD));
            Assert.IsTrue(_command.Parameters[BASIC_PARAMETER_SECOND_OBJECT_NORMAL_FIELD].Value.Equals(BASIC_PARAMETER_SECOND_OBJECT_NORMAL_FIELD_VALUE));
        }
        public void AddAnonymousValue()
        {
            const string expectedAlias = "Integer";
            const int    expectedValue = 50;

            DbAutoFillHelper.AddParameterWithValue(command, expectedAlias, expectedValue, null);

            Assert.AreEqual(expectedAlias, command.Parameters[0].ParameterName);
            Assert.AreEqual(expectedValue, command.Parameters[0].Value);
        }
예제 #12
0
        public void SetParametersFromObject_GoodParameters_Test()
        {
            DbAutoFillHelper.AddParametersFromObjectMembers(_command, _dvco);

            Assert.IsTrue(_command.Parameters.Contains(DEFAULT_PARAMETER1_NAME));
            Assert.IsTrue(_command.Parameters.Contains(DEFAULT_PARAMETER2_NAME));
            Assert.IsFalse(_command.Parameters.Contains(DEFAULT_HIDDEN_PARAMETER_NAME));
            Assert.IsTrue(_command.Parameters.Contains(DEFAULT_ToDB_PARAMETER_NAME));
            Assert.IsFalse(_command.Parameters.Contains(DEFAULT_NONE_PARAMETER_NAME));
            Assert.IsFalse(_command.Parameters.Contains(DEFAULT_FROMDB_PARAMETER_NAME));
        }
예제 #13
0
        public void FillObjectFromDataReader_GoodValues_Test()
        {
            _dvco = new DefaultValuesClassObject();

            DbAutoFillHelper.FillObjectFromDataReader(_dvco, _dataReader);

            Assert.AreEqual(_dvco.Parameter1, DATAREADER_PARAMETER_1_VALUE);
            Assert.AreEqual(_dvco.Parameter2, DATAREADER_PARAMETER_2_VALUE);
            Assert.AreEqual(_dvco.FromDBParameter, DATAREADER_FROMDBPARAMETER_VALUE);
            Assert.AreNotEqual(_dvco.NoneParameter, DATAREADER_NONEPARAMETER_VALUE);
            Assert.AreNotEqual(_dvco.ToDBParameter, DATAREADER_ToDBPARAMETER_VALUE);
        }
 private void ReadResultsToDbResponse <TObjects>(IDbCommand command, DbResponse <TObjects> response)
     where TObjects : new()
 {
     using (IDataReader reader = command.ExecuteReader())
     {
         while (reader.Read())
         {
             TObjects obj = new TObjects();
             DbAutoFillHelper.FillObjectFromDataReader(reader, obj);
             response.ResultSet.Add(obj);
         }
     }
 }
예제 #15
0
        public void Advanced_GetParametersFromDataReader_GoodValues_Test()
        {
            AdvancedAutoFillClass aafc   = new AdvancedAutoFillClass();
            IDataReader           reader = CreateAdvancedDataReader();

            reader.Read();
            DbAutoFillHelper.FillObjectFromDataReader(aafc, reader);

            Assert.AreEqual(aafc.AliasedParameter, ADVANCED_DATAREADER_ALIASED_VALUE);
            Assert.AreEqual(aafc.DbTypeParameter, ADVANCED_DATAREADER_DBTYPE_VALUE);
            Assert.AreEqual(aafc.DbTypeParameterDefault, ADVANCED_DATAREADER_DBTYPEDEFAULT_VALUE);
            Assert.AreEqual(aafc.ParameterPrefixOverride, ADVANCED_DATAREADER_PREFIX_VALUE);
        }
예제 #16
0
        public void Advanced_SetParametersFromObject_GoodParameters_Test()
        {
            AdvancedAutoFillClass aafc = new AdvancedAutoFillClass();

            DbAutoFillHelper.AddParametersFromObjectMembers(_command, aafc);

            Assert.IsTrue(_command.Parameters.Count > 0);
            Assert.IsTrue(_command.Parameters.Contains(ADVANCED_PARAMETER_ALIASED_PARAM_NAME));
            Assert.IsTrue(_command.Parameters.Contains(ADVANCED_PARAMETER_ALLOWED_MISSING_PARAM_NAME));
            Assert.IsTrue(_command.Parameters.Contains(ADVANCED_PARAMETER_DbTypeDTDefault_PARAM_NAME));
            Assert.IsTrue(_command.Parameters.Contains(ADVANCED_PARAMETER_DbTypeDT_PARAM_NAME));
            Assert.IsTrue(_command.Parameters.Contains(ADVANCED_PARAMETER_PREFIX_OVERRIDE_PARAM_NAME));
        }
예제 #17
0
        public void FillObjectFromDataReader_StructuredGood_Test()
        {
            DbAutoFillHelper.FillObjectFromDataReader(_dvco, _dataReader);

            Assert.IsTrue(_dvco.MyStructuredField.Records.Count > 0);
            MyGenericObject mgo = _dvco.FindGenericObjectFromId(int.Parse(OBJECT_FILL_ELEMENT1_ID));

            Assert.IsNotNull(mgo);

            Assert.AreEqual(mgo.name, OBJECT_FILL_ELEMENT1_NAME);

            mgo = _dvco.FindGenericObjectFromId(int.Parse(OBJECT_FILL_ELEMENT2_ID));
            Assert.IsNotNull(mgo);

            Assert.AreEqual(mgo.name, OBJECT_FILL_ELEMENT2_NAME);
        }
예제 #18
0
        public void SetParametersFromObject_StructuredGood_NotNull_Test()
        {
            _dvco.MyStructuredField = new GenericSqlStructuredType();
            _dvco.MyStructuredField.Add(new MyGenericObject()
            {
                id = OBJECT_SET_ELEMENT1_ID, name = OBJECT_SET_ELEMENT1_NAME
            });
            _dvco.MyStructuredField.Add(new MyGenericObject()
            {
                id = OBJECT_SET_ELEMENT2_ID, name = OBJECT_SET_ELEMENT2_NAME
            });
            DbAutoFillHelper.AddParametersFromObjectMembers(_command, _dvco);

            Assert.IsTrue(_command.Parameters.Contains(OBJECT_MYSTRUCTUREDFIELD_NAME));
            Assert.IsTrue(_command.Parameters[OBJECT_MYSTRUCTUREDFIELD_NAME].SqlDbType == SqlDbType.Structured);
        }
        public void DbParametersFromBasicObject()
        {
            const int    expectedInt            = 11;
            const string expectedString         = "HollyMolly";
            const string expectedIntName        = "IntField";
            const string expectedStringProperty = "StringProperty";

            BasicObject obj = new BasicObject
            {
                IntField       = expectedInt,
                StringProperty = expectedString
            };

            DbAutoFillHelper.FillDbParametersFromObject(command, obj);

            Assert.AreEqual(obj.IntField, command.Parameters[expectedIntName].Value);
            Assert.AreEqual(obj.StringProperty, command.Parameters[expectedStringProperty].Value);
        }
        public void DbResultsToBasicObject()
        {
            const string expectedStringValue = "String";
            const int    expectedIntValue    = 76;
            const string stringPropName      = "StringProperty";
            const string intPropName         = "IntField";

            DataTable dt = DatasetGenerator.CreateNewBasicDataTable(
                new string[] { stringPropName, intPropName },
                new Type[] { typeof(string), typeof(int) });

            using (IDataReader dr = DatasetGenerator.CreateBasicDataReader(dt, expectedStringValue, expectedIntValue))
            {
                dr.Read();

                BasicObject obj = new BasicObject();
                DbAutoFillHelper.FillObjectFromDataReader(dr, obj);

                Assert.AreEqual(obj.StringProperty, expectedStringValue);
                Assert.AreEqual(obj.IntField, expectedIntValue);
            }
        }
        public void DbResultToComplexObject()
        {
            const string nameINField               = "NameIN";
            const string toDbUuidField             = "ToDbUuid";
            const string fromDbIdField             = "FromDbId";
            const string expectedAliasedColumnName = "ALittleTest";

            const string expectedNameINValue       = "ComplexObject";
            const int    unexpectedToDbUuidValue   = 23;
            const int    expectedFromDbUuid        = 3;
            const int    expectedToDbUuidValue     = -19;
            const bool   expectedAliaseColumnValue = true;

            DataTable dt = DatasetGenerator.CreateNewBasicDataTable(
                new string[] { nameINField, toDbUuidField, fromDbIdField, expectedAliasedColumnName },
                new Type[] { typeof(string), typeof(int), typeof(int), typeof(string) });

            using (IDataReader dr = DatasetGenerator.CreateBasicDataReader(dt,
                                                                           expectedNameINValue,
                                                                           unexpectedToDbUuidValue,
                                                                           expectedFromDbUuid,
                                                                           expectedAliaseColumnValue))
            {
                dr.Read();

                ComplexObject obj = new ComplexObject();
                obj.ToDbUuid = expectedToDbUuidValue;

                DbAutoFillHelper.FillObjectFromDataReader(dr, obj);

                Assert.AreEqual(expectedNameINValue, obj.NameIN);
                Assert.AreNotEqual(unexpectedToDbUuidValue, obj.ToDbUuid);
                Assert.AreEqual(expectedToDbUuidValue, obj.ToDbUuid);
                Assert.AreEqual(expectedFromDbUuid, obj.FromDbId);
                Assert.AreEqual(expectedAliaseColumnValue, obj.Aliased);
            }
        }
        private void AddParametersWithValueToCommand(IDbCommand command, params object[] parameters)
        {
            if (parameters == null || parameters.Length == 0)
            {
                return;
            }

            foreach (object parameter in parameters)
            {
                if (parameter != null && false == (parameter is DBNull))
                {
                    IDbAnonymousValue anonymousParam = parameter as IDbAnonymousValue;

                    if (anonymousParam != null)
                    {
                        DbAutoFillHelper.AddParameterWithValue(command, anonymousParam.Alias, anonymousParam.GetValue(), null);
                    }
                    else
                    {
                        DbAutoFillHelper.FillDbParametersFromObject(command, parameter);
                    }
                }
            }
        }
예제 #23
0
 public void SetParameters_NamedAnonymous_Raw_Test()
 {
     DbAutoFillHelper.AddParameterWithValue(_command, ANONYMOUS_VALUE_ALIAS, ANONYMOUS_SET_VALUE, null);
     Assert.IsTrue(_command.Parameters.Contains(ANONYMOUS_VALUE_ALIAS));
     Assert.AreEqual(_command.Parameters[ANONYMOUS_VALUE_ALIAS].Value, ANONYMOUS_SET_VALUE);
 }