Example #1
0
        public void should_request_items_with_correct_options()
        {
            // Arrange
            var configData = new IntegrationConfigData("server", "list", "templateID")
            {
                ItemLimit = 100500,
                Folder    = "SomeFolder",
                View      = "SomeView"
            };

            var context          = Substitute.For <SpContext>();
            var list             = Substitute.For <BaseList>(new EntityValues(), context, new Uri("http://empty"));
            var myItemCollection = new MyItemCollection(context, list, new ItemsRetrievingOptions());

            list.GetItems(Arg.Any <ItemsRetrievingOptions>()).Returns(myItemCollection);

            this.sharepointListProvider.GetList(string.Empty, string.Empty, null).ReturnsForAnyArgs(list);

            var args = new SynchronizeTreeArgs
            {
                Context = this.CreateSynchContext(configData)
            };

            // Act
            this.processor.Process(args);

            // Assert
            list.Received().GetItems(Arg.Is <ItemsRetrievingOptions>(x => x.ItemLimit == configData.ItemLimit && x.Folder == configData.Folder && x.ViewName == configData.View));
        }
        private SynchronizeTreeArgs CreateArgsWithDefaultEntries(Actions actions = null, bool stubsTableProvider = true)
        {
            var args = new SynchronizeTreeArgs();

            if (actions != null)
            {
                args.ActionList = this.CreateActions(actions);
            }

            var context = this.CreateSynchContext(new IntegrationConfigData("server", "list", "templateID"));

            args.Context = context;
            var saveEntries = new List <IDTableEntry> {
                new IDTableEntry(PrefixSave, ID.NewID.ToString(), ID.NewID, context.ParentID, "ChangedGUID")
            };
            var deleteEntries = new List <IDTableEntry> {
                new IDTableEntry(PrefixDelete, ID.NewID.ToString(), ID.NewID, context.ParentID, "DeletedGUID")
            };

            args.CustomData["IDTableEntries"] = new Dictionary <string, List <IDTableEntry> >
            {
                { PrefixSave, saveEntries },
                { PrefixDelete, deleteEntries }
            };

            if (stubsTableProvider)
            {
                this.tableProvider.GetKeys(PrefixSave, Arg.Any <ID>()).Returns(saveEntries.ToArray());
                this.tableProvider.GetKeys(PrefixDelete, Arg.Any <ID>()).Returns(deleteEntries.ToArray());
            }

            return(args);
        }
Example #3
0
 public void Init(SynchronizeTreeArgs args)
 {
     args.CustomData[IdTableEntries] = new Dictionary <string, List <IDTableEntry> >
     {
         { PrefixSave, this.GetEntries(PrefixSave, args.Context.ParentID) },
         { PrefixDelete, this.GetEntries(PrefixDelete, args.Context.ParentID) }
     };
 }
        public void should_throw_if_config_item_is_not_specified()
        {
            // Arrange
            var processor = new GetSitecoreItemList();
            var args      = new SynchronizeTreeArgs();

            // Act
            Action action = () => processor.Process(args);

            // Assert
            action.ShouldThrow <InvalidOperationException>().WithMessage("Value can't be null: args.Context");
        }
        public static void SynchronizeTree(ProcessIntegrationItemsOptions processIntegrationItemsOptions, SynchContext synchContext)
        {
            Assert.ArgumentNotNull(processIntegrationItemsOptions, "processIntegrationItemsOptions");
            Assert.ArgumentNotNull(synchContext, "synchContext");

            var pipelineArgs = new SynchronizeTreeArgs
            {
                Context = synchContext,
                Options = processIntegrationItemsOptions
            };

            SynchronizeTree(pipelineArgs);
        }
 private static void SynchronizeTree(SynchronizeTreeArgs pipelineArgs)
 {
     try
     {
         PipelineRunner.AssertRun(PipelineNames.SynchronizeTree, pipelineArgs);
     }
     catch (Exception exception)
     {
         LogMessage(
             exception,
             "Sharepoint Provider can't process tree.{1}{0}",
             LogMessageFormatter.FormatIntegrationConfigItemID02(pipelineArgs.Context),
             Environment.NewLine);
     }
 }
Example #7
0
        public void should_return_right_delete_integration_item_action()
        {
            // Arrange
            var syncActionFactory = new SyncActionFactory();

            var args            = new SynchronizeTreeArgs();
            var integrationItem = TestHelper.CreateSitecoreItemsList(new TestHelper.Items {
                "1"
            }).First();

            // Act
            var action = syncActionFactory.GetDeleteIntegrationItemAction(args, integrationItem);

            // Assert
            action.Should().Match <DeleteIntegrationItemAction>(x => x.Item == integrationItem);
        }
Example #8
0
        public void should_return_right_create_sharepoint_item_action()
        {
            // Arrange
            var syncActionFactory = new SyncActionFactory();

            var args            = new SynchronizeTreeArgs();
            var integrationItem = TestHelper.CreateSitecoreItemsList(new TestHelper.Items {
                { "1", string.Empty }
            }).First();

            // Act
            var action = syncActionFactory.GetCreateSharepointItemAction(args, integrationItem);

            // Assert
            action.Should().Match <CreateSharepointItemAction>(x => x.Item == integrationItem);
        }
        public void should_should_not_fill_args_with_not_integration_items_only()
        {
            // Arrange
            var processor = new GetSitecoreItemList();

            var args = new SynchronizeTreeArgs {
                Context = CreateSyncContext()
            };

            // Act
            processor.Process(args);

            // Assert
            args.IntegrationItems.Should().NotBeNull();
            args.IntegrationItems.Select(x => x.Name).Should().NotContain("notIntegrationItem");
        }
        public void should_abort_pipeline_if_parent_is_disabled(bool rootParent, bool directParent, bool pipelineAborted)
        {
            // Arrange
            var configurationItem = this.PrepareDbWithThreeLevelTree(rootParent, directParent, true);

            var args = new SynchronizeTreeArgs {
                Context = new SynchContext(configurationItem)
            };

            var processor = new IsActiveTree();

            // Act
            processor.Process(args);

            // Assert
            args.Aborted.Should().Be(pipelineAborted);
        }
        public void should_abort_pipeline_if_config_item_is_disabled(bool isEnabled)
        {
            // Arrange
            var configurationItem = new ItemMock().AsConfigurationItem(null, string.Empty, isEnabled);

            var args = new SynchronizeTreeArgs {
                Context = new SynchContext(configurationItem)
            };

            var processor = new IsActiveTree();

            // Act
            processor.Process(args);

            // Assert
            args.Aborted.Should().Be(!isEnabled);
        }
Example #12
0
        public void Refresh(SynchronizeTreeArgs args)
        {
            Assert.ArgumentNotNull(args, "args");
            Assert.IsNotNull(args.ActionList, "Value can't be null: args.ActionList");

            var dictionary   = (Dictionary <string, List <IDTableEntry> >)args.CustomData[IdTableEntries];
            var tableEntries = dictionary.SelectMany(x => x.Value).Where(x => x.ParentID == args.Context.ParentID).ToList();

            foreach (var entry in tableEntries)
            {
                var action = args.ActionList.Find(x => x.SharepotinGUID == entry.CustomData);
                if (action == null || action.IsSuccessful)
                {
                    IDTable.RemoveKey(entry.Prefix, entry.Key);
                }
            }
        }
        public void Init_should_init_delete_dictionary()
        {
            var synchronizeTreeArgs = new SynchronizeTreeArgs();

            synchronizeTreeArgs.Context = this.CreateSynchContext(new IntegrationConfigData("server", "list", "templateID"));
            var idTableEntries = new[] { new IDTableEntry(PrefixDelete, "key", ID.NewID, synchronizeTreeArgs.Context.ParentID, "customData") };

            this.tableProvider.GetKeys(PrefixDelete).Returns(idTableEntries);

            // Act
            this.provider.Init(synchronizeTreeArgs);

            // Assert
            var dictionary = (Dictionary <string, List <IDTableEntry> >)synchronizeTreeArgs.CustomData["IDTableEntries"];

            dictionary[PrefixDelete].Should().Contain(idTableEntries);
        }
        public void should_not_queue_event_if_IsEven_is_true()
        {
            // Arrange
            var eventManager = Substitute.For <SitecoreEventManager>();
            var processor    = new IsIntegrationInstance(eventManager, this.azureEnvironment);
            var args         = new SynchronizeTreeArgs
            {
                Context = this.synchContext,
                Options = ProcessIntegrationItemsOptions.DefaultOptions
            };

            args.Options.IsEvent = true;

            // Act
            processor.Process(args);

            // Assert
            eventManager.DidNotReceiveWithAnyArgs().QueueEvent(Arg.Any <ProcessTreeRemoteEvent>());
        }
        public void should_queue_event_if_IsEven_is_false()
        {
            // Arrange
            var eventManager = Substitute.For <SitecoreEventManager>();
            var processor    = new IsIntegrationInstance(eventManager, this.azureEnvironment);
            var args         = new SynchronizeTreeArgs
            {
                Context = this.synchContext,
                Options = ProcessIntegrationItemsOptions.DefaultOptions
            };

            args.Options.IsEvent = false;

            // Act
            processor.Process(args);

            // Assert
            eventManager.Received().QueueEvent(Arg.Is <ProcessTreeRemoteEvent>(x => x.DatabaseName == args.Context.Database.Name && x.Id == args.Context.ParentID && x.EventName == "spif:processTree"));
        }
        private SynchronizeTreeArgs CreateArgs(
            TestHelper.Items sitecoreItems,
            TestHelper.Items sharepointItems,
            bool isBidirectional = true)
        {
            var configData = new IntegrationConfigData("server", "list", "templateID")
            {
                BidirectionalLink = isBidirectional
            };

            var args = new SynchronizeTreeArgs
            {
                IntegrationItems   = TestHelper.CreateSitecoreItemsList(sitecoreItems),
                SharepointItemList = TestHelper.CreateSharepointItemsList(sharepointItems),
                Context            = new SynchContext(new ItemMock().AsConfigurationItem(configData))
            };

            return(args);
        }
Example #17
0
        public void should_update_exired_interval()
        {
            // Arrange
            var processor = new UpdateExpirationInterval();
            var args      = new SynchronizeTreeArgs
            {
                Context = this.synchContext
            };
            var configData = IntegrationCache.GetIntegrationConfigData(this.itemId);

            configData.ExpirationDate = DateTime.Now.AddDays(-1);
            configData.IsExpired.Should().BeTrue();

            // Act
            processor.Process(args);

            // Assert
            IntegrationCache.GetIntegrationConfigData(this.itemId).IsExpired.Should().BeFalse();
        }
        public void should_abort_pipeline_if_not_integration_instance_in_azure()
        {
            // Arrange
            var processor = new IsIntegrationInstance(Substitute.For <SitecoreEventManager>(), this.azureEnvironment);
            var args      = new SynchronizeTreeArgs
            {
                Context = this.synchContext,
                Options = ProcessIntegrationItemsOptions.DefaultOptions
            };

            this.azureEnvironment.IsAzure.Returns(true);
            this.azureEnvironment.IsIntegrationInstance.Returns(false);

            // Act
            using (new SettingsSwitcher("Sharepoint.IntegrationInstance", Settings.InstanceName))
            {
                processor.Process(args);
            }

            // Assert
            args.Aborted.Should().BeTrue();
        }
Example #19
0
        public void should_return_all_list_items()
        {
            // Arrange
            var dataContext    = Substitute.For <SpContext>();
            var list           = Substitute.For <BaseList>(new EntityValues(), dataContext, new Uri("http://empty"));
            var itemCollection = new MyItemCollection(dataContext, list, new ItemsRetrievingOptions());

            var listItems = new List <BaseItem>
            {
                new BaseItem(new EntityProperties(), list, dataContext),
                new BaseItem(new EntityProperties(), list, dataContext),
                new BaseItem(new EntityProperties(), list, dataContext)
            };

            itemCollection.Items = listItems;

            // We have to make these methods as virtual in the BaseList class:
            list.GetItems(Arg.Any <ItemsRetrievingOptions>()).Returns(itemCollection);

            var configData = new IntegrationConfigData("server", "list", "templateID");
            var args       = new SynchronizeTreeArgs
            {
                Context = this.CreateSynchContext(configData)
            };

            var context = Substitute.For <SpContext>();

            this.sharepointContextProvider.CreateDataContext(configData).Returns(context);
            this.sharepointListProvider.GetList(configData.Web, configData.List, context).Returns(list);

            // Act
            this.processor.Process(args);

            // Assert
            args.SharepointItemList.Should().BeEquivalentTo(listItems);
        }
 public override SyncActionBase GetUpdateIntegrationItemAction(SynchronizeTreeArgs args, IntegrationItem item, BaseItem sharepointItem)
 {
     return(new ComparableUpdateIntegrationItemAction(item, sharepointItem, args.Context, args.Options));
 }
 public abstract SyncActionBase GetCreateIntegrationItemAction(SynchronizeTreeArgs args, BaseItem sharepointItem);
 public abstract bool IsItemDeleted(SynchronizeTreeArgs args, string sharepointGUID);
 public abstract SyncActionBase GetUpdateSharepointItemAction(SynchronizeTreeArgs args, BaseItem sharepointItem, IntegrationItem item);
 public abstract SyncActionBase GetDeleteIntegrationItemAction(SynchronizeTreeArgs args, IntegrationItem item);
Example #25
0
 public override SyncActionBase GetDeleteSharepointItemAction(SynchronizeTreeArgs args, BaseItem sharepointItem)
 {
     return(new DeleteSharepointItemAction(sharepointItem, args.Context));
 }
Example #26
0
 public override SyncActionBase GetCreateSharepointItemAction(SynchronizeTreeArgs args, IntegrationItem item)
 {
     return(new CreateSharepointItemAction(item, args.Context));
 }
Example #27
0
 public override SyncActionBase GetCreateIntegrationItemAction(SynchronizeTreeArgs args, BaseItem sharepointItem)
 {
     return(new CreateIntegrationItemAction(sharepointItem, args.Context, args.Options));
 }
 public abstract SyncActionBase GetDeleteSharepointItemAction(SynchronizeTreeArgs args, BaseItem sharepointItem);
Example #29
0
 public override SyncActionBase GetUpdateSharepointItemAction(SynchronizeTreeArgs args, BaseItem sharepointItem, IntegrationItem item)
 {
     return(new UpdateSharepointItemAction(sharepointItem, item, args.Context));
 }
Example #30
0
 public override SyncActionBase GetDeleteIntegrationItemAction(SynchronizeTreeArgs args, IntegrationItem item)
 {
     return(new DeleteIntegrationItemAction(item, args.Context));
 }