示例#1
0
        public void CanUpdateDefaultValues()
        {
            var pd = new CrcParameterDefinition();

            pd.Name            = "TestParam";
            pd.ParameterChoice = new CrcParameterChoice(pd.Name);
            pd.ParameterChoice.Values.Add("Value1");
            pd.ParameterChoice.Values.Add("Value2");
            pd.ParameterChoice.Values.Add("Value3");

            var newDV = new List <string>();

            newDV.Add("Value4");
            newDV.Add("Value5");

            var r = new CrcParameterRefresher();

            r.UpdateDefaultValues(pd, newDV.ToArray());

            Assert.AreEqual(2, pd.ParameterChoice.Values.Count());
            var check4 = pd.ParameterChoice.Values.FirstOrDefault(d => d == "Value4");

            Assert.IsNotNull(check4);
            var check5 = pd.ParameterChoice.Values.FirstOrDefault(d => d == "Value5");

            Assert.IsNotNull(check5);
        }
示例#2
0
        public void CanUpdateValidValues()
        {
            var pd = new CrcParameterDefinition();

            pd.Name = "TestParam";
            pd.ValidValues.Add(new CrcValidValue()
            {
                Label = "Label1", Value = "Value1"
            });
            pd.ValidValues.Add(new CrcValidValue()
            {
                Label = "Label2", Value = "Value2"
            });

            var newVV = new List <rws.ValidValue>();

            newVV.Add(new rws.ValidValue()
            {
                Label = "Label3", Value = "Value3"
            });

            var r = new CrcParameterRefresher();

            r.UpdateValidValues(pd, newVV.ToArray());

            Assert.AreEqual(1, pd.ValidValues.Count());
            var checkVV = pd.ValidValues[0];

            Assert.AreEqual("Label3", checkVV.Label);
            Assert.AreEqual("Value3", checkVV.Value);
        }
        public void CanCloneCrcParameterDefinition()
        {
            var firstP = new CrcParameterDefinition();
            firstP.Name = "Foo";
            firstP.ParameterType = CrcParameterType.Select;
            firstP.AllowNull = true;
            firstP.RequiredFromUser = true;
            firstP.ValidValues.Add(new CrcValidValue() { Label = "Label1", Value = "Value1" });
            firstP.ValidValues.Add(new CrcValidValue() { Label = "Label2", Value = "Value2" });

            var cloneP = firstP.DeepClone();

            Assert.AreEqual("Foo", cloneP.Name);
            Assert.AreEqual(CrcParameterType.Select, cloneP.ParameterType);
            Assert.AreEqual(true, cloneP.AllowNull);
            Assert.AreEqual(true, cloneP.RequiredFromUser);
            Assert.AreEqual(2, cloneP.ValidValues.Count());
            Assert.IsNotNull(cloneP.ValidValues.FirstOrDefault(v => v.Value == "Value1"));
            Assert.AreEqual("Label1", cloneP.ValidValues.FirstOrDefault(v => v.Value == "Value1").Label);
            Assert.IsNotNull(cloneP.ValidValues.FirstOrDefault(v => v.Value == "Value2"));
            Assert.AreEqual("Label2", cloneP.ValidValues.FirstOrDefault(v => v.Value == "Value2").Label);

            // change original
            firstP.Name = "FooChanged";
            firstP.ValidValues[0].Label = "Label1Changed";

            // clone should not be affected
            Assert.AreEqual("Foo", cloneP.Name);
            Assert.IsNotNull(cloneP.ValidValues.FirstOrDefault(v => v.Value == "Value1"));
            Assert.AreEqual("Label1", cloneP.ValidValues.FirstOrDefault(v => v.Value == "Value1").Label);
        }
示例#4
0
        public void RefreshParameter_CanHandleNulls()
        {
            var pd = new CrcParameterDefinition();

            pd.Name            = "TestParam";
            pd.ParameterChoice = new CrcParameterChoice(pd.Name);
            pd.ParameterChoice.Values.Add("Value1");
            pd.ParameterChoice.Values.Add("Value2");
            pd.ParameterChoice.Values.Add("Value3");

            var latestParam = new rws.ReportParameter();

            latestParam.Name          = "TestParam";
            latestParam.ValidValues   = null;
            latestParam.DefaultValues = null;


            var r = new CrcParameterRefresher();

            r.RefreshParameter(pd, latestParam);

            Assert.IsNotNull(pd);
            Assert.AreEqual("TestParam", pd.Name);
            Assert.AreEqual(0, pd.ParameterChoice.Values.Count());
        }
示例#5
0
        public void IsChoiceValid_CanHandleEmptyChoice()
        {
            var pd = new CrcParameterDefinition();

            pd.Name = "TestParam";
            pd.ValidValues.Add(new CrcValidValue()
            {
                Label = "Label1", Value = "Value1"
            });
            pd.ValidValues.Add(new CrcValidValue()
            {
                Label = "Label2", Value = "Value2"
            });
            pd.ValidValues.Add(new CrcValidValue()
            {
                Label = "Label3", Value = "Value3"
            });

            pd.ParameterChoice = new CrcParameterChoice(pd.Name);

            var  r     = new CrcParameterRefresher();
            bool valid = r.IsChoiceValid(pd);

            Assert.IsTrue(valid);
        }
示例#6
0
        public CrcReportDefinition MakeTestReportDefn()
        {
            var repDefn = new CrcReportDefinition();

            repDefn.ReportPath  = "/Pretend/Path";
            repDefn.DisplayName = "Pretend Report";
            var dateParam = new CrcParameterDefinition();

            dateParam.Name          = "PretendDateParam";
            dateParam.DisplayName   = "Pretend Date Param";
            dateParam.ParameterType = CrcParameterType.Date;
            repDefn.ParameterDefinitions.Add(dateParam);
            var singleChoiceParam = new CrcParameterDefinition();

            singleChoiceParam.Name          = "PretendSingleSelect";
            singleChoiceParam.DisplayName   = "Pretend Single Select";
            singleChoiceParam.ParameterType = CrcParameterType.Select;
            singleChoiceParam.ValidValues.Add(new CrcValidValue()
            {
                Value = "S1", Label = "Single1"
            });
            singleChoiceParam.ValidValues.Add(new CrcValidValue()
            {
                Value = "S2", Label = "Single2"
            });
            singleChoiceParam.ValidValues.Add(new CrcValidValue()
            {
                Value = "S3", Label = "Single3"
            });
            repDefn.ParameterDefinitions.Add(singleChoiceParam);
            var multiChoiceParam = new CrcParameterDefinition();

            multiChoiceParam.Name          = "PretendMultiSelect";
            multiChoiceParam.DisplayName   = "Pretend Multi Select";
            multiChoiceParam.ParameterType = CrcParameterType.MultiSelect;
            multiChoiceParam.ValidValues.Add(new CrcValidValue()
            {
                Value = "M1", Label = "Multi1"
            });
            multiChoiceParam.ValidValues.Add(new CrcValidValue()
            {
                Value = "M2", Label = "Multi2"
            });
            multiChoiceParam.ValidValues.Add(new CrcValidValue()
            {
                Value = "M3", Label = "Multi3"
            });
            multiChoiceParam.ValidValues.Add(new CrcValidValue()
            {
                Value = "M4", Label = "Multi4"
            });
            multiChoiceParam.ValidValues.Add(new CrcValidValue()
            {
                Value = "M5", Label = "Multi5"
            });
            repDefn.ParameterDefinitions.Add(multiChoiceParam);

            return(repDefn);
        }
        public CrcReportDefinition MakeTestReportDefn(string dateValue, string selectValue)
        {
            var repDefn = new CrcReportDefinition();

            repDefn.ReportPath  = "/Pretend/Path";
            repDefn.DisplayName = "Pretend Report";

            var dateParam = new CrcParameterDefinition();

            dateParam.Name          = "PretendDateParam";
            dateParam.DisplayName   = "Pretend Date Param";
            dateParam.ParameterType = CrcParameterType.Date;

            dateParam.ParameterChoice             = new CrcParameterChoice("PretendDateParam");
            dateParam.ParameterChoice.SingleValue = dateValue;

            repDefn.ParameterDefinitions.Add(dateParam);

            var singleChoiceParam = new CrcParameterDefinition();

            singleChoiceParam.Name          = "PretendSingleSelect";
            singleChoiceParam.DisplayName   = "Pretend Single Select";
            singleChoiceParam.ParameterType = CrcParameterType.Select;
            singleChoiceParam.ValidValues.Add(new CrcValidValue()
            {
                Value = "S1", Label = "Single1"
            });
            singleChoiceParam.ValidValues.Add(new CrcValidValue()
            {
                Value = "S2", Label = "Single2"
            });
            singleChoiceParam.ValidValues.Add(new CrcValidValue()
            {
                Value = "S3", Label = "Single3"
            });
            singleChoiceParam.ParameterChoice             = new CrcParameterChoice("PretendSingleSelect");
            singleChoiceParam.ParameterChoice.SingleValue = selectValue;
            repDefn.ParameterDefinitions.Add(singleChoiceParam);



            return(repDefn);
        }
        public void CanUpdateDefaultValues()
        {
            var pd = new CrcParameterDefinition();
            pd.Name = "TestParam";
            pd.ParameterChoice = new CrcParameterChoice(pd.Name);
            pd.ParameterChoice.Values.Add("Value1");
            pd.ParameterChoice.Values.Add("Value2");
            pd.ParameterChoice.Values.Add("Value3");

            var newDV = new List<string>();
            newDV.Add("Value4");
            newDV.Add("Value5");

            var r = new CrcParameterRefresher();
            r.UpdateDefaultValues(pd, newDV.ToArray());

            Assert.AreEqual(2, pd.ParameterChoice.Values.Count());
            var check4 = pd.ParameterChoice.Values.FirstOrDefault(d => d == "Value4");
            Assert.IsNotNull(check4);
            var check5 = pd.ParameterChoice.Values.FirstOrDefault(d => d == "Value5");
            Assert.IsNotNull(check5);
        }
        public void CanCloneCrcParameterDefinition()
        {
            var firstP = new CrcParameterDefinition();

            firstP.Name             = "Foo";
            firstP.ParameterType    = CrcParameterType.Select;
            firstP.AllowNull        = true;
            firstP.RequiredFromUser = true;
            firstP.ValidValues.Add(new CrcValidValue()
            {
                Label = "Label1", Value = "Value1"
            });
            firstP.ValidValues.Add(new CrcValidValue()
            {
                Label = "Label2", Value = "Value2"
            });

            var cloneP = firstP.DeepClone();

            Assert.AreEqual("Foo", cloneP.Name);
            Assert.AreEqual(CrcParameterType.Select, cloneP.ParameterType);
            Assert.AreEqual(true, cloneP.AllowNull);
            Assert.AreEqual(true, cloneP.RequiredFromUser);
            Assert.AreEqual(2, cloneP.ValidValues.Count());
            Assert.IsNotNull(cloneP.ValidValues.FirstOrDefault(v => v.Value == "Value1"));
            Assert.AreEqual("Label1", cloneP.ValidValues.FirstOrDefault(v => v.Value == "Value1").Label);
            Assert.IsNotNull(cloneP.ValidValues.FirstOrDefault(v => v.Value == "Value2"));
            Assert.AreEqual("Label2", cloneP.ValidValues.FirstOrDefault(v => v.Value == "Value2").Label);

            // change original
            firstP.Name = "FooChanged";
            firstP.ValidValues[0].Label = "Label1Changed";

            // clone should not be affected
            Assert.AreEqual("Foo", cloneP.Name);
            Assert.IsNotNull(cloneP.ValidValues.FirstOrDefault(v => v.Value == "Value1"));
            Assert.AreEqual("Label1", cloneP.ValidValues.FirstOrDefault(v => v.Value == "Value1").Label);
        }
        public CrcReportDefinition MakeTestReportDefn(string dateValue, string selectValue)
        {
            var repDefn = new CrcReportDefinition();
            repDefn.ReportPath = "/Pretend/Path";
            repDefn.DisplayName = "Pretend Report";

            var dateParam = new CrcParameterDefinition();
            dateParam.Name = "PretendDateParam";
            dateParam.DisplayName = "Pretend Date Param";
            dateParam.ParameterType = CrcParameterType.Date;

            dateParam.ParameterChoice = new CrcParameterChoice("PretendDateParam");
            dateParam.ParameterChoice.SingleValue = dateValue;

            repDefn.ParameterDefinitions.Add(dateParam);

            var singleChoiceParam = new CrcParameterDefinition();
            singleChoiceParam.Name = "PretendSingleSelect";
            singleChoiceParam.DisplayName = "Pretend Single Select";
            singleChoiceParam.ParameterType = CrcParameterType.Select;
            singleChoiceParam.ValidValues.Add(new CrcValidValue() { Value = "S1", Label = "Single1" });
            singleChoiceParam.ValidValues.Add(new CrcValidValue() { Value = "S2", Label = "Single2" });
            singleChoiceParam.ValidValues.Add(new CrcValidValue() { Value = "S3", Label = "Single3" });
            singleChoiceParam.ParameterChoice = new CrcParameterChoice("PretendSingleSelect");
            singleChoiceParam.ParameterChoice.SingleValue = selectValue;
            repDefn.ParameterDefinitions.Add(singleChoiceParam);

            return repDefn;
        }
        public void RefreshParameter_CanHandleNulls()
        {
            var pd = new CrcParameterDefinition();
            pd.Name = "TestParam";
            pd.ParameterChoice = new CrcParameterChoice(pd.Name);
            pd.ParameterChoice.Values.Add("Value1");
            pd.ParameterChoice.Values.Add("Value2");
            pd.ParameterChoice.Values.Add("Value3");

            var latestParam = new rws.ReportParameter();
            latestParam.Name = "TestParam";
            latestParam.ValidValues = null;
            latestParam.DefaultValues = null;

            var r = new CrcParameterRefresher();
            r.RefreshParameter(pd, latestParam);

            Assert.IsNotNull(pd);
            Assert.AreEqual("TestParam", pd.Name);
            Assert.AreEqual(0, pd.ParameterChoice.Values.Count());
        }
        public void IsChoiceValid_CanHandleMissingChoice()
        {
            var pd = new CrcParameterDefinition();
            pd.Name = "TestParam";
            pd.ValidValues.Add(new CrcValidValue() { Label = "Label1", Value = "Value1" });
            pd.ValidValues.Add(new CrcValidValue() { Label = "Label2", Value = "Value2" });
            pd.ValidValues.Add(new CrcValidValue() { Label = "Label3", Value = "Value3" });

            var r = new CrcParameterRefresher();
            bool valid = r.IsChoiceValid(pd);

            Assert.IsTrue(valid);
        }
        public void AddParameterDefinitions(rws.ReportParameter[] wsReportParameters, CrcReportDefinition repDef, CrcExtraConfiguration extraConfig, CrcReportConfig reportConfig)
        {
            List<string> showByDefault = new List<string>();
            if (reportConfig != null)
                showByDefault = reportConfig.GetParamsToShowByDefault();
            List<string> defaultEmptyEquivalents = new List<string>();
            if (extraConfig != null && extraConfig.DefaultEmptyEquivalentValues != null)
                defaultEmptyEquivalents = extraConfig.DefaultEmptyEquivalentValues;

            foreach (var paramLoop in wsReportParameters)
            {
                CrcReportConfig.CrcParamConfig paramConfig = null;
                // get extra config for parameter, if there is any
                if (reportConfig != null)
                    paramConfig = reportConfig.CrcParamConfigs.FirstOrDefault(p => p.ParamName == paramLoop.Name);

                var crcParam = new CrcParameterDefinition();
                crcParam.Name = paramLoop.Name;
                crcParam.id = "param_" + paramLoop.Name.Replace(" ", "_");
                crcParam.AllowNull = paramLoop.Nullable;
                crcParam.AllowBlank = paramLoop.AllowBlank;

                if (string.IsNullOrEmpty(paramLoop.Prompt))
                {
                    // if Prompt is null or empty, it means Parameter is 'Hidden' in SSRS
                    crcParam.Hidden = true;
                    crcParam.DisplayName = paramLoop.Name;
                }
                else
                {
                    crcParam.DisplayName = paramLoop.Prompt;
                }
                if (string.IsNullOrEmpty(crcParam.DisplayName))
                    crcParam.DisplayName = crcParam.Name;
                // if PromptUser is false then Parameter is 'Internal' in SSRS
                if (!paramLoop.PromptUser)
                    crcParam.Hidden = true;
                if (paramLoop.Type == rws.ParameterTypeEnum.DateTime)
                    crcParam.ParameterType = CrcParameterType.Date;
                else if ((paramLoop.ValidValues != null && paramLoop.ValidValues.Count() > 0)
                    || paramLoop.ValidValuesQueryBased)
                {
                    if (paramLoop.MultiValue)
                        crcParam.ParameterType = CrcParameterType.MultiSelect;
                    else
                        crcParam.ParameterType = CrcParameterType.Select;
                }
                else if (paramLoop.Type == rws.ParameterTypeEnum.Boolean)
                    crcParam.ParameterType = CrcParameterType.Boolean;
                else
                    crcParam.ParameterType = CrcParameterType.Text;

                if (paramLoop.ValidValues != null)
                {
                    foreach (var valLoop in paramLoop.ValidValues)
                    {
                        crcParam.ValidValues.Add(new CrcValidValue() { Value = valLoop.Value, Label = valLoop.Label });
                    }
                    if (crcParam.ValidValues.Count() > 10)
                        crcParam.AllowListSearch = true;
                }

                // check config for dependencies
                if (paramConfig != null && paramConfig.DependantParams != null && paramConfig.DependantParams.Count() > 0)
                {
                    logger.DebugFormat("Param {0} has extraconfig dependancies: {1}",
                        paramLoop.Name, string.Join(", ", paramConfig.DependantParams.ToArray()));
                    foreach (string dpname in paramConfig.DependantParams)
                        crcParam.DependantParameterNames.Add(dpname);
                }

                foreach (string sloop in defaultEmptyEquivalents)
                {
                    AddEmptyEquivalent(crcParam, sloop);
                }

                // check for specific empty equivalents for this parameter
                if (paramConfig != null && paramConfig.EmptyEquivalentValues != null)
                {
                    foreach (string sloop in paramConfig.EmptyEquivalentValues)
                    {
                        AddEmptyEquivalent(crcParam, sloop);
                    }
                }

                if (showByDefault.Contains(crcParam.Name))
                    crcParam.AlwaysShow = true;

                repDef.ParameterDefinitions.Add(crcParam);
            }
        }
        public CrcReportDefinition MakeTestReportDefn()
        {
            var repDefn = new CrcReportDefinition();
            repDefn.ReportPath = "/Pretend/Path";
            repDefn.DisplayName = "Pretend Report";
            var dateParam = new CrcParameterDefinition();
            dateParam.Name = "PretendDateParam";
            dateParam.DisplayName = "Pretend Date Param";
            dateParam.ParameterType = CrcParameterType.Date;
            repDefn.ParameterDefinitions.Add(dateParam);
            var singleChoiceParam = new CrcParameterDefinition();
            singleChoiceParam.Name = "PretendSingleSelect";
            singleChoiceParam.DisplayName = "Pretend Single Select";
            singleChoiceParam.ParameterType = CrcParameterType.Select;
            singleChoiceParam.ValidValues.Add(new CrcValidValue() { Value = "S1", Label = "Single1" });
            singleChoiceParam.ValidValues.Add(new CrcValidValue() { Value = "S2", Label = "Single2" });
            singleChoiceParam.ValidValues.Add(new CrcValidValue() { Value = "S3", Label = "Single3" });
            repDefn.ParameterDefinitions.Add(singleChoiceParam);
            var multiChoiceParam = new CrcParameterDefinition();
            multiChoiceParam.Name = "PretendMultiSelect";
            multiChoiceParam.DisplayName = "Pretend Multi Select";
            multiChoiceParam.ParameterType = CrcParameterType.MultiSelect;
            multiChoiceParam.ValidValues.Add(new CrcValidValue() { Value = "M1", Label = "Multi1" });
            multiChoiceParam.ValidValues.Add(new CrcValidValue() { Value = "M2", Label = "Multi2" });
            multiChoiceParam.ValidValues.Add(new CrcValidValue() { Value = "M3", Label = "Multi3" });
            multiChoiceParam.ValidValues.Add(new CrcValidValue() { Value = "M4", Label = "Multi4" });
            multiChoiceParam.ValidValues.Add(new CrcValidValue() { Value = "M5", Label = "Multi5" });
            repDefn.ParameterDefinitions.Add(multiChoiceParam);

            return repDefn;
        }
        public void CanRefreshDependantParameters_Simple()
        {
            // make report defn
            var repDefn = new CrcReportDefinition();

            repDefn.ReportPath = "Test/Report";
            var pd1 = new CrcParameterDefinition();

            pd1.Name = "ParamOne";
            pd1.ValidValues.Add(new CrcValidValue()
            {
                Label = "Label1", Value = "Value1"
            });
            pd1.ValidValues.Add(new CrcValidValue()
            {
                Label = "Label2", Value = "Value2"
            });
            pd1.ValidValues.Add(new CrcValidValue()
            {
                Label = "Label3", Value = "Value3"
            });
            pd1.DependantParameterNames.Add("ParamTwo");
            var pd2 = new CrcParameterDefinition();

            pd2.Name = "ParamTwo";
            pd2.ValidValues.Add(new CrcValidValue()
            {
                Label = "SubLabel1_1", Value = "SubValue1_1"
            });
            pd2.ValidValues.Add(new CrcValidValue()
            {
                Label = "SubLabel1_2", Value = "SubValue1_2"
            });
            pd2.ValidValues.Add(new CrcValidValue()
            {
                Label = "SubLabel2_1", Value = "SubValue2_1"
            });
            pd2.ValidValues.Add(new CrcValidValue()
            {
                Label = "SubLabel2_2", Value = "SubValue2_2"
            });
            pd2.ValidValues.Add(new CrcValidValue()
            {
                Label = "SubLabel3_1", Value = "SubValue3_1"
            });
            repDefn.ParameterDefinitions.Add(pd1);
            repDefn.ParameterDefinitions.Add(pd2);


            // make choice collection
            var choiceCollection = new CrcParameterChoiceCollection();
            var paramChoice      = new CrcParameterChoice("ParamOne");

            paramChoice.Values.Add("Value2");
            choiceCollection.ParameterChoiceList.Add(paramChoice);

            // make server side params to return
            ItemParameter p1 = new ItemParameter();

            p1.Name        = "ParamOne";
            p1.ValidValues = new ValidValue[] { new ValidValue()
                                                {
                                                    Label = "Label1", Value = "Value1"
                                                },
                                                new ValidValue()
                                                {
                                                    Label = "Label2", Value = "Value2"
                                                },
                                                new ValidValue()
                                                {
                                                    Label = "Label3", Value = "Value3"
                                                } };
            p1.DefaultValues = new string[] { };
            ItemParameter p2 = new ItemParameter();

            p2.Name        = "ParamTwo";
            p2.ValidValues = new ValidValue[] { new ValidValue()
                                                {
                                                    Label = "SubLabel2_1", Value = "SubValue2_1"
                                                },
                                                new ValidValue()
                                                {
                                                    Label = "SubLabel2_2", Value = "SubValue2_2"
                                                } };
            p2.DefaultValues = new string[] { };
            ItemParameter[] paramArrayToReturn = new ItemParameter[] { p1, p2 };


            // make mocks for ccs
            var mf = new TestDoubles.MockSsrsWebServiceFactory();
            var soapClientFactory = mf.MakeMockSoapClientFactory(
                mf.MakeMockReportingService2010Soap("Value2", paramArrayToReturn));

            var cacheMock  = MockRepository.GenerateMock <CrcCacheManager>();
            var configMock = MockRepository.GenerateMock <CrcExtraConfiguration>();

            // make ccs
            var ccs = new CrissCrossServices(soapClientFactory, cacheMock, configMock, null);


            ccs.RefreshDependantParameters(repDefn, choiceCollection);

            Assert.AreEqual(2, repDefn.ParameterDefinitions.Count());
            var pd1check = repDefn.ParameterDefinitions.FirstOrDefault(p => p.Name == "ParamOne");

            Assert.IsNotNull(pd1check);
            Assert.AreEqual("Value2", pd1check.ParameterChoice.SingleValue);
            var pd2check = repDefn.ParameterDefinitions.FirstOrDefault(p => p.Name == "ParamTwo");

            Assert.IsNotNull(pd2check);
            Assert.AreEqual(2, pd2check.ValidValues.Count());
            Assert.IsNotNull(pd2check.ValidValues.FirstOrDefault(vv => vv.Value == "SubValue2_1"));
            Assert.IsNotNull(pd2check.ValidValues.FirstOrDefault(vv => vv.Value == "SubValue2_2"));
        }
示例#16
0
        public void CanRefreshDependantParameters_Simple()
        {
            // make report defn
            var repDefn = new CrcReportDefinition();
            repDefn.ReportPath = "Test/Report";
            var pd1 = new CrcParameterDefinition();
            pd1.Name = "ParamOne";
            pd1.ValidValues.Add(new CrcValidValue() { Label = "Label1", Value = "Value1" });
            pd1.ValidValues.Add(new CrcValidValue() { Label = "Label2", Value = "Value2" });
            pd1.ValidValues.Add(new CrcValidValue() { Label = "Label3", Value = "Value3" });
            pd1.DependantParameterNames.Add("ParamTwo");
            var pd2 = new CrcParameterDefinition();
            pd2.Name = "ParamTwo";
            pd2.ValidValues.Add(new CrcValidValue() { Label = "SubLabel1_1", Value = "SubValue1_1" });
            pd2.ValidValues.Add(new CrcValidValue() { Label = "SubLabel1_2", Value = "SubValue1_2" });
            pd2.ValidValues.Add(new CrcValidValue() { Label = "SubLabel2_1", Value = "SubValue2_1" });
            pd2.ValidValues.Add(new CrcValidValue() { Label = "SubLabel2_2", Value = "SubValue2_2" });
            pd2.ValidValues.Add(new CrcValidValue() { Label = "SubLabel3_1", Value = "SubValue3_1" });
            repDefn.ParameterDefinitions.Add(pd1);
            repDefn.ParameterDefinitions.Add(pd2);

            // make choice collection
            var choiceCollection = new CrcParameterChoiceCollection();
            var paramChoice = new CrcParameterChoice("ParamOne");
            paramChoice.Values.Add("Value2");
            choiceCollection.ParameterChoiceList.Add( paramChoice);

            // make server side params to return
            ReportParameter p1 = new ReportParameter();
            p1.Name = "ParamOne";
            p1.ValidValues = new ValidValue[]{ new ValidValue(){Label = "Label1", Value = "Value1"},
                                    new ValidValue(){Label = "Label2", Value = "Value2"},
                                    new ValidValue(){Label = "Label3", Value = "Value3"}};
            p1.DefaultValues = new string[] { };
            ReportParameter p2 = new ReportParameter();
            p2.Name = "ParamTwo";
            p2.ValidValues = new ValidValue[]{ new ValidValue(){Label = "SubLabel2_1", Value = "SubValue2_1"},
                                    new ValidValue(){Label = "SubLabel2_2", Value = "SubValue2_2"}};
            p2.DefaultValues = new string[] { };
            ReportParameter[] paramArrayToReturn = new ReportParameter[] { p1, p2 };

            // make mocks for ccs
            var mf = new TestDoubles.MockSsrsWebServiceFactory();
            var soapClientFactory = mf.MakeMockSoapClientFactory(
                        mf.MakeMockReportingService2005Soap("Value2", paramArrayToReturn));

            var cacheMock = MockRepository.GenerateMock<CrcCacheManager>();
            var configMock = MockRepository.GenerateMock<CrcExtraConfiguration>();

            // make ccs
            var ccs = new CrissCrossServices(soapClientFactory, cacheMock, configMock, null);

            ccs.RefreshDependantParameters(repDefn, choiceCollection);

            Assert.AreEqual(2,repDefn.ParameterDefinitions.Count());
            var pd1check = repDefn.ParameterDefinitions.FirstOrDefault(p => p.Name == "ParamOne");
            Assert.IsNotNull(pd1check);
            Assert.AreEqual("Value2", pd1check.ParameterChoice.SingleValue);
            var pd2check = repDefn.ParameterDefinitions.FirstOrDefault(p => p.Name == "ParamTwo");
            Assert.IsNotNull(pd2check);
            Assert.AreEqual(2, pd2check.ValidValues.Count());
            Assert.IsNotNull(pd2check.ValidValues.FirstOrDefault( vv => vv.Value == "SubValue2_1"));
            Assert.IsNotNull(pd2check.ValidValues.FirstOrDefault( vv => vv.Value == "SubValue2_2"));
        }
        public void CanUpdateValidValues()
        {
            var pd = new CrcParameterDefinition();
            pd.Name = "TestParam";
            pd.ValidValues.Add(new CrcValidValue() { Label = "Label1", Value = "Value1" });
            pd.ValidValues.Add(new CrcValidValue() { Label = "Label2", Value = "Value2" });

            var newVV = new List<rws.ValidValue>();
            newVV.Add(new rws.ValidValue(){ Label = "Label3", Value = "Value3"});

            var r = new CrcParameterRefresher();
            r.UpdateValidValues(pd, newVV.ToArray());

            Assert.AreEqual(1, pd.ValidValues.Count());
            var checkVV = pd.ValidValues[0];
            Assert.AreEqual("Label3", checkVV.Label);
            Assert.AreEqual("Value3", checkVV.Value);
        }
        public void IsChoiceValid_CanDetectInValid()
        {
            var pd = new CrcParameterDefinition();
            pd.Name = "TestParam";
            pd.ValidValues.Add(new CrcValidValue() { Label = "Label1", Value = "Value1" });
            pd.ValidValues.Add(new CrcValidValue() { Label = "Label2", Value = "Value2" });
            pd.ValidValues.Add(new CrcValidValue() { Label = "Label3", Value = "Value3" });

            pd.ParameterChoice = new CrcParameterChoice(pd.Name);
            pd.ParameterChoice.Values.Add("Value1");
            pd.ParameterChoice.Values.Add("Value5");

            var r = new CrcParameterRefresher();
            bool valid = r.IsChoiceValid(pd);

            Assert.IsFalse(valid);
        }
示例#19
0
        private string SelectListAsString(CrcParameterDefinition paramDefn, int truncateListLimit)
        {
            StringBuilder sb = new StringBuilder();
            int count = 0;
            foreach (var valLoop in paramDefn.ParameterChoice.Values)
            {
                var vvMatch = paramDefn.ValidValues.FirstOrDefault(vv => vv.Value == valLoop);
                if (vvMatch == null)
                    throw new ApplicationException(string.Format("Param {0}: {1} is not a valid value", paramDefn.Name, valLoop));

                if (sb.Length > 0)
                    sb.Append(", ");
                sb.Append(vvMatch.Label);
                count += 1;
                if (truncateListLimit > 0 && count > truncateListLimit)
                {
                    sb.AppendFormat(" ... (and {0} others)", paramDefn.ParameterChoice.Values.Count() - count);
                    break;
                }
            }
            return sb.ToString();
        }
 private void AddEmptyEquivalent(CrcParameterDefinition crcParam, string emptyEquiv)
 {
     if (crcParam.ParameterType == CrcParameterType.MultiSelect ||
         crcParam.ParameterType == CrcParameterType.Select)
     {
         // add if valid value
         if (crcParam.ValidValues.FirstOrDefault(vv => vv.Value == emptyEquiv) != null)
             crcParam.EmptyEquivalentValues.Add(emptyEquiv);
     }
     else
         // just add
         crcParam.EmptyEquivalentValues.Add(emptyEquiv);
 }