예제 #1
0
        public void TestWillNotRetrieveValuesIfThereAreNoSetterActions()
        {
            string columnName             = "col";
            IEnumerable <object[]> values = new List <object[]>()
            {
                new object[] { "value_for_col" }
            };

            Mock <IColumnToObject <object> > mockColumnToObject = new Mock <IColumnToObject <object> >();
            Mock <IQueryResult> mockQueryResult = new Mock <IQueryResult>();

            mockColumnToObject.Setup(_ => _.GetColumnSetter(columnName)).Returns(null);

            mockQueryResult.Setup(_ => _.ColumnsNames()).Returns(new List <string>()
            {
                columnName
            });
            mockQueryResult.Setup(_ => _.ResultRows()).Returns(values);

            QueryTransformer <object> model = new QueryTransformer <object>("transformer", mockColumnToObject.Object);

            model.Transform(mockQueryResult.Object);

            IInvocationList    invocations       = mockQueryResult.Invocations;
            List <IInvocation> invocationMethods = new List <IInvocation>(invocations);
            List <string>      calledMethods     = new List <string>(invocationMethods.ConvertAll(current => current.Method.Name));

            CollectionAssert.DoesNotContain(calledMethods, "ResultRows");
        }
예제 #2
0
        public static string getConsoleOutput(IInvocationList invocations)
        {
            if (!invocations.Any())
            {
                return(string.Empty);
            }

            return(string.Concat(invocations.Where(i => i.Method.Name.Contains("Write")).Select(i => i.Arguments.OfType <string>().FirstOrDefault())));
        }
예제 #3
0
        public void TestWillNotUseQueryDefinitionUntilExtractMethodIsCalled()
        {
            Mock <IQueryDefinition> mock = new Mock <IQueryDefinition>();

            new DataBaseExtractor("", mock.Object);

            IInvocationList invocations = mock.Invocations;

            Assert.AreEqual(0, invocations.Count);
        }
예제 #4
0
        public void TestSendResultToMultipleReports()
        {
            object         o             = new object();
            Mock <IReport> mockReportOne = new Mock <IReport>();
            Mock <IReport> mockReportTwo = new Mock <IReport>();
            Mock <IExtractor <object> >           mockExtractor   = new Mock <IExtractor <object> >();
            Mock <ITransformer <object, object> > mockTransformer = new Mock <ITransformer <object, object> >();
            Mock <ILoader <object> > mockLoader = new Mock <ILoader <object> >();

            mockExtractor.Setup(_ => _.GetID()).Returns("extractor");
            mockExtractor.Setup(_ => _.Extract()).Returns(o);

            mockTransformer.Setup(_ => _.GetID()).Returns("transformer");
            mockTransformer.Setup(_ => _.Transform(o)).Returns(o);

            mockLoader.Setup(_ => _.GetID()).Returns("loader");

            ProcessorBuilder <object> builder = new ProcessorBuilder <object>(mockLoader.Object);

            builder.AddSource("mock processor", mockExtractor.Object, mockTransformer.Object);
            builder.AddReport(mockReportOne.Object);
            builder.AddReport(mockReportTwo.Object);

            IProcessor processor = builder.Build();
            IEnumerable <Task <JobResult> > tasks = processor.Process();

            Task.WaitAll(new List <Task <JobResult> >(tasks).ToArray());

            //Mock one check
            IInvocationList invocationList = mockReportOne.Invocations;

            Assert.AreEqual(1, invocationList.Count);

            IEnumerator <IInvocation> invocationEnumerator = invocationList.GetEnumerator();

            invocationEnumerator.MoveNext();

            IInvocation invocation = invocationEnumerator.Current;

            Assert.AreEqual("Report", invocation.Method.Name);

            //Mock two check
            invocationList = mockReportTwo.Invocations;

            Assert.AreEqual(1, invocationList.Count);

            invocationEnumerator = invocationList.GetEnumerator();
            invocationEnumerator.MoveNext();

            invocation = invocationEnumerator.Current;
            Assert.AreEqual("Report", invocation.Method.Name);
        }
예제 #5
0
        /// <summary>
        /// 顯示查看資料
        /// </summary>
        /// <param name="datas"></param>
        private void ShowData(IInvocationList datas)
        {
            //可下中斷點查看資料內容
            foreach (var signalrResponseData in datas)
            {
                var showDatas = new object();
                if (signalrResponseData != null && signalrResponseData.Arguments != null)
                {
                    showDatas = signalrResponseData.Arguments;
                }
            }
            //取得signalr回傳的資料

            /* var getGroupResponseDatas = ( client.Invocations!=null && client.Invocations[0]!=null && client.Invocations[0].Arguments!=null && client.Invocations[0].Arguments[0]!=null) ?
             * client.Invocations[0].Arguments[0]
             * : null;
             * //判斷是否取為正確的資料
             * Microsoft.VisualStudio.TestTools.UnitTesting.Assert.IsInstanceOfType(getGroupResponseDatas, typeof(List<LearningCircle>));
             * //將資料轉換成正確的資料
             * var targetResData = getGroupResponseDatas as List<LearningCircle>;
             * //判斷是否為null
             * Microsoft.VisualStudio.TestTools.UnitTesting.Assert.IsNotNull(targetResData);*/
        }
예제 #6
0
 public static void VerifyAndClear(this IInvocationList invocations, params (string Name, object[] Args)[] expectedInvocations)
예제 #7
0
 public static IEnumerable <IInvocation> WithoutAdditional(this IInvocationList invocationList)
 {
     //there is no setting to be concerned with
     return(invocationList.Where(i => i.Method.Name != "get____Additional"));
 }
예제 #8
0
        public void TestExecutesDefinedSetterActions()
        {
            string columnName          = "name";
            string columnDescription   = "description";
            string columnPrice         = "price";
            string columnWithNoAction  = "no_action_column";
            string columnWithNoAction2 = "no_action_column2";

            string  name        = "name of model";
            string  description = "desc";
            decimal price       = 3m;
            string  noAction    = "no_action_value";
            string  noAction2   = "no_action_value2";

            IEnumerable <string> columns = new List <string>()
            {
                columnName, columnDescription, columnPrice, columnWithNoAction, columnWithNoAction2
            };
            IEnumerable <object[]> values = new List <object[]>()
            {
                new object[] { name, description, price, noAction, noAction2 }
            };

            //Mocked objects
            Mock <Action <Model, object> >  mockNameAction        = new Mock <Action <Model, object> >();
            Mock <Action <Model, object> >  mockDescriptionAction = new Mock <Action <Model, object> >();
            Mock <Action <Model, object> >  mockPriceAction       = new Mock <Action <Model, object> >();
            Mock <IColumnToObject <Model> > mockColumnToObject    = new Mock <IColumnToObject <Model> >();
            Mock <IQueryResult>             mockQueryResult       = new Mock <IQueryResult>();

            //Setup of mockColumnToObject
            mockColumnToObject.Setup(_ => _.GetColumnSetter(columnName)).Returns(mockNameAction.Object);
            mockColumnToObject.Setup(_ => _.GetColumnSetter(columnDescription)).Returns(mockDescriptionAction.Object);
            mockColumnToObject.Setup(_ => _.GetColumnSetter(columnPrice)).Returns(mockPriceAction.Object);
            mockColumnToObject.Setup(_ => _.GetColumnSetter(columnWithNoAction)).Returns(null);
            mockColumnToObject.Setup(_ => _.GetColumnSetter(columnWithNoAction2)).Returns(null);

            //Setup of mockQueryResult
            mockQueryResult.Setup(_ => _.ColumnsNames()).Returns(columns);
            mockQueryResult.Setup(_ => _.ResultRows()).Returns(values);

            IColumnToObject <Model>  columnToObject   = mockColumnToObject.Object;
            QueryTransformer <Model> queryTransformer = new QueryTransformer <Model>("transformer", columnToObject);

            queryTransformer.Transform(mockQueryResult.Object);

            //Invocation of "Name" check
            IInvocationList    invocations       = mockNameAction.Invocations;
            List <IInvocation> calledMethods     = new List <IInvocation>(invocations);
            List <string>      calleMethodsNames = new List <string>(calledMethods.ConvertAll(current => current.Method.Name));

            CollectionAssert.Contains(calleMethodsNames, "Invoke");

            //Invocation of "Description" check
            invocations       = mockDescriptionAction.Invocations;
            calledMethods     = new List <IInvocation>(invocations);
            calleMethodsNames = new List <string>(calledMethods.ConvertAll(current => current.Method.Name));
            CollectionAssert.Contains(calleMethodsNames, "Invoke");

            //Invocation of "Price" check
            invocations       = mockPriceAction.Invocations;
            calledMethods     = new List <IInvocation>(invocations);
            calleMethodsNames = new List <string>(calledMethods.ConvertAll(current => current.Method.Name));
            CollectionAssert.Contains(calleMethodsNames, "Invoke");

            //If there is a call on a null action, it will produce a NullPointerException
        }