public void ProcessResPlan_Should_ExecuteCorrectly()
        {
            // Arrange
            var rowsCount = 0;
            var builder   = new StringBuilder();
            var web       = new ShimSPWeb().Instance;
            var siteId    = Guid.NewGuid();
            var args      = new object[]
            {
                web, string.Empty, siteId, 1, string.Empty
            };

            ShimCoreFunctions.getConfigSettingSPWebString = (spWeb, setting) => "https://dummy.org/url";
            ShimResourcePlan.ProcessResourcePlanStringSPWebStringGuidInt32String =
                (resUrl, spWeb, planListString, id, hours, workDays) =>
            {
                var result = new ResourcePlanProcessingResult();
                result.ResourceLinks.Add(new ResourcePlanProcessingResult.ResourceLink());
                result.ResourceInfos.Add(new ResourcePlanProcessingResult.ResourceInfo());
                result.InfoMessages.Add(DummyString);
                result.ErrorMessages.Add(DummyString);
                return(result);
            };
            privateObject.SetFieldOrProperty("dtResLink", new DataTable());
            privateObject.SetFieldOrProperty("dtResInfo", new DataTable());
            privateObject.SetFieldOrProperty("sbErrors", builder);
            ShimDataRowCollection.AllInstances.AddObjectArray = (_, values) =>
            {
                rowsCount++;
                return(new ShimDataRow());
            };

            // Act
            privateObject.Invoke(processResPlanMethodName, args);

            // Assert
            this.ShouldSatisfyAllConditions(
                () => timerFix.bErrors.ShouldBeTrue(),
                () => rowsCount.ShouldBeGreaterThan(0),
                () => builder.ToString().ShouldNotBeNullOrEmpty());
        }
Beispiel #2
0
        public static ResourcePlanProcessingResult ProcessResourcePlan(
            string resourceUrl,
            SPWeb web,
            string resourcePlanListsString,
            Guid siteId,
            int hours,
            string workdays
            )
        {
            var result = new ResourcePlanProcessingResult();

            if (!string.IsNullOrWhiteSpace(resourceUrl))
            {
                result.ResourceLinks.Add(new ResourcePlanProcessingResult.ResourceLink(
                                             web.ServerRelativeUrl,
                                             resourceUrl,
                                             siteId,
                                             workdays,
                                             hours));

                if (!string.IsNullOrWhiteSpace(resourcePlanListsString))
                {
                    var resourcePlanListsCollection = resourcePlanListsString.Replace("\r\n", "\n").Split('\n');

                    foreach (var resourcePlanList in resourcePlanListsCollection)
                    {
                        if (!string.IsNullOrWhiteSpace(resourcePlanList))
                        {
                            result.InfoMessages.Add("Processing: " + resourcePlanList);
                            ProcessResourcePlanList(resourcePlanList, web, siteId, ref result);
                        }
                    }
                }
            }

            return(result);
        }
Beispiel #3
0
        private static void ProcessResourcePlanList(string resourcePlanList, SPWeb web, Guid siteId, ref ResourcePlanProcessingResult result)
        {
            try
            {
                var list  = web.Lists[resourcePlanList];
                var query = new SPQuery();
                query.Query = "<Where><And><And><And><IsNotNull><FieldRef Name=\"StartDate\"/></IsNotNull><IsNotNull><FieldRef Name=\"DueDate\"/></IsNotNull></And><IsNotNull><FieldRef Name=\"Work\"/></IsNotNull></And><IsNotNull><FieldRef Name=\"AssignedTo\"/></IsNotNull></And></Where>";

                foreach (SPListItem listItem in list.GetItems(query))
                {
                    var resourceInfos = ProcessResourcePlanListItem(listItem, list, web, siteId, resourcePlanList);
                    foreach (var resourceInfo in resourceInfos)
                    {
                        result.ResourceInfos.Add(resourceInfo);
                    }
                }
            }
            catch (Exception ex)
            {
                WriteTrace(
                    Area.EPMLiveCore,
                    Categories.EPMLiveCore.TimerJob,
                    TraceSeverity.High,
                    string.Format("StackTrace-{0}{1}Message-{2}", ex.StackTrace, Environment.NewLine, ex.Message));

                if (ex.Message != "Value does not fall within the expected range.")
                {
                    result.ErrorMessages.Add(ex.Message);
                }
            }
        }