Beispiel #1
0
        public int GetNumberOfOrdersWithStatus(OrderStatus orderStatus)
        {
            var query = new SQLQueryScaler <int>(SQLCountOrderOfStatus);

            query.Parameters.Add("OrderStatus", (int)orderStatus);
            var count = queryRunner.RunScalerQuery <int>(query);

            return(count);
        }
        public void ReadScalerReturnsAString()
        {
            var query       = new SQLQueryScaler <string>(sqlString);
            var returnValue = queryRunner.RunScalerQuery <string>(query);

            Assert.AreEqual(scalerStringValue, returnValue);
            VerifyLogging(sqlString);
            Assert.AreEqual(sqlString, MockDatabaseFactory.DbCommand.Object.CommandText);
            MockDatabaseFactory.DbConnection.VerifySet(dbc => dbc.ConnectionString = connectionString, Times.Exactly(1));
            MockDatabaseFactory.DbConnection.Verify(dbc => dbc.Open(), Times.Exactly(1));
            MockDatabaseFactory.DbConnection.Verify(dbc => dbc.Close(), Times.Exactly(1));
            MockDatabaseFactory.DbCommand.Verify(dbc => dbc.ExecuteScalarAsync(It.IsAny <System.Threading.CancellationToken>()), Times.Exactly(1));
        }
        public void ReadScalerDbNullReturnsNullObjectAsync()
        {
            DBNull scalerReturn = DBNull.Value;

            MockDatabaseFactory.SetScalerReturnValue(scalerReturn);
            var query = new SQLQueryScaler <string>(sqlString);
            var task  = queryRunner.RunScalerQueryAsync <string>(query);

            task.Wait();
            var returnValue = task.Result;

            Assert.IsNull(returnValue);
            VerifyLogging(sqlString);
            Assert.AreEqual(sqlString, MockDatabaseFactory.DbCommand.Object.CommandText);
            MockDatabaseFactory.DbConnection.VerifySet(dbc => dbc.ConnectionString = connectionString, Times.Exactly(1));
            MockDatabaseFactory.DbConnection.Verify(dbc => dbc.Open(), Times.Exactly(1));
            MockDatabaseFactory.DbConnection.Verify(dbc => dbc.Close(), Times.Exactly(1));
            MockDatabaseFactory.DbCommand.Verify(dbc => dbc.ExecuteScalarAsync(It.IsAny <System.Threading.CancellationToken>()), Times.Exactly(1));
        }
        public void AddNewOrderAndItemsTest()
        {
            List <SQLQuery> queriesParameter = null;

            //since the QueryHelper object is mocked, we have to do all the call-backs ourselves....
            queryRunner.Setup(qh => qh.RunQueryAsync(It.IsAny <List <SQLQuery> >(), false))
            .Returns(Task.FromResult <object>(null))
            .Callback <List <SQLQuery>, bool>((queries, useTrans) =>
            {
                queriesParameter = queries;     //save the queries to assert them afterwards....
                foreach (var q in queries)
                {
                    SQLQueryScaler <int> sqs = (SQLQueryScaler <int>)q;
                    //1. call the pre-query Func.
                    sqs.PreQueryProcess(sqs);
                    //2. set the scaler return value.
                    if (sqs.OrderNumber == 1)
                    {
                        sqs.ReturnValue = 12321;
                    }
                    else
                    {
                        sqs.ReturnValue = (sqs.OrderNumber == 2) ? 33 : 34;
                    }
                    //3. call the post-query Action.
                    q.PostQueryProcess(sqs);
                }
            });

            var savedOrder = repo.AddNewOrderAndItems(order);

            queryRunner.Verify(qh => qh.RunQueryAsync(It.IsAny <List <SQLQuery> >(), false), Times.Exactly(1));
            Assert.AreEqual(12321, savedOrder.PK);
            Assert.AreEqual(33, savedOrder.OrderItems[0].PK);
            Assert.AreEqual(34, savedOrder.OrderItems[1].PK);
            Assert.AreEqual(3, queriesParameter.Count);
            Assert.AreEqual(1, queriesParameter.Count(q => q.GroupNumber == 1));
            Assert.AreEqual(2, queriesParameter.Count(q => q.GroupNumber == 2));
            AssertParametersAreSameAsObject(queriesParameter, false);
            Assert.AreEqual(StoreRepository.SQLInsertOrder, queriesParameter.FirstOrDefault(q => q.GroupNumber == 1).ModifiedSQL);
            Assert.AreEqual(StoreRepository.SQLInsertOrderItem, queriesParameter.FirstOrDefault(q => q.GroupNumber == 2).ModifiedSQL);
        }
        public void ReadScalerReturnsAStringWithParametersAsync()
        {
            var query = new SQLQueryScaler <string>(sqlString);

            query.Parameters.Add("param1", "value1");
            query.Parameters.Add("param2", "value2");
            query.Parameters.Add("param3", 333);
            var task = queryRunner.RunScalerQueryAsync <string>(query);

            task.Wait();
            var returnValue = task.Result;

            Assert.AreEqual(scalerStringValue, returnValue);
            VerifyLogging(sqlString);
            Assert.AreEqual(sqlString, MockDatabaseFactory.DbCommand.Object.CommandText);
            MockDatabaseFactory.DbConnection.VerifySet(dbc => dbc.ConnectionString = connectionString, Times.Exactly(1));
            MockDatabaseFactory.DbConnection.Verify(dbc => dbc.Open(), Times.Exactly(1));
            MockDatabaseFactory.DbConnection.Verify(dbc => dbc.Close(), Times.Exactly(1));
            MockDatabaseFactory.Parameters.Verify(p => p.Add(It.IsAny <DbParameter>()), Times.Exactly(3));
            MockDatabaseFactory.DbCommand.Verify(dbc => dbc.ExecuteScalarAsync(It.IsAny <System.Threading.CancellationToken>()), Times.Exactly(1));
        }