public void ShouldCreateItem()
        {
            // arrange
            var itemId     = ID.NewID;
            var templateId = ID.NewID;

            var item        = ItemHelper.CreateInstance(this.database);
            var destination = ItemHelper.CreateInstance(this.database);

            this.dataStorage.GetSitecoreItem(itemId).Returns(item);

            var command = new OpenCreateItemCommand()
            {
                Engine = new DataEngine(this.database)
            };

            command.Initialize(itemId, "home", templateId, destination);
            command.Initialize(this.dataStorage);

            // act
            var result = command.DoExecute();

            // assert
            result.Should().Be(item);
            this.dataStorage.Received().Create("home", itemId, templateId, destination);
        }
Exemplo n.º 2
0
        public void ShouldAddMissingFieldToItemIfFieldExistsInTemplate()
        {
            // arrange
            var template = new DbTemplate("Sample", this.templateId)
            {
                this.fieldId
            };
            var originalItem = new DbItem("original item", this.itemId, this.templateId);

            this.dataStorage.GetFakeItem(this.itemId).Returns(originalItem);
            this.dataStorage.GetFakeTemplate(this.templateId).Returns(template);
            this.dataStorage.FakeItems.Add(this.itemId, originalItem);

            var fields = new FieldList {
                { this.fieldId, "updated title" }
            };
            var updatedItem = ItemHelper.CreateInstance(this.database, "updated item", this.itemId, ID.NewID, ID.Null, fields);

            this.command.Initialize(updatedItem);

            // act
            this.command.DoExecute();

            // assert
            dataStorage.FakeItems[this.itemId].Name.Should().Be("updated item");
            dataStorage.FakeItems[this.itemId].Fields[this.fieldId].Value.Should().Be("updated title");
        }
        public void ShouldReturnItemChildren()
        {
            // arrange
            var dbchild1 = new DbItem("child1");
            var dbchild2 = new DbItem("child2");
            var dbitem   = new DbItem("item")
            {
                dbchild1, dbchild2
            };

            var child1 = ItemHelper.CreateInstance(this.database);
            var child2 = ItemHelper.CreateInstance(this.database);
            var item   = ItemHelper.CreateInstance(this.database, dbitem.ID);

            this.dataStorage.GetFakeItem(dbitem.ID).Returns(dbitem);
            this.dataStorage.GetSitecoreItem(dbchild1.ID, item.Language).Returns(child1);
            this.dataStorage.GetSitecoreItem(dbchild2.ID, item.Language).Returns(child2);

            var command = new OpenGetChildrenCommand {
                Engine = new DataEngine(this.database)
            };

            command.Initialize(item);
            command.Initialize(this.dataStorage);

            // act
            var children = command.DoExecute();

            // assert
            children[0].Should().Be(child1);
            children[1].Should().Be(child2);
        }
        public void ShouldReturnTrueIfHasChildren()
        {
            // arrange
            var itemId = ID.NewID;
            var item   = ItemHelper.CreateInstance(this.database, itemId);
            var fakeItemWithChildren = new DbItem("parent", itemId)
            {
                new DbItem("child")
            };

            this.dataStorage.GetSitecoreItem(itemId, item.Language).Returns(item);
            this.dataStorage.GetFakeItem(itemId).Returns(fakeItemWithChildren);

            var command = new OpenHasChildrenCommand {
                Engine = new DataEngine(this.database)
            };

            command.Initialize(item);
            command.Initialize(this.dataStorage);

            // act
            var result = command.DoExecute();

            // assert
            result.Should().BeTrue();
        }
        public void ShouldDeleteItemFromParentsChildrenCollection()
        {
            // arrange
            var itemId   = ID.NewID;
            var parentId = ID.NewID;

            var item = new DbItem("item", itemId)
            {
                ParentID = parentId
            };
            var parent = new DbItem("parent", parentId);

            parent.Children.Add(item);

            this.dataStorage.FakeItems.Add(itemId, item);
            this.dataStorage.FakeItems.Add(parentId, parent);

            this.command.Initialize(ItemHelper.CreateInstance(this.database, itemId), ID.NewID);

            // act
            this.command.DoExecute();

            // assert
            this.dataStorage.FakeItems[parentId].Children.Should().BeEmpty();
        }
        public void ShouldUpdateExistingItemInDataStorage(SaveItemCommand sut, ID itemId, ID templateId, ID fieldId)
        {
            // arrange
            var originalItem = new DbItem("original item", itemId)
            {
                new DbField("Title", fieldId)
                {
                    Value = "original title"
                }
            };

            sut.DataStorage.GetFakeItem(itemId).Returns(originalItem);
            sut.DataStorage.GetFakeTemplate(null).ReturnsForAnyArgs(new DbTemplate("Sample", templateId));

            var fields = new FieldList {
                { fieldId, "updated title" }
            };
            var updatedItem = ItemHelper.CreateInstance(sut.Database, "updated item", itemId, ID.NewID, ID.Null, fields);

            sut.Initialize(updatedItem);

            // act
            ReflectionUtil.CallMethod(sut, "DoExecute");

            // assert
            originalItem.Name.Should().Be("updated item");
            originalItem.Fields[fieldId].Value.Should().Be("updated title");
        }
        public void ShouldGetItemVersionsCount()
        {
            // arrange
            var itemId        = ID.NewID;
            var versionedItem = new DbItem("item");

            versionedItem.VersionsCount.Add("en", 2);

            this.dataStorage.GetFakeItem(itemId).Returns(versionedItem);

            var item     = ItemHelper.CreateInstance(this.database, itemId);
            var language = Language.Parse("en");

            var command = new OpenGetVersionsCommand();

            command.Initialize(item, language);
            command.Initialize(this.dataStorage);

            // act
            var versionCollection = command.DoExecute();

            // assert
            versionCollection.Count.Should().Be(2);
            versionCollection.Should().BeEquivalentTo(new[] { new Version(1), new Version(2) });
        }
        public void ShouldGetNewItemVersion()
        {
            // arrange
            var itemId = ID.NewID;
            var dbitem = new DbItem("home")
            {
                { "Title", "Hello!" }
            };

            this.dataStorage.GetFakeItem(itemId).Returns(dbitem);

            var originalItem       = ItemHelper.CreateInstance(this.database, itemId);
            var itemWithNewVersion = ItemHelper.CreateInstance(this.database, itemId);

            this.dataStorage.GetSitecoreItem(itemId, Language.Parse("en"), Version.Parse(2)).Returns(itemWithNewVersion);

            var command = new OpenAddVersionCommand();

            command.Initialize(originalItem);
            command.Initialize(this.dataStorage);

            // act
            var result = command.DoExecute();

            // assert
            result.Should().BeSameAs(itemWithNewVersion);
        }
        public void ShouldDeleteItemDescendants()
        {
            // arrange
            var itemId  = ID.NewID;
            var desc1Id = ID.NewID;
            var desc2Id = ID.NewID;

            var item  = new DbItem("item", itemId);
            var desc1 = new DbItem("descendant1", desc1Id);
            var desc2 = new DbItem("descendant2", desc2Id);

            item.Children.Add(desc1);
            desc1.Children.Add(desc2);

            this.dataStorage.FakeItems.Add(itemId, item);
            this.dataStorage.FakeItems.Add(desc1Id, desc1);
            this.dataStorage.FakeItems.Add(desc2Id, desc2);

            this.command.Initialize(ItemHelper.CreateInstance(this.database, itemId), ID.NewID);

            // act
            this.command.DoExecute();

            // assert
            this.dataStorage.FakeItems.Should().NotContainKey(desc1Id);
            this.dataStorage.FakeItems.Should().NotContainKey(desc2Id);
        }
Exemplo n.º 10
0
        public void ShouldRemoveVersionFromFakeDbFields()
        {
            // arrange
            var itemId = ID.NewID;
            var dbitem = new DbItem("item")
            {
                Fields = { new DbField("Title")
                           {
                               { "en", "Hello!" }
                           } }
            };

            this.dataStorage.GetFakeItem(itemId).Returns(dbitem);

            var item = ItemHelper.CreateInstance(this.database, itemId);

            var command = new OpenRemoveVersionCommand();

            command.Initialize(item);
            command.Initialize(this.dataStorage);

            // act
            var result = command.DoExecute();

            // assert
            result.Should().BeTrue();
            dbitem.Fields.Single().Values["en"].Values.Should().BeEmpty();
        }
        public void ShouldAddVersionToFakeDbFieldsUsingItemLanguage()
        {
            // arrange
            var itemId = ID.NewID;
            var dbitem = new DbItem("item")
            {
                Fields = { new DbField("Title")
                           {
                               { "en", "Hello!" }, { "da", "Hej!" }
                           } }
            };

            this.dataStorage.GetFakeItem(itemId).Returns(dbitem);

            var item = ItemHelper.CreateInstance(this.database, itemId);

            var command = new OpenAddVersionCommand();

            command.Initialize(item);
            command.Initialize(this.dataStorage);

            // act
            command.DoExecute();

            // assert
            dbitem.Fields.Single().Values["en"][1].Should().Be("Hello!");
            dbitem.Fields.Single().Values["en"][2].Should().Be("Hello!");
            dbitem.Fields.Single().Values["da"][1].Should().Be("Hej!");
            dbitem.Fields.Single().Values["da"].ContainsKey(2).Should().BeFalse();
        }
        public void ShouldThrowExceptionIfNoFieldFoundInOriginalItem(SaveItemCommand sut, ID itemId, ID templateId, ID fieldId)
        {
            // arrange
            var originalItem = new DbItem("original item", itemId)
            {
                new DbField("Title")
            };

            sut.DataStorage.GetFakeItem(itemId).Returns(originalItem);
            sut.DataStorage.GetFakeTemplate(null).ReturnsForAnyArgs(new DbTemplate("Sample", templateId));

            var fields = new FieldList {
                { fieldId, "updated title" }
            };
            var updatedItem = ItemHelper.CreateInstance(sut.Database, "updated item", itemId, ID.NewID, ID.Null, fields);

            sut.Initialize(updatedItem);

            // act
            Action action = () => ReflectionUtil.CallMethod(sut, "DoExecute");

            // assert
            action
            .ShouldThrow <TargetInvocationException>()
            .WithInnerException <InvalidOperationException>()
            .WithInnerMessage("Item field not found. Item: 'updated item', '{0}'; field: '{1}'.".FormatWith(itemId, fieldId));
        }
Exemplo n.º 13
0
        public void ShouldUpdateExistingItemInDataStorage()
        {
            // arrange
            var originalItem = new DbItem("original item", this.itemId)
            {
                new DbField("Title", this.fieldId)
                {
                    Value = "original title"
                }
            };

            this.dataStorage.GetFakeItem(this.itemId).Returns(originalItem);
            this.dataStorage.FakeItems.Add(this.itemId, originalItem);

            var fields = new FieldList {
                { this.fieldId, "updated title" }
            };
            var updatedItem = ItemHelper.CreateInstance(database, "updated item", this.itemId, ID.NewID, ID.Null, fields);

            this.command.Initialize(updatedItem);

            // act
            this.command.DoExecute();

            // assert
            dataStorage.FakeItems[this.itemId].Name.Should().Be("updated item");
            dataStorage.FakeItems[this.itemId].Fields[this.fieldId].Value.Should().Be("updated title");
        }
        public virtual Item GetSitecoreItem(ID itemId, Language language, Version version)
        {
            Assert.ArgumentNotNull(itemId, "itemId");
            Assert.ArgumentNotNull(language, "language");
            Assert.ArgumentNotNull(version, "version");

            if (!this.FakeItems.ContainsKey(itemId))
            {
                return(null);
            }

            // TODO:[High] Avoid the templates resetting. Required to avoid sharing templates between unit tests.
            this.Database.Engines.TemplateEngine.Reset();

            var fakeItem = this.FakeItems[itemId];

            if (version == Version.Latest)
            {
                version = Version.Parse(fakeItem.GetVersionCount(language.Name));
                if (version == Version.Latest)
                {
                    version = Version.First;
                }
            }

            var fields = this.BuildItemFieldList(fakeItem, fakeItem.TemplateID, language, version);

            return(ItemHelper.CreateInstance(this.database, fakeItem.Name, fakeItem.ID, fakeItem.TemplateID, fakeItem.BranchId, fields, language, version));
        }
        public void ShouldCreateItem()
        {
            // arrange
            var itemId     = ID.NewID;
            var templateId = ID.NewID;

            var item        = ItemHelper.CreateInstance(this.database);
            var destination = ItemHelper.CreateInstance(this.database);

            this.dataStorage.GetSitecoreItem(itemId).Returns(item);

            var command = new OpenCreateItemCommand {
                Engine = new DataEngine(this.database)
            };

            command.Initialize(itemId, "home", templateId, destination);
            command.Initialize(this.dataStorage);

            // act
            var result = command.DoExecute();

            // assert
            result.Should().Be(item);
            this.dataStorage.Received().AddFakeItem(Arg.Is <DbItem>(i => i.Name == "home" &&
                                                                    i.ID == itemId &&
                                                                    i.TemplateID == templateId &&
                                                                    i.ParentID == destination.ID));
        }
        public void ShouldAddMissingFieldToItemIfFieldExistsInTemplate(SaveItemCommand sut, ID itemId, ID templateId, ID fieldId)
        {
            // arrange
            var template = new DbTemplate("Sample", templateId)
            {
                fieldId
            };
            var originalItem = new DbItem("original item", itemId, templateId);

            sut.DataStorage.GetFakeItem(itemId).Returns(originalItem);
            sut.DataStorage.GetFakeTemplate(templateId).Returns(template);

            var fields = new FieldList {
                { fieldId, "updated title" }
            };
            var updatedItem = ItemHelper.CreateInstance(sut.Database, "updated item", itemId, ID.NewID, ID.Null, fields);

            sut.Initialize(updatedItem);

            // act
            ReflectionUtil.CallMethod(sut, "DoExecute");

            // assert
            originalItem.Name.Should().Be("updated item");
            originalItem.Fields[fieldId].Value.Should().Be("updated title");
        }
Exemplo n.º 17
0
        public DataStorageCreateTest()
        {
            this.database    = Database.GetDatabase("master");
            this.dataStorage = new DataStorage(this.database);

            this.destination = ItemHelper.CreateInstance(this.database);
            this.dataStorage.FakeItems.Add(this.destination.ID, new DbItem("destination"));
        }
        public FakeLinkDatabaseTest()
        {
            this.item = ItemHelper.CreateInstance(this.database);

            this.behavior     = Substitute.For <LinkDatabase>();
            this.linkDatabase = new FakeLinkDatabase();
            this.linkDatabase.LocalProvider.Value = this.behavior;
        }
        public object Create(object request, ISpecimenContext context)
        {
            if (!typeof(TemplateItem).Equals(request))
            {
                return(new NoSpecimen());
            }

            return(new TemplateItem(ItemHelper.CreateInstance()));
        }
        public void ShouldCallRemoveItemTaskWithType()
        {
            // act
            var item = ItemHelper.CreateInstance();

            this.taskDatabase.RemoveItemTasks(item, typeof(Task));

            // assert
            this.behavior.Received().RemoveItemTasks(item, typeof(Task));
        }
        public FakeAuthorizationProviderTest()
        {
            this.provider = new FakeAuthorizationProvider();

            this.localProvider = Substitute.For <AuthorizationProvider>();
            this.helper        = Substitute.For <ItemAuthorizationHelper>();

            this.entity = Substitute.For <ISecurable>();
            this.item   = ItemHelper.CreateInstance();
            this.rules  = new AccessRuleCollection();
        }
        public void ShouldReturnFalseIfNoItemFound()
        {
            // arrange
            this.command.Initialize(ItemHelper.CreateInstance(this.database), ID.NewID);

            // act
            var result = this.command.DoExecute();

            // assert
            result.Should().BeFalse();
        }
Exemplo n.º 23
0
        public void ShouldThrowIfNoParentFound()
        {
            // arrange
            var parentId      = new ID("eb09ce25-f03b-48bd-bdf1-0794b94aaf72");
            var missingParent = ItemHelper.CreateInstance(this.database, parentId);

            // act
            Action action = () => this.dataStorage.Create("home", this.itemId, this.templateId, missingParent);

            // assert
            action.ShouldThrow <InvalidOperationException>().WithMessage("Parent item \"{eb09ce25-f03b-48bd-bdf1-0794b94aaf72}\" not found.");
        }
Exemplo n.º 24
0
        public void ShouldReturnEmptyStringIfNoTemplateFound()
        {
            // arrange
            var storage = Substitute.For <DataStorage>(this.database);

            ((IRequireDataStorage)this.provider).SetDataStorage(storage);

            var field = new Field(ID.NewID, ItemHelper.CreateInstance(this.database));

            // act & assert
            this.provider.GetStandardValue(field).Should().BeEmpty();
        }
        public FakeAuthorizationProviderTest()
        {
            this.localProvider = Substitute.For <AuthorizationProvider>();
            this.helper        = Substitute.For <ItemAuthorizationHelper>(
                Substitute.For <BaseAccessRightManager>(),
                Substitute.For <BaseRolesInRolesManager>(),
                Substitute.For <BaseItemManager>());
            this.provider = new FakeAuthorizationProvider(helper);

            this.entity = Substitute.For <ISecurable>();
            this.item   = ItemHelper.CreateInstance();
            this.rules  = new AccessRuleCollection();
        }
Exemplo n.º 26
0
        public void ShouldSimpleCreateItem()
        {
            // arrange
            var database = Database.GetDatabase("master");
            var item     = ItemHelper.CreateInstance(database, Name);

            // assert
            item.Name.Should().Be(Name);
            item.ID.Should().NotBeNull();
            item.TemplateID.Should().NotBeNull();
            item.Database.Should().NotBeNull();
            item.Language.Should().Be(Language.Parse("en"));
        }
        public void ShouldDeleteItemFromDataStorageAndReturnTrue(DeleteItemCommand sut, DbItem item, ID parentId)
        {
            // arrange
            sut.DataStorage.GetFakeItem(item.ID).Returns(item);
            sut.DataStorage.RemoveFakeItem(item.ID).Returns(true);

            sut.Initialize(ItemHelper.CreateInstance(item.ID), parentId);

            // act
            var result = (bool)ReflectionUtil.CallMethod(sut, "DoExecute");

            // assert
            result.Should().BeTrue();
        }
        public void ShouldReturnNullIfNoParentFound()
        {
            // arrange
            var item = ItemHelper.CreateInstance(this.database);

            this.command.Initialize(item);

            // act
            var parent = this.command.DoExecute();

            // assert
            parent.Should().BeNull();
            this.dataStorage.DidNotReceiveWithAnyArgs().GetSitecoreItem(null, null);
        }
        public void ShouldNotUpdateFieldsIfItemVersionIsZero(SaveItemCommand sut, DbItem item, FieldList fields, Language language)
        {
            // arrange
            sut.DataStorage.GetFakeItem(item.ID).Returns(item);
            var updatedItem = ItemHelper.CreateInstance(sut.Database, "updated item", item.ID, ID.NewID, ID.Null, fields, language, Version.Parse(0));

            sut.Initialize(updatedItem);

            // act
            Action action = () => ReflectionUtil.CallMethod(sut, "DoExecute");

            // assert
            action.ShouldNotThrow();
        }
        public void ShouldUpdateBranchId(SaveItemCommand sut, DbItem item, ID branchId, FieldList fields, Language language)
        {
            // arrange
            sut.DataStorage.GetFakeItem(item.ID).Returns(item);
            var updatedItem = ItemHelper.CreateInstance(sut.Database, "updated item", item.ID, ID.NewID, branchId, fields, language, Version.Parse(0));

            sut.Initialize(updatedItem);

            // act
            ReflectionUtil.CallMethod(sut, "DoExecute");

            // assert
            item.BranchId.Should().Be(branchId);
        }