Example #1
0
// ReSharper disable InconsistentNaming
        public void AbstractDataBaseBroker_GetServiceMethods_WhenCached_CachedResults()
// ReSharper restore InconsistentNaming
        {
            //------------Setup for test--------------------------
            TestDatabaseBroker broker = new TestDatabaseBroker();

            DbSource source = new DbSource();

            TestDatabaseBroker.TheCache = new ConcurrentDictionary <string, ServiceMethodList>();
// ReSharper disable UseObjectOrCollectionInitializer
            var methodList = new ServiceMethodList();

// ReSharper restore UseObjectOrCollectionInitializer
            methodList.Add(new ServiceMethod("bob", "bob src", null, null, null, ""));

            TestDatabaseBroker.TheCache.TryAdd(source.ConnectionString, methodList);
            //------------Execute Test---------------------------

            var result = broker.GetServiceMethods(source);

            // set back to empty ;)
            TestDatabaseBroker.TheCache = new ConcurrentDictionary <string, ServiceMethodList>();
            //------------Assert Results-------------------------

            Assert.AreEqual(1, result.Count);
            Assert.AreEqual("bob", result[0].Name);
        }
Example #2
0
// ReSharper disable InconsistentNaming
        public void AbstractDataBaseBroker_GetServiceMethods_WhenCachedNoRefreshRequested_FreshResults()
// ReSharper restore InconsistentNaming
        {
            //------------Setup for test--------------------------
            TestDatabaseBroker broker = new TestDatabaseBroker();

            DbSource source = new DbSource {
                ReloadActions = true
            };

            TestDatabaseBroker.TheCache = new ConcurrentDictionary <string, ServiceMethodList>();
            var methodList = new ServiceMethodList {
                new ServiceMethod("bob", "bob src", null, null, null, null)
            };

            TestDatabaseBroker.TheCache.TryAdd(source.ConnectionString, methodList);
            //------------Execute Test---------------------------

            var result = broker.GetServiceMethods(source);

            // set back to empty ;)
            TestDatabaseBroker.TheCache = new ConcurrentDictionary <string, ServiceMethodList>();
            //------------Assert Results-------------------------

            Assert.AreEqual(0, result.Count);
        }
Example #3
0
        public void AbstractDataBaseBroker_GetServiceMethods_WhenCached_CachedResults()

        {
            //------------Setup for test--------------------------
            var broker = new TestDatabaseBroker();

            var source = new DbSource();

            TestDatabaseBroker.TheCache = new ConcurrentDictionary <string, ServiceMethodList>();

            var methodList = new ServiceMethodList();

            methodList.Add(new ServiceMethod("bob", "bob src", null, null, null, ""));

            TestDatabaseBroker.TheCache.TryAdd(source.ConnectionString, methodList);
            //------------Execute Test---------------------------

            var result = broker.GetServiceMethods(source);

            // set back to empty ;)
            TestDatabaseBroker.TheCache = new ConcurrentDictionary <string, ServiceMethodList>();
            //------------Assert Results-------------------------

            Assert.AreEqual(1, result.Count);
            Assert.AreEqual("bob", result[0].Name);
        }
Example #4
0
// ReSharper disable InconsistentNaming
        public void AbstractDataBaseBroker_GetDatabases_DbSourceIsNull_ThrowsArgumentNullException()
// ReSharper restore InconsistentNaming
        {
            //------------Setup for test--------------------------
            var broker = new TestDatabaseBroker();

            //------------Execute Test---------------------------
            broker.GetDatabases(null);

            //------------Assert Results-------------------------
        }
Example #5
0
        public void AbstractDataBaseBroker_TestService_DbServiceIsNull_ThrowsArgumentNullException()

        {
            //------------Setup for test--------------------------
            var broker = new TestDatabaseBroker();

            //------------Execute Test---------------------------

            broker.TestService(null);

            //------------Assert Results-------------------------
        }
Example #6
0
// ReSharper disable InconsistentNaming
        public void AbstractDataBaseBroker_GetServiceMethods_WhenNotCached_FreshResults()
// ReSharper restore InconsistentNaming
        {
            //------------Setup for test--------------------------
            TestDatabaseBroker broker = new TestDatabaseBroker();
            Mock <DbSource>    source = new Mock <DbSource>();
            //------------Execute Test---------------------------

            var result = broker.GetServiceMethods(source.Object);

            //------------Assert Results-------------------------

            Assert.AreEqual(0, result.Count);
        }
Example #7
0
// ReSharper disable InconsistentNaming
        public void AbstractDataBaseBroker_GetServiceMethods_DbSourceIsNull_ThrowsArgumentNullException()
// ReSharper restore InconsistentNaming
        {
            //------------Setup for test--------------------------
            var broker = new TestDatabaseBroker();

            //------------Execute Test---------------------------

#pragma warning disable 168
            var result = broker.GetServiceMethods(null);
#pragma warning restore 168

            //------------Assert Results-------------------------
        }
Example #8
0
// ReSharper disable InconsistentNaming
        public void AbstractDataBaseBroker_TestService_DbServiceWithNullSource_ThrowsArgumentNullException()
// ReSharper restore InconsistentNaming
        {
            //------------Setup for test--------------------------
            var broker = new TestDatabaseBroker();

            var dbService = new DbService {
                Source = null
            };

            //------------Execute Test---------------------------

            broker.TestService(dbService);

            //------------Assert Results-------------------------
        }
Example #9
0
// ReSharper disable InconsistentNaming
        public void AbstractDataBaseBroker_GetDatabases_InvokesDbServerFetchDatabases_Done()
// ReSharper restore InconsistentNaming
        {
            //------------Setup for test--------------------------
            var dbSource = new DbSource();

            var dbServer = new Mock <TestDbServer>();

            dbServer.Setup(s => s.Connect(It.IsAny <string>())).Verifiable();
            dbServer.Setup(s => s.FetchDatabases()).Verifiable();

            var broker = new TestDatabaseBroker(dbServer.Object);

            //------------Execute Test---------------------------
            broker.GetDatabases(dbSource);

            //------------Assert Results-------------------------
            dbServer.Verify(s => s.Connect(It.IsAny <string>()));
            dbServer.Verify(s => s.FetchDatabases());
        }
Example #10
0
// ReSharper disable InconsistentNaming
        public void AbstractDataBaseBroker_TestService_InvokesDbServiceMethodInsideTransaction_Done()
// ReSharper restore InconsistentNaming
        {
            //------------Setup for test--------------------------
            var dbService = new DbService
            {
                Method = new ServiceMethod
                {
                    Name       = "TestMethod",
                    Parameters = new List <MethodParameter>
                    {
                        new MethodParameter {
                            Name = "Param1", TypeName = typeof(string).FullName, Value = "Hello"
                        },
                        new MethodParameter {
                            Name = "Param2", TypeName = typeof(int).FullName, Value = "99"
                        }
                    },
                    ExecuteAction = "BobTestMethod"
                }
            };

            var testServiceResults = new DataTable("TestTableName");

            testServiceResults.Columns.Add("Col1", typeof(int));
            testServiceResults.Columns.Add("Col2", typeof(string));
            testServiceResults.Rows.Add(new object[] { 1, "row1" });
            testServiceResults.Rows.Add(new object[] { 2, "row2" });
            testServiceResults.Rows.Add(new object[] { 3, null });

            IDbCommand fetchDataTableCommand = null;

            var dbServer = new Mock <TestDbServer>();

            dbServer.Setup(s => s.Connect(It.IsAny <string>())).Verifiable();
            dbServer.Setup(s => s.BeginTransaction()).Verifiable();
            dbServer.Setup(s => s.FetchDataTable(It.IsAny <IDbCommand>()))
            .Callback((IDbCommand command) => fetchDataTableCommand = command)
            .Returns(testServiceResults)
            .Verifiable();
            dbServer.Setup(s => s.RollbackTransaction()).Verifiable();
            dbServer.Setup(s => s.CreateCommand()).Returns(new SqlCommand());

            var broker = new TestDatabaseBroker(dbServer.Object);

            //------------Execute Test---------------------------
            var result = broker.TestService(dbService);

            //------------Assert Results-------------------------
            dbServer.Verify(s => s.Connect(It.IsAny <string>()));
            dbServer.Verify(s => s.BeginTransaction());
            dbServer.Verify(s => s.FetchDataTable(It.IsAny <IDbCommand>()));
            dbServer.Verify(s => s.RollbackTransaction());

            Assert.IsNotNull(fetchDataTableCommand);
            Assert.AreEqual("BobTestMethod", fetchDataTableCommand.CommandText);
            Assert.AreEqual(dbService.Method.Parameters.Count, fetchDataTableCommand.Parameters.Count);

            for (var i = 0; i < dbService.Method.Parameters.Count; i++)
            {
                var methodParam  = dbService.Method.Parameters[i];
                var commandParam = (IDbDataParameter)fetchDataTableCommand.Parameters[i];

                Assert.AreEqual("@" + methodParam.Name, commandParam.ParameterName);
                Assert.AreEqual(methodParam.Value, commandParam.Value);
                Assert.AreEqual(DbType.String, commandParam.DbType);
            }

            Assert.IsNotNull(result);
            Assert.IsNotNull(result.DataSourceShapes);
            Assert.AreEqual(1, result.DataSourceShapes.Count);
            Assert.IsNotNull(result.DataSourceShapes[0]);
            Assert.AreEqual(2, result.DataSourceShapes[0].Paths.Count);

            Assert.AreEqual("TestTableName().Col1", result.DataSourceShapes[0].Paths[0].ActualPath);
            Assert.AreEqual("TestTableName().Col1", result.DataSourceShapes[0].Paths[0].DisplayPath);
            Assert.AreEqual("1__COMMA__2__COMMA__3", result.DataSourceShapes[0].Paths[0].SampleData);

            Assert.AreEqual("TestTableName().Col2", result.DataSourceShapes[0].Paths[1].ActualPath);
            Assert.AreEqual("TestTableName().Col2", result.DataSourceShapes[0].Paths[1].DisplayPath);
            Assert.AreEqual("row1__COMMA__row2__COMMA__", result.DataSourceShapes[0].Paths[1].SampleData);
        }
Example #11
0
// ReSharper disable InconsistentNaming
        public void AbstractDataBaseBroker_GetServiceMethods_InvokesDbServerFetchStoredProcedures_Done()
// ReSharper restore InconsistentNaming
        {
            //------------Setup for test--------------------------
            var dbSource = new DbSource();

            var procedureCommand = new SqlCommand("procedureCommand");

            procedureCommand.Parameters.Add(new SqlParameter("@p1", "proc"));

            var functionCommand = new SqlCommand("functionCommand");

            functionCommand.Parameters.Add(new SqlParameter("@f1", "func"));

            var dbServer = new Mock <TestDbServer>();

            dbServer.Setup(s => s.Connect(It.IsAny <string>())).Verifiable();
            dbServer.Setup(s => s.FetchStoredProcedures
                           (
                               It.IsAny <Func <IDbCommand, List <IDbDataParameter>, string, string, bool> >(),
                               It.IsAny <Func <IDbCommand, List <IDbDataParameter>, string, string, bool> >(),
                               It.IsAny <bool>())
                           )
            .Callback(
                (
                    Func <IDbCommand, List <IDbDataParameter>, string, string, bool> procedureProcessor,
                    Func <IDbCommand, List <IDbDataParameter>, string, string, bool> functionProcessor,
                    bool continueOnProcessorException
                ) =>
            {
                procedureProcessor(procedureCommand, procedureCommand.Parameters.Cast <IDbDataParameter>().ToList(), "procHelpText", "");
                functionProcessor(functionCommand, functionCommand.Parameters.Cast <IDbDataParameter>().ToList(), "funcHelpText", "");
            })
            .Verifiable();

            var broker = new TestDatabaseBroker(dbServer.Object);

            //------------Execute Test---------------------------
            var result = broker.GetServiceMethods(dbSource);

            //------------Assert Results-------------------------
            dbServer.Verify(s => s.Connect(It.IsAny <string>()));
            dbServer.Verify(s => s.FetchStoredProcedures
                            (
                                It.IsAny <Func <IDbCommand, List <IDbDataParameter>, string, string, bool> >(),
                                It.IsAny <Func <IDbCommand, List <IDbDataParameter>, string, string, bool> >(),
                                It.IsAny <bool>())
                            );


            Assert.IsNotNull(result);
            Assert.AreEqual(2, result.Count);

            for (var i = 0; i < result.Count; i++)
            {
                var command       = i == 0 ? procedureCommand : functionCommand;
                var serviceMethod = result[i];

                Assert.AreEqual(command.CommandText, serviceMethod.Name);

                for (var j = 0; j < serviceMethod.Parameters.Count; j++)
                {
                    var methodParam  = serviceMethod.Parameters[j];
                    var commandParam = (IDbDataParameter)command.Parameters[j];

                    Assert.AreEqual(commandParam.ParameterName, "@" + methodParam.Name);
                }
            }
        }