Beispiel #1
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);
        }
Beispiel #2
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);
        }
Beispiel #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);
        }
Beispiel #4
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);
        }
Beispiel #5
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-------------------------
        }
Beispiel #6
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);
                }
            }
        }