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);
        }