Пример #1
0
        // ReSharper disable InconsistentNaming
        public void SqlServer_FetchDataTable_AddParams_VerifyAllAdded()
        // ReSharper restore InconsistentNaming
        {
            //------------Setup for test--------------------------
            var factory     = new Mock <IDbFactory>();
            var mockCommand = new Mock <IDbCommand>();



            mockCommand.Setup(a => a.ExecuteReader(It.IsAny <CommandBehavior>())).Returns(new Mock <IDataReader>().Object);
            mockCommand.Setup(a => a.CommandText).Returns("Dave.Bob");
            var added = new SqlCommand().Parameters;

            mockCommand.Setup(a => a.Parameters).Returns(added);
            var helpTextCommand = new Mock <IDbCommand>();

            helpTextCommand.Setup(a => a.ExecuteReader(It.IsAny <CommandBehavior>())).Returns(new Mock <IDataReader>().Object);
            DataTable dt = new DataTable();

            dt.Columns.Add("database_name");
            dt.Rows.Add(new object[] { "Bob" });
            dt.Rows.Add(new object[] { "Dave" });
            factory.Setup(a => a.GetSchema(It.IsAny <IDbConnection>(), "Databases")).Returns(dt);
            var conn = new Mock <IDbConnection>();

            conn.Setup(a => a.State).Returns(ConnectionState.Open);
            var sqlServer = new SqlServer(factory.Object);

            try
            {
                PrivateObject pvt = new PrivateObject(sqlServer);
                pvt.SetField("_connection", conn.Object);
                pvt.SetField("_command", mockCommand.Object);
                //------------Execute Test---------------------------
                IDbDataParameter[] param = new IDbDataParameter[] { new SqlParameter("a", "a"), new SqlParameter("b", "b") };

                SqlServer.AddParameters(mockCommand.Object, param);
                Assert.AreEqual(2, added.Count);


                //------------Assert Results-------------------------
            }
            finally
            {
                sqlServer.Dispose();
            }
        }