public void LoadDocTypesTest_DatePropertyMapping()
 {
     DocTypeObjectBuilder target = new DocTypeObjectBuilder(string.Empty);
     var dateReader = Isolate.Fake.Instance<IRecordsReader>();
     Isolate.WhenCalled(() => dateReader.GetDbType()).WillReturn("Date");
     var dateProp = target.BuildProperty(dateReader);
     Assert.AreEqual(typeof(DateTime), dateProp.DatabaseType);
 }
        public void LoadDocTypesTest_DocTypeProperties()
        {
            ISqlHelper fakeSql = Isolate.Fake.Instance<ISqlHelper>(Members.ReturnRecursiveFakes);

            IRecordsReader fakeReader = Isolate.Fake.Instance<IRecordsReader>();

            var dtGuid = Guid.NewGuid();

            //get the data for the DT
            Isolate.WhenCalled(() => fakeReader.HasRecords).WillReturn(true);
            Isolate.WhenCalled(() => fakeReader.Read()).WillReturn(true);
            Isolate.WhenCalled(() => fakeSql.ExecuteReader(string.Empty)).WillReturn(fakeReader);
            Isolate.WhenCalled(() => fakeReader.GetId()).WillReturn(0);
            Isolate.WhenCalled(() => fakeReader.Read()).WillReturnRepeat(true, 4).AndThen().CallOriginal();
            Isolate.WhenCalled(() => fakeReader.GetParentId()).WillReturn(-1);

            Isolate.WhenCalled(() => fakeReader.GetAlias()).WillReturn("Property1 Alias");
            Isolate.WhenCalled(() => fakeReader.GetString("RegularExpression")).WillReturn(string.Empty);
            Isolate.WhenCalled(() => fakeReader.GetDbType()).WillReturn("Integer");
            Isolate.WhenCalled(() => fakeReader.GetDescription()).WillReturn("Property1 Description");
            Isolate.WhenCalled(() => fakeReader.GetId()).WillReturn(1);
            Isolate.WhenCalled(() => fakeReader.GetName()).WillReturn("Property1");

            Isolate.WhenCalled(() => fakeReader.GetString("RegularExpression")).WillReturn(string.Empty);
            Isolate.WhenCalled(() => fakeReader.GetDbType()).WillReturn("Ntext");

            Isolate.WhenCalled(() => fakeReader.GetString("RegularExpression")).WillReturn(string.Empty);
            Isolate.WhenCalled(() => fakeReader.GetDbType()).WillReturn("Nvarchar");

            Isolate.WhenCalled(() => fakeReader.GetString("RegularExpression")).WillReturn(string.Empty);
            Isolate.WhenCalled(() => fakeReader.GetDbType()).WillReturn("Date");

            DocTypeObjectBuilder target = new DocTypeObjectBuilder(string.Empty);
            Isolate.WhenCalled(() => target.SqlHelper).WillReturn(fakeSql);
            target.LoadDocTypes();

            Isolate.Verify.WasCalledWithExactArguments(() => target.GetProperties(0));
            Isolate.Verify.WasCalledWithExactArguments(() => target.BuildProperty(fakeReader));

            Isolate.Verify.WasCalledWithAnyArguments(() => fakeSql.ExecuteReader(string.Empty));
            Isolate.Verify.WasCalledWithExactArguments(() => fakeReader.GetAlias());
            Isolate.Verify.WasCalledWithExactArguments(() => fakeReader.GetDbType());
            Isolate.Verify.WasCalledWithExactArguments(() => fakeReader.GetDescription());
            Isolate.Verify.WasCalledWithExactArguments(() => fakeReader.GetName());
            Isolate.Verify.WasCalledWithExactArguments(() => fakeReader.GetString("RegularExpression"));
            Isolate.Verify.WasCalledWithExactArguments(() => fakeReader.GetId());

            var dt = target.DocumentTypes[0];

            Assert.IsNotNull(dt.Properties);
            Assert.AreEqual(4, dt.Properties.Count);

            Assert.AreEqual("Property1 Alias", dt.Properties[0].Alias);
            Assert.AreEqual(typeof(int), dt.Properties[0].DatabaseType);
            Assert.AreEqual("Property1 Description", dt.Properties[0].Description);
            Assert.AreEqual(1, dt.Properties[0].Id);
            Assert.AreEqual(false, dt.Properties[0].Mandatory);
            Assert.AreEqual("Property1", dt.Properties[0].Name);
            Assert.AreEqual(string.Empty, dt.Properties[0].RegularExpression);
            Assert.AreEqual(typeof(string), dt.Properties[1].DatabaseType);
            Assert.AreEqual(typeof(string), dt.Properties[2].DatabaseType);
            Assert.AreEqual(typeof(DateTime), dt.Properties[3].DatabaseType);

        }
 public void LoadDocTypesTest_ObjectPropertyMapping()
 {
     DocTypeObjectBuilder target = new DocTypeObjectBuilder(string.Empty);
     var objReader = Isolate.Fake.Instance<IRecordsReader>();
     Isolate.WhenCalled(() => objReader.GetDbType()).WillReturn("Something undefined");
     var objProp = target.BuildProperty(objReader);
     Assert.AreEqual(typeof(object), objProp.DatabaseType);
 }