Example #1
0
 /// <summary>
 /// This method attaches additional properties to the workflow and saves it to Database
 /// </summary>
 /// <param name="WorkFlow"></param>
 /// <returns></returns>
 public static StatusReplyDC CreateAndUploadWorkFlow(StoreLibraryAndActivitiesRequestDC workflow)
 {
     workflow.Incaller = Environment.UserName;
     workflow.IncallerVersion = incallerversion;
     workflow.InInsertedByUserAlias = Environment.UserName;
     workflow.InUpdatedByUserAlias = Environment.UserName;
     var result = new StatusReplyDC();
     //Save WF
     result = CWF.BAL.Services.UploadActivityLibraryAndDependentActivities(workflow)[0].StatusReply;
     return result;
 }
Example #2
0
        /// <summary>
        /// Examines a dependency tree to determine if the state of the dependencies is compatible
        /// with the state of the StoreActivity records being persisted/checked.
        /// 
        /// -- "Retired" in any dependency means that the entire tree is invalid.
        /// -- "Private" in any dependency when going public means the tree is invalid.
        /// 
        /// </summary>
        /// <param name="request">The tree to examine.</param>
        /// <returns>A tuple containing true if everything passed, or false and a message if the tests failed.</returns>
        public static Tuple<bool, string> CheckDependencyRules(StoreLibraryAndActivitiesRequestDC request)
        {
            Action<List<StoreActivityLibraryDependenciesGroupsRequestDC>> findDependencies = null;
            var allDependencies = new Dictionary<Tuple<string, string>, StoreActivityLibraryDependenciesGroupsRequestDC>();
            bool hasInvalidDependencyState;
            bool hasRetiredState;
            string message = String.Empty;

            findDependencies = list =>
              {
                  if (null != list)
                      list.ForEach(item =>
                      {
                          var key = new Tuple<string, string>(item.Name, item.Version);

                          if (!allDependencies.ContainsKey(key))
                              allDependencies.Add(key, item);
                          findDependencies(item.List);
                      });
              };

            findDependencies(request.StoreActivityLibraryDependenciesGroupsRequestDC.List);
            GetMissingDependencyStates(allDependencies.Values);

            if (request.StoreActivitiesList.Any())
            {
                var rootVersions = request
                                 .StoreActivitiesList
                                 .Select(item => GetWorkflowRecordState(item.StatusCodeName));
                var mostRestrictiveRootState = rootVersions.Min();

                hasInvalidDependencyState = allDependencies.Values.Any(entry => GetWorkflowRecordState(entry.Status) < mostRestrictiveRootState);
                if (hasInvalidDependencyState)
                    message += string.Format(InvalidDependencyStateMessage, mostRestrictiveRootState);

                hasRetiredState = allDependencies.Values.Any(entry => GetWorkflowRecordState(entry.Status) == WorkflowRecordState.Retired);
                if (hasRetiredState)
                    message += HasRetiredStateMessage;

                return new Tuple<bool, string>(!(hasInvalidDependencyState || hasRetiredState), message.Trim());
            }

            return new Tuple<bool, string>(true, string.Empty);
        }
        public void CreateNewProjectWithExistingName()
        {
            //Create WF with private AL, private SA
            var workflow = new StoreLibraryAndActivitiesRequestDC();
            workflow.ActivityLibrary = VersionControlHelper.GetActivityLibraryDC(privatestate, privatestatusid);
            var StoreActList = new System.Collections.Generic.List<StoreActivitiesDC>();
            var storeAct = VersionControlHelper.GetStoreActivitiesDC(workflow.ActivityLibrary, 1);
            StoreActList.Add(storeAct);
            workflow.StoreActivitiesList = StoreActList;

            var result = VersionControlHelper.CreateAndUploadWorkFlow(workflow);
            Assert.AreEqual(0, result.Errorcode);
            //get WF, check version for both SA and AL
            var reply = VersionControlHelper.GetProjectInfo(workflow.ActivityLibrary, workflow.StoreActivitiesList);
            //Check status and version
            VersionControlHelper.CheckOutput(reply, privatestate, "0.0.0.1", privatestatusid);
            //Create again with similar name as previous one
            //Create WF with private AL, private SA
            var newworkflow = new StoreLibraryAndActivitiesRequestDC();
            newworkflow.ActivityLibrary = VersionControlHelper.GetActivityLibraryDCWithName(privatestate, privatestatusid, workflow.ActivityLibrary.Name);
            List<StoreActivitiesDC> NewStoreActList = new System.Collections.Generic.List<StoreActivitiesDC>();
            StoreActivitiesDC NewstoreAct = VersionControlHelper.GetStoreActivitiesDC(newworkflow.ActivityLibrary, 1);
            StoreActList.Add(NewstoreAct);
            newworkflow.StoreActivitiesList = NewStoreActList;

            newworkflow.Incaller = Environment.UserName;
            newworkflow.IncallerVersion = incallerversion;
            newworkflow.InInsertedByUserAlias = Environment.UserName;
            newworkflow.InUpdatedByUserAlias = Environment.UserName;
            StatusReplyDC Newresult = new StatusReplyDC();
            //Save WF
            string version = CWF.BAL.Versioning.VersionHelper.GetNextVersion(NewstoreAct).ToString();
            newworkflow.ActivityLibrary.VersionNumber = version;
            Newresult = CWF.BAL.Services.UploadActivityLibraryAndDependentActivities(newworkflow)[0].StatusReply;
            //Expect error
            Assert.AreEqual(0, Newresult.Errorcode);
        }
        /// <summary>
        /// Verify UploadActivityLibrariesAndDependentActivities FROM etblActivityLibraries Table
        /// </summary>
        private void VerifyUploadActivityLibraryAndDependentActivities(string incaller, int errorCode)
        {
            storeLibraryAndActivitiesRequest = new StoreLibraryAndActivitiesRequestDC();
              //  reply = null;

            storeLibraryAndActivitiesRequest.IncallerVersion = IN_CALLER_VERSION;
            storeLibraryAndActivitiesRequest.Incaller = incaller;
            storeLibraryAndActivitiesRequest.InInsertedByUserAlias = USER;
            storeLibraryAndActivitiesRequest.InUpdatedByUserAlias = USER;

            // Create ActivityLibrary object and add to request object
            ActivityLibraryDC activityLibraryDC = new ActivityLibraryDC();

            // create storeActivitiesDC list and individual objects and add to request
            List<StoreActivitiesDC> storeActivitiesDCList = new List<StoreActivitiesDC>();
            StoreActivitiesDC storeActivitiesDC = new StoreActivitiesDC();

            CreateActivityLibraryAndStoreActivities(out activityLibraryDC, out storeActivitiesDCList);

            storeLibraryAndActivitiesRequest.ActivityLibrary = activityLibraryDC;
            storeLibraryAndActivitiesRequest.StoreActivityLibraryDependenciesGroupsRequestDC = CreateStoreActivityLibraryDependenciesGroupsRequestDC();
            storeLibraryAndActivitiesRequest.StoreActivitiesList = storeActivitiesDCList;

            storeActivitiesDCList.ForEach(record => record.Version = VersionHelper.GetNextVersion(record).ToString());

            try
            {
                replyList = new List<StoreActivitiesDC>(devBranchProxy.UploadActivityLibraryAndDependentActivities(storeLibraryAndActivitiesRequest));
            }
            catch (FaultException e)
            {
                Assert.Fail("Failed to upload from etblActivityLibraries: {0}", e.Message);
            }
            catch (Exception ex)
            {
                Assert.Fail("Failed to upload from etblActivityLibraries: {0}", ex.Message);
            }

            Assert.IsNotNull(replyList, "Reply is null");
            Assert.AreEqual(errorCode, replyList[0].StatusReply.Errorcode, "UploadActivityLibraryAndDependentActivities not successful.");
        }
        public void SavePublicProjectAndThenMakeItPrivate()
        {
            //Create WF with private SA, and AL
            string expectedVersion = "0.1.0.0";
            var workflow = new StoreLibraryAndActivitiesRequestDC();
            workflow.ActivityLibrary = VersionControlHelper.GetActivityLibraryDC(publicstate, publicstatusid);
            workflow.ActivityLibrary.VersionNumber = expectedVersion;
            var StoreActList = new System.Collections.Generic.List<StoreActivitiesDC>();
            var storeAct = VersionControlHelper.GetStoreActivitiesDC(workflow.ActivityLibrary, 1);
            StoreActList.Add(storeAct);
            workflow.StoreActivitiesList = StoreActList;

            var result = VersionControlHelper.CreateAndUploadWorkFlow(workflow);
            Assert.AreEqual(0, result.Errorcode);
            //get WF, check version for both SA and AL
            var reply = VersionControlHelper.GetProjectInfo(workflow.ActivityLibrary, workflow.StoreActivitiesList);
            //Check status and version
            VersionControlHelper.CheckOutput(reply, publicstate, "0.1.0.0", publicstatusid);
            //Now change status to private
            workflow.ActivityLibrary = VersionControlHelper.GetActivityLibraryDC(privatestate, privatestatusid);
            workflow.StoreActivitiesList[0] = VersionControlHelper.GetStoreActivitiesDC(workflow.ActivityLibrary, 1);
            //Save
            string version = CWF.BAL.Versioning.VersionHelper.GetNextVersion(storeAct).ToString();
            workflow.ActivityLibrary.VersionNumber = version;
            workflow.StoreActivitiesList[0].Version = version;
            result = CWF.BAL.Services.UploadActivityLibraryAndDependentActivities(workflow)[0].StatusReply;
            Assert.AreEqual(0, result.Errorcode);
            //Get
            reply = VersionControlHelper.GetProjectInfo(workflow.ActivityLibrary, workflow.StoreActivitiesList);
            //assert on status and version 0.1.0.1
            VersionControlHelper.CheckOutput(reply, privatestate, "0.2.0.0", privatestatusid);
        }
 public void SaveProjectAsPublic()
 {
     //Create WF with public status, public AL, public SA
     string expectedVersion = "0.1.0.0";
     var workflow = new StoreLibraryAndActivitiesRequestDC();
     workflow.ActivityLibrary = VersionControlHelper.GetActivityLibraryDC(publicstate, publicstatusid);
     workflow.ActivityLibrary.VersionNumber = expectedVersion;
     var StoreActList = new System.Collections.Generic.List<StoreActivitiesDC>();
     var storeAct = VersionControlHelper.GetStoreActivitiesDC(workflow.ActivityLibrary, 1);
     StoreActList.Add(storeAct);
     workflow.StoreActivitiesList = StoreActList;
     var result = VersionControlHelper.CreateAndUploadWorkFlow(workflow);
     Assert.AreEqual(0, result.Errorcode);
     //get  AL and SA info
     var reply = VersionControlHelper.GetProjectInfo(workflow.ActivityLibrary, workflow.StoreActivitiesList);
     //assert on all public status and version of WF is 0.1.0.0
     VersionControlHelper.CheckOutput(reply, publicstate, expectedVersion, publicstatusid);
     //Now change status to public
     workflow.ActivityLibrary = VersionControlHelper.GetActivityLibraryDC(publicstate, publicstatusid);
     workflow.StoreActivitiesList[0] = VersionControlHelper.GetStoreActivitiesDC(workflow.ActivityLibrary, 1);
     //Save
     string version = CWF.BAL.Versioning.VersionHelper.GetNextVersion(storeAct).ToString();
     workflow.ActivityLibrary.VersionNumber = version;
     workflow.StoreActivitiesList[0].Version = version;
     result = CWF.BAL.Services.UploadActivityLibraryAndDependentActivities(workflow)[0].StatusReply;
     Assert.AreEqual(0, result.Errorcode);
     //Get
     reply = VersionControlHelper.GetProjectInfo(workflow.ActivityLibrary, workflow.StoreActivitiesList);
     //assert on status and version 0.1.0.0..zeroing out revision number when going public
     VersionControlHelper.CheckOutput(reply, publicstate, "0.2.0.0", publicstatusid);
 }
 public void SaveProjectAsPrivate()
 {
     //Create WF with private AL, private SA
     var workflow = new StoreLibraryAndActivitiesRequestDC();
     workflow.ActivityLibrary = VersionControlHelper.GetActivityLibraryDC(privatestate, privatestatusid);
     var StoreActList = new System.Collections.Generic.List<StoreActivitiesDC>();
     var storeAct = VersionControlHelper.GetStoreActivitiesDC(workflow.ActivityLibrary, 1);
     StoreActList.Add(storeAct);
     workflow.StoreActivitiesList = StoreActList;
     var result = VersionControlHelper.CreateAndUploadWorkFlow(workflow);
     Assert.AreEqual(0, result.Errorcode);
     //get AL and SA info
     var reply = VersionControlHelper.GetProjectInfo(workflow.ActivityLibrary, workflow.StoreActivitiesList);
     //assert on all private status and version of WF is 0.0.0.1, version of both AL and stored activity should be same.
     VersionControlHelper.CheckOutput(reply, privatestate, "0.0.0.1", privatestatusid);
     //Now change status to private
     workflow.ActivityLibrary = VersionControlHelper.GetActivityLibraryDC(privatestate, privatestatusid);
     workflow.StoreActivitiesList[0] = VersionControlHelper.GetStoreActivitiesDC(workflow.ActivityLibrary, 1);
     //Save
     string version = CWF.BAL.Versioning.VersionHelper.GetNextVersion(storeAct).ToString();
     workflow.ActivityLibrary.VersionNumber = version;
     workflow.StoreActivitiesList[0].Version = version;
     result = CWF.BAL.Services.UploadActivityLibraryAndDependentActivities(workflow)[0].StatusReply;
     Assert.AreEqual(0, result.Errorcode);
     //Get
     reply = VersionControlHelper.GetProjectInfo(workflow.ActivityLibrary, workflow.StoreActivitiesList);
     //assert on status and version 0.1.0.1
     VersionControlHelper.CheckOutput(reply, privatestate, "0.0.0.2", privatestatusid);
 }
        public void PublishProject()
        {
            //Create WF with private AL, private SA
            var workflow = new StoreLibraryAndActivitiesRequestDC();
            workflow.ActivityLibrary = VersionControlHelper.GetActivityLibraryDC(privatestate, privatestatusid);
            var StoreActList = new System.Collections.Generic.List<StoreActivitiesDC>();
            var storeAct = VersionControlHelper.GetStoreActivitiesDC(workflow.ActivityLibrary, 1);
            StoreActList.Add(storeAct);
            workflow.StoreActivitiesList = StoreActList;

            var result = VersionControlHelper.CreateAndUploadWorkFlow(workflow);
            Assert.AreEqual(0, result.Errorcode);
            //get WF, check version for both SA and AL
            var reply = VersionControlHelper.GetProjectInfo(workflow.ActivityLibrary, workflow.StoreActivitiesList);
            //Check status and version
            VersionControlHelper.CheckOutput(reply, privatestate, "0.0.0.1", privatestatusid);
            //Publish Project

            //assert the status is now public in DB with status revised as 0.1.0.0
            var Newreply = VersionControlHelper.GetProjectInfo(workflow.ActivityLibrary, workflow.StoreActivitiesList);
            //Check status and version
            VersionControlHelper.CheckOutput(Newreply, publicstate, "0.1.0.1", publicstatusid);
        }
        public static void MyClassInitialize(TestContext testContext)
        {
            string nameModifier = "Test_" + Guid.NewGuid().ToString();
            CWF.DataContracts.StoreLibraryAndActivitiesRequestDC request = new CWF.DataContracts.StoreLibraryAndActivitiesRequestDC();
            List<CWF.DataContracts.StoreActivitiesDC> reply = null;

            request.IncallerVersion = INCALLERVERSION;
            request.Incaller = INCALLER;
            request.InInsertedByUserAlias = INCALLER;
            request.InUpdatedByUserAlias = INCALLER;
            request.EnforceVersionRules = true;

            // Create ActivityLibrary object and add to request object
            CWF.DataContracts.ActivityLibraryDC activityLibraryDC = new CWF.DataContracts.ActivityLibraryDC();

            // create storeActivitiesDC list and individual objects and add to request
            List<CWF.DataContracts.StoreActivitiesDC> storeActivitiesDCList = new List<CWF.DataContracts.StoreActivitiesDC>();
            CWF.DataContracts.StoreActivitiesDC storeActivitiesDC = new CWF.DataContracts.StoreActivitiesDC();
            DALUnitTest.CreateActivityLibraryAndStoreActivities(out activityLibraryDC, out storeActivitiesDCList);
            request.ActivityLibrary = activityLibraryDC;
            request.StoreActivitiesList = storeActivitiesDCList;
            request.StoreActivitiesList.ForEach(record =>
            {
                record.Name += nameModifier;
                record.ActivityLibraryName += nameModifier;
                record.ShortName += nameModifier;

            });

            activityLibraryDC.Name += nameModifier;

            request.StoreActivityLibraryDependenciesGroupsRequestDC = new StoreActivityLibraryDependenciesGroupsRequestDC()
            {
                Name = activityLibraryDC.Name,
                Version = activityLibraryDC.VersionNumber,
                List = new List<StoreActivityLibraryDependenciesGroupsRequestDC>
                {
                    new StoreActivityLibraryDependenciesGroupsRequestDC
                    {
                        IncallerVersion = INCALLERVERSION,
                        Incaller = INCALLER,
                        Name = "PublishingInfo",
                        Version = "1.0.0.1"
                    },
                }
            };
            reply = CWF.BAL.Services.UploadActivityLibraryAndDependentActivities(request);
            Assert.IsNotNull(reply);
            activityId = reply[0].Id;
            Assert.IsTrue(activityId > 0);

            //Test Create or Update
            Guid taskGuid = Guid.NewGuid();
            TaskActivityDC reply1 = null;
            TaskActivityDC request1 = new TaskActivityDC()
            {
                ActivityId = activityId,
                Guid = taskGuid,
                Incaller = INCALLER,
                IncallerVersion = INCALLERVERSION,
                AssignedTo = OWNER
            };
            try
            {
                reply1 = TaskActivityRepositoryService.TaskActivitiesCreateOrUpdate(request1);
            }
            catch (Exception ex)
            {
                string faultMessage = ex.Message;
                Assert.Fail(faultMessage + "-catch exception in reply = TaskActivityRepository.CreateOrUpdate(request)");
            }
            Assert.IsNotNull(reply1);
            Assert.IsTrue(reply1.Id > 0);
            Assert.AreEqual(SprocValues.REPLY_ERRORCODE_VALUE_OK, reply1.StatusReply.Errorcode);
        }
Example #10
0
        public void TESTBalUploadActivityLibraryAndDependentActivitiesRepeat()
        {
            var nameModifier = Guid.NewGuid().ToString();
            CWF.DataContracts.StoreLibraryAndActivitiesRequestDC request = new CWF.DataContracts.StoreLibraryAndActivitiesRequestDC();
            List<CWF.DataContracts.StoreActivitiesDC> reply = null;

            request.IncallerVersion = INCALLERVERSION;
            request.Incaller = INCALLER;
            request.InInsertedByUserAlias = INCALLER;
            request.InUpdatedByUserAlias = INCALLER;
            request.EnforceVersionRules = true;

            // Create ActivityLibrary object and add to request object
            CWF.DataContracts.ActivityLibraryDC activityLibraryDC = new CWF.DataContracts.ActivityLibraryDC();

            // create storeActivitiesDC list and individual objects and add to request
            List<CWF.DataContracts.StoreActivitiesDC> storeActivitiesDCList = new List<CWF.DataContracts.StoreActivitiesDC>();
            CWF.DataContracts.StoreActivitiesDC storeActivitiesDC = new CWF.DataContracts.StoreActivitiesDC();
            CreateActivityLibraryAndStoreActivities(out activityLibraryDC, out storeActivitiesDCList);
            request.ActivityLibrary = activityLibraryDC;
            request.StoreActivitiesList = storeActivitiesDCList;
            request.StoreActivitiesList.ForEach(record =>
            {
                record.Name += nameModifier;
                record.ActivityLibraryName += nameModifier;
                record.ShortName += nameModifier;

            });

            activityLibraryDC.Name = "PublishingInfo";
            activityLibraryDC.VersionNumber = "1.0.0.1";

            request.StoreActivityLibraryDependenciesGroupsRequestDC = new StoreActivityLibraryDependenciesGroupsRequestDC()
            {
                Name = activityLibraryDC.Name,
                Version = activityLibraryDC.VersionNumber,
                List = new List<StoreActivityLibraryDependenciesGroupsRequestDC>
                {
                    new StoreActivityLibraryDependenciesGroupsRequestDC
                    {
                        IncallerVersion = INCALLERVERSION,
                        Incaller = INCALLER,
                        Name = "PublishingInfo",
                        Version = "1.0.0.1"
                    },
                }
            };

            try
            {
                reply = CWF.BAL.Services.UploadActivityLibraryAndDependentActivities(request);
            }
            catch (Exception ex)
            {
                string faultMessage = ex.Message;
                Assert.Fail(faultMessage + "-catch (Exception ex) on reply = CWF.BAL.Services.UploadActivityLibraryAndDependentActivities(request);");
            }
            Assert.IsNotNull(reply);
        }
Example #11
0
        public void TESTBalUploadActivityLibraryAndDependentActivitiesAndUpdateVersionAndSaveStoreActivitiesFailed()
        {
            //var nameModifier = Guid.NewGuid().ToString();
            CWF.DataContracts.StoreLibraryAndActivitiesRequestDC request = new CWF.DataContracts.StoreLibraryAndActivitiesRequestDC();
            List<CWF.DataContracts.StoreActivitiesDC> reply = null;

            request.IncallerVersion = INCALLERVERSION;
            request.Incaller = INCALLER;
            request.InInsertedByUserAlias = INCALLER;
            request.InUpdatedByUserAlias = INCALLER;
            request.EnforceVersionRules = false;

            // Create ActivityLibrary object and add to request object
            CWF.DataContracts.ActivityLibraryDC activityLibraryDC = new CWF.DataContracts.ActivityLibraryDC();

            // create storeActivitiesDC list and individual objects and add to request
            List<CWF.DataContracts.StoreActivitiesDC> storeActivitiesDCList = new List<CWF.DataContracts.StoreActivitiesDC>();
            CWF.DataContracts.StoreActivitiesDC storeActivitiesDC = new CWF.DataContracts.StoreActivitiesDC();
            CreateActivityLibraryAndStoreActivities(out activityLibraryDC, out storeActivitiesDCList);
            request.ActivityLibrary = activityLibraryDC;
            request.StoreActivitiesList = new List<StoreActivitiesDC> { CreateSA(string.Empty, string.Empty, new Guid(), activityLibraryDC.Name, activityLibraryDC.VersionNumber) };

            request.StoreActivityLibraryDependenciesGroupsRequestDC = new StoreActivityLibraryDependenciesGroupsRequestDC()
            {
                Name = activityLibraryDC.Name,
                Version = activityLibraryDC.VersionNumber,
                List = new List<StoreActivityLibraryDependenciesGroupsRequestDC>
                {
                    new StoreActivityLibraryDependenciesGroupsRequestDC
                    {
                        IncallerVersion = INCALLERVERSION,
                        Incaller = INCALLER,
                        Name = "PublishingInfo",
                        Version = "1.0.0.1"
                    },
                }
            };

            try
            {
                reply = CWF.BAL.Services.UploadActivityLibraryAndDependentActivities(request);
            }
            catch (Exception ex)
            {
                string faultMessage = ex.Message;
                Assert.Fail(faultMessage + "-catch (Exception ex) on reply = CWF.BAL.Services.UploadActivityLibraryAndDependentActivities(request);");
            }
            Assert.IsNotNull(reply);
            Assert.AreEqual(reply[0].StatusReply.Errorcode, 55106);
        }
Example #12
0
        public void TestFillInMissingStatuses()
        {
            var workflowName = "Test " + Guid.NewGuid().ToString();
            var testWorkflow = CreateTestStoreActivity(workflowName, TestVersionString, false);
            var testDependencyName = "Test Dependency " + Guid.NewGuid().ToString();
            //var testDependency = CreateTestStoreActivity(testDependencyName, TestVersionString, true);

            var request = new StoreLibraryAndActivitiesRequestDC();

            request.StoreActivitiesList = new List<StoreActivitiesDC>();
            request.StoreActivitiesList.Add(testWorkflow);

            request.StoreActivityLibraryDependenciesGroupsRequestDC = new StoreActivityLibraryDependenciesGroupsRequestDC();

            request.StoreActivityLibraryDependenciesGroupsRequestDC.List = new List<StoreActivityLibraryDependenciesGroupsRequestDC>();
            CreateTestDependencies(request.StoreActivityLibraryDependenciesGroupsRequestDC.List);

            var item = request.StoreActivityLibraryDependenciesGroupsRequestDC.List[1];

            item.Status = String.Empty;
            item.Name = testDependencyName;
            item.Version = "1.0.0.0";

            using (ImplementationOfType impl = new ImplementationOfType(typeof(Database)))
            {
                var table = new System.Data.DataTable();
                DataReaderMock mockReader;

                table.Columns.Add("AuthGroupId", typeof(int));
                table.Columns.Add("AuthGroupName", typeof(string));
                table.Columns.Add("Category", typeof(Guid));
                table.Columns.Add("CategoryId", typeof(int));
                table.Columns.Add("Description", typeof(string));
                table.Columns.Add("Executable", typeof(byte[]));
                table.Columns.Add("Guid", typeof(Guid));
                table.Columns.Add("HasActivities", typeof(bool));
                table.Columns.Add("Id", typeof(string));
                table.Columns.Add("ImportedBy", typeof(string));
                table.Columns.Add("MetaTags", typeof(string));
                table.Columns.Add("Name", typeof(string));
                table.Columns.Add("Status", typeof(int));
                table.Columns.Add("StatusName", typeof(string));
                table.Columns.Add("VersionNumber", typeof(string));
                table.Columns.Add("FriendlyName", typeof(string));
                table.Columns.Add("ReleaseNotes", typeof(string));

                table.Rows.Add(
                                0,
                                String.Empty,
                                Guid.Empty,
                                0,
                                String.Empty,
                                DBNull.Value,
                                Guid.Empty,
                                false,
                                0,
                                String.Empty,
                                String.Empty,
                                testDependencyName,
                                0,
                                DefaultStatusCodeName,
                                String.Empty,
                                String.Empty,
                                String.Empty
                              );

                mockReader = new DataReaderMock(table);

                impl.Register<Database>(inst => inst.ExecuteReader(Argument<DbCommand>.Any)).Return(mockReader);

                VersionHelper.GetMissingDependencyStates(request.StoreActivityLibraryDependenciesGroupsRequestDC.List);

                Assert.IsFalse(request
                                 .StoreActivityLibraryDependenciesGroupsRequestDC
                                 .List
                                 .Any(resultItem => string.IsNullOrEmpty(item.Status)),
                                 "All items should have their status property filled in.");

            }
        }
Example #13
0
        public void TestCheckDependencyRules()
        {
            var workflowName = "Test " + Guid.NewGuid().ToString();
            var testWorkflow = CreateTestStoreActivity(workflowName, TestVersionString, false);

            var request = new StoreLibraryAndActivitiesRequestDC();

            request.StoreActivitiesList = new List<StoreActivitiesDC>();
            request.StoreActivitiesList.Add(testWorkflow);

            request.StoreActivityLibraryDependenciesGroupsRequestDC = new StoreActivityLibraryDependenciesGroupsRequestDC();

            Action createTree = () =>
            {
                // create a dependency tree 3 levels deep, 10 items wide
                request.StoreActivityLibraryDependenciesGroupsRequestDC.List = new List<StoreActivityLibraryDependenciesGroupsRequestDC>();
                CreateTestDependencies(request.StoreActivityLibraryDependenciesGroupsRequestDC.List);

                request
                    .StoreActivityLibraryDependenciesGroupsRequestDC
                    .List
                    .ForEach(dependency =>
                    {
                        dependency.List = new List<StoreActivityLibraryDependenciesGroupsRequestDC>();
                        CreateTestDependencies(dependency.List);

                        dependency
                           .List
                           .ForEach(dependency2 =>
                           {
                               dependency2.List = new List<StoreActivityLibraryDependenciesGroupsRequestDC>();
                               CreateTestDependencies(dependency2.List);
                           });
                    });
            };

            // everything should be Public for a new tree. The test should pass.
            createTree();
            testWorkflow.StatusCodeName = "Public";
            Assert.IsTrue(VersionHelper.CheckDependencyRules(request).Item1, "Expected all Public to pass the test");

            // with one item in the tree as private, the rule should fail.
            testWorkflow.StatusCodeName = "Public";
            createTree();
            request
                .StoreActivityLibraryDependenciesGroupsRequestDC
                .List[5]
                .List[7].Status = "Private";   // set an arbitrary item to Private
            Assert.IsFalse(VersionHelper.CheckDependencyRules(request).Item1, "Expected all Public but with one set to Private to fail the test.");

            // with one item in the tree as private, the rule should fail.
            testWorkflow.StatusCodeName = "Public";
            createTree();
            request
                .StoreActivityLibraryDependenciesGroupsRequestDC
                .List[2]
                .List[7].Status = "Retired";   // set an arbitrary item to Retired
            Assert.IsFalse(VersionHelper.CheckDependencyRules(request).Item1, "Expected all Public but with one set to Retired to fail the test.");
        }