public void Run_WithIsPostBackFalseAndDialogLocatorReturnsNull_CallsAlertButNotShowModalDialog()
        {
            // Arrange
            var item = MasterFakesFactory.CreateFakeItem();
            var args = Substitute.For <ClientPipelineArgs>();

            args.Parameters = new NameValueCollection {
                { "items", item.Uri.ToString() }
            };
            args.IsPostBack = false;

            var sheer = Substitute.For <ISheerResponse>();

            sheer.CheckModified().Returns(true);
            var contextChecker = Substitute.For <ICommandContextChecker>();
            var locator        = Substitute.For <IDialogLocator>();

            locator.GetDialogUrl(Arg.Any <Item>()).Returns((string)null);
            var processor = Substitute.For <IDialogResultProcessor>();
            var command   = new SelectBaseLayout(sheer, contextChecker, locator, processor);

            // Act
            command.Run(args);

            // Assert
            sheer.Received().Alert(Arg.Any <string>());
            sheer.DidNotReceive().ShowModalDialog(Arg.Any <string>());
        }
        public void ProcessItemUpdate_WithEntriesForBaseLayoutChain_OnlyRemovesEntriesForDependentItems()
        {
            // Arrange
            var cache = new BaseLayoutValueCache(TestUtil.CreateFakeSettings(new[] { "master" }))
            {
                Enabled = true
            };

            cache.Clear();

            // create 2 base layout chains of 5 items each
            // save the 3rd item in the first chain as the item to pass to ProcessItemUpdate
            ID   id          = null;
            Item updatedItem = null;

            for (var i = 0; i < 10; i++)
            {
                var field = MasterFakesFactory.CreateFakeLayoutField(null, null, null, null, id);
                cache.AddLayoutValue(field.Item, field.Value);
                id = (i == 4) ? null : field.Item.ID;
                if (i == 2)
                {
                    updatedItem = field.Item;
                }
            }

            // Act
            cache.ProcessItemUpdate(updatedItem);

            // Assert
            Assert.Equal(7, cache.InnerCache.Count);
        }
        Run_WithIsPostBackFalseAndDialogLocatorReturnsValue_CallsShowModalDialogWithReturnedValueAndCallsWaitForPostBack
            ()
        {
            // Arrange
            var item = MasterFakesFactory.CreateFakeItem();
            var args = Substitute.For <ClientPipelineArgs>();

            args.Parameters = new NameValueCollection {
                { "items", item.Uri.ToString() }
            };
            args.IsPostBack = false;

            var sheer = Substitute.For <ISheerResponse>();

            sheer.CheckModified().Returns(true);
            var contextChecker = Substitute.For <ICommandContextChecker>();
            var url            = "/This/is/my/dialog/url";
            var locator        = Substitute.For <IDialogLocator>();

            locator.GetDialogUrl(Arg.Any <Item>()).Returns(url);
            var processor = Substitute.For <IDialogResultProcessor>();
            var command   = new SelectBaseLayout(sheer, contextChecker, locator, processor);

            // Act
            command.Run(args);

            // Assert
            sheer.Received().ShowModalDialog(url);
            args.Received().WaitForPostBack();
        }
        public void Run_WithIsPostBackFalse_CallsDialogLocatorWithItemFromPipelineArgs()
        {
            // Arrange
            var item = MasterFakesFactory.CreateFakeItem();
            var args = Substitute.For <ClientPipelineArgs>();

            args.Parameters = new NameValueCollection {
                { "items", item.Uri.ToString() }
            };
            args.IsPostBack = false;

            var sheer = Substitute.For <ISheerResponse>();

            sheer.CheckModified().Returns(true);
            var contextChecker = Substitute.For <ICommandContextChecker>();
            var locator        = Substitute.For <IDialogLocator>();
            var processor      = Substitute.For <IDialogResultProcessor>();
            var command        = new SelectBaseLayout(sheer, contextChecker, locator, processor);

            // Act
            command.Run(args);

            // Assert
            locator.Received().GetDialogUrl(Arg.Is <Item>(i => i.ID == item.ID));
        }
        public void AddLayoutValue_WithSameFieldInDifferentDatabases_AddsEntriesForBoth()
        {
            // Arrange
            var cache = new BaseLayoutValueCache(TestUtil.CreateFakeSettings())
            {
                Enabled = true
            };

            cache.Clear();
            var   id          = new ID();
            var   masterField = MasterFakesFactory.CreateFakeLayoutField(id);
            Field webField;

            using (var webDb = new Db("web"))
            {
                var webFakesFactory = new FakesFactory(webDb);
                webField = webFakesFactory.CreateFakeLayoutField(id);
            }

            // Act
            cache.AddLayoutValue(masterField.Item, masterField.Value);
            cache.AddLayoutValue(webField.Item, webField.Value);

            // Assert
            Assert.Equal(2, cache.InnerCache.Count);
        }
        public void ProcessItemUpdate_WithEntriesInDifferentDatabases_OnlyRemovesEntryForMatchingDatabase()
        {
            // Arrange
            var cache = new BaseLayoutValueCache(TestUtil.CreateFakeSettings(new[] { "master" }))
            {
                Enabled = true
            };

            cache.Clear();
            var   id          = new ID();
            var   masterField = MasterFakesFactory.CreateFakeLayoutField(id);
            Field webField;

            using (var webDb = new Db("web"))
            {
                var webFakesFactory = new FakesFactory(webDb);
                webField = webFakesFactory.CreateFakeLayoutField(id);
            }

            cache.AddLayoutValue(masterField.Item, masterField.Value);
            cache.AddLayoutValue(webField.Item, webField.Value);

            // Act
            cache.ProcessItemUpdate(masterField.Item);

            // Assert
            Assert.Null(cache.GetLayoutValue(masterField.Item));
            Assert.Equal(1, cache.InnerCache.Count);
        }
        public void Run_WithIsPostBackTrueAndHasResultTrue_CallsDialogResultProcessor()
        {
            // Arrange
            var result = new ID().ToString();
            var item   = MasterFakesFactory.CreateFakeItem();
            var args   = Substitute.For <ClientPipelineArgs>();

            args.Parameters = new NameValueCollection {
                { "items", item.Uri.ToString() }
            };
            args.IsPostBack = true;
            args.Result     = result;

            var sheer = Substitute.For <ISheerResponse>();

            sheer.CheckModified().Returns(true);
            var contextChecker = Substitute.For <ICommandContextChecker>();
            var locator        = Substitute.For <IDialogLocator>();
            var processor      = Substitute.For <IDialogResultProcessor>();
            var command        = new SelectBaseLayout(sheer, contextChecker, locator, processor);

            // Act
            command.Run(args);

            // Assert
            string message;

            processor.Received().ProcessResult(Arg.Is <Item>(i => i.ID == item.ID), result, out message);
        }
        public void Run_WithIsPostBackTrueAndHasResultTrueAndResultProcessorReturnsTrue_CallsRefresh()
        {
            // Arrange
            var result = new ID().ToString();
            var item   = MasterFakesFactory.CreateFakeItem();
            var args   = Substitute.For <ClientPipelineArgs>();

            args.Parameters = new NameValueCollection {
                { "items", item.Uri.ToString() }
            };
            args.IsPostBack = true;
            args.Result     = result;

            string message;
            var    sheer = Substitute.For <ISheerResponse>();

            sheer.CheckModified().Returns(true);
            var contextChecker = Substitute.For <ICommandContextChecker>();
            var locator        = Substitute.For <IDialogLocator>();
            var processor      = Substitute.For <IDialogResultProcessor>();

            processor.ProcessResult(Arg.Any <Item>(), Arg.Any <string>(), out message).Returns(true);
            var command = Substitute.ForPartsOf <SelectBaseLayout>(sheer, contextChecker, locator, processor);

            command.When(c => c.Refresh()).DoNotCallBase();

            // Act
            command.Run(args);

            // Assert
            command.Received().Refresh();
        }
        public void Run_WithIsPostBackTrueAndHasResultTrueAndResultProcessorReturnsFalse_CallsAlertWithMessage()
        {
            // Arrange
            var result = new ID().ToString();
            var item   = MasterFakesFactory.CreateFakeItem();
            var args   = Substitute.For <ClientPipelineArgs>();

            args.Parameters = new NameValueCollection {
                { "items", item.Uri.ToString() }
            };
            args.IsPostBack = true;
            args.Result     = result;

            string message;
            var    expectedAlert = "This is the expected alert message!";
            var    sheer         = Substitute.For <ISheerResponse>();

            sheer.CheckModified().Returns(true);
            var contextChecker = Substitute.For <ICommandContextChecker>();
            var locator        = Substitute.For <IDialogLocator>();
            var processor      = Substitute.For <IDialogResultProcessor>();

            processor.ProcessResult(Arg.Any <Item>(), Arg.Any <string>(), out message)
            .Returns(false)
            .AndDoes(ci => ci[2] = expectedAlert);
            var command = new SelectBaseLayout(sheer, contextChecker, locator, processor);

            // Act
            command.Run(args);

            // Assert
            sheer.Received().Alert(expectedAlert);
        }
        public void GetStandardValue_WithFinalLayoutFieldAndEmptyLayoutValue_ReturnsValueFromInnerProvider()
        {
            // Arrange
            var layoutProvider = Substitute.For <IBaseLayoutValueProvider>();

            layoutProvider.GetBaseLayoutValue(Arg.Any <Item>()).Returns(string.Empty);

            var innerProviderValue = "Standard value from inner provider";
            var innerProvider      = Substitute.For <StandardValuesProvider>();

            innerProvider.GetStandardValue(Arg.Any <Field>()).Returns(innerProviderValue);

            var settings  = TestUtil.CreateFakeSettings();
            var validator = Substitute.For <IBaseLayoutValidator>();

            validator.ItemSupportsBaseLayouts(Arg.Any <Item>()).Returns(true);
            validator.HasCircularBaseLayoutReference(Arg.Any <Item>()).Returns(false);
            var log      = Substitute.For <ILog>();
            var provider = new BaseLayoutStandardValuesProvider(innerProvider, settings, layoutProvider, validator, log);
            var field    = MasterFakesFactory.CreateFakeFinalLayoutField();

            // Act
            var result = provider.GetStandardValue(field);

            // Assert
            Assert.Equal(innerProviderValue, result);
        }
        public void GetStandardValue_WhenLayoutProviderThrowsException_LogsErrorAndReturnsValueFromInnerProvider()
        {
            // Arrange
            var ex             = new Exception("Something bad happened.");
            var layoutProvider = Substitute.For <IBaseLayoutValueProvider>();

            layoutProvider.GetBaseLayoutValue(Arg.Any <Item>()).Throws(ex);

            var innerProviderValue = "Standard value from inner provider";
            var innerProvider      = Substitute.For <StandardValuesProvider>();

            innerProvider.GetStandardValue(Arg.Any <Field>()).Returns(innerProviderValue);

            var validator = Substitute.For <IBaseLayoutValidator>();

            validator.ItemSupportsBaseLayouts(Arg.Any <Item>()).Returns(true);
            validator.HasCircularBaseLayoutReference(Arg.Any <Item>()).Returns(false);

            var settings = TestUtil.CreateFakeSettings();
            var log      = Substitute.For <ILog>();
            var provider = new BaseLayoutStandardValuesProvider(innerProvider, settings, layoutProvider, validator, log);
            var field    = MasterFakesFactory.CreateFakeLayoutField();

            // Act
            var result = provider.GetStandardValue(field);

            // Assert
            log.Received().Error(ex, Arg.Any <string>());
            Assert.Equal(innerProviderValue, result);
        }
Ejemplo n.º 12
0
        public void CreatesCircularBaseLayoutReference_WithNullBaseLayoutItem_ThrowsArgumentNullException()
        {
            // Arrange
            var validator = new BaseLayoutValidator(TestUtil.CreateFakeSettings());

            // Act => Assert
            Assert.Throws <ArgumentNullException>(
                () => validator.CreatesCircularBaseLayoutReference(MasterFakesFactory.CreateFakeItem(), null));
        }
        public void GetCacheKey_WhenItemHasBaseLayoutReferencingSelf_ThrowsCircularReferenceException()
        {
            // Arrange
            var cache = new BaseLayoutValueCache(TestUtil.CreateFakeSettings());
            var id    = new ID();
            var item  = MasterFakesFactory.CreateFakeItem(id, null, null, null, id);

            // Act => Assert
            Assert.Throws <CircularReferenceException>(() => cache.GetCacheKey(item));
        }
Ejemplo n.º 14
0
        public void HasCircularBaseLayoutReference_WithItemWithNoBaseLayout_ReturnsFalse()
        {
            // Arrange
            var validator = new BaseLayoutValidator(TestUtil.CreateFakeSettings());
            var item      = MasterFakesFactory.CreateFakeItem();

            // Act
            var result = validator.HasCircularBaseLayoutReference(item);

            // Assert
            Assert.False(result);
        }
        public void Process_WithNewBaseLayoutItemNull_SetsSuccessfulTrue()
        {
            // Arrange
            var args      = new SaveBaseLayoutArgs(MasterFakesFactory.CreateFakeItem());
            var processor = new SaveNewBaseLayout();

            // Act
            processor.Process(args);

            // Assert
            Assert.True(args.Successful);
        }
Ejemplo n.º 16
0
        public void ItemSupportsBaseLayouts_WithContentItemWithBaseLayoutFieldFromUnsupportedDatabase_ReturnsFalse()
        {
            // Arrange
            var validator = new BaseLayoutValidator(TestUtil.CreateFakeSettings(new[] { "web" }));
            var item      = MasterFakesFactory.CreateFakeItem();

            // Act
            var result = validator.ItemSupportsBaseLayouts(item);

            // Assert
            Assert.False(result);
        }
Ejemplo n.º 17
0
        public void CreatesCircularBaseLayoutReference_WithItemSameAsBaseLayoutItem_ReturnsTrue()
        {
            // Arrange
            var validator = new BaseLayoutValidator(TestUtil.CreateFakeSettings());
            var item      = MasterFakesFactory.CreateFakeItem();

            // Act
            var result = validator.CreatesCircularBaseLayoutReference(item, item);

            // Assert
            Assert.True(result);
        }
Ejemplo n.º 18
0
        public void CreatesCircularBaseLayoutReference_WithItemWithoutBaseLayoutField_ThrowsArgumentException()
        {
            // Arrange
            var validator = new BaseLayoutValidator(TestUtil.CreateFakeSettings());

            // Act => Assert
            Assert.Throws <ArgumentException>(
                () =>
                validator.CreatesCircularBaseLayoutReference(
                    MasterFakesFactory.CreateFakeItem(null, null, null, null, null, false),
                    MasterFakesFactory.CreateFakeItem()));
        }
Ejemplo n.º 19
0
        public void GetLayoutValue_WithItemWithoutBaseLayoutField_ReturnsNull()
        {
            // Arrange
            var provider = new BaseLayoutValueProvider();
            var item     = MasterFakesFactory.CreateFakeItem(null, null, null, null, null, false);

            // Act
            var result = provider.GetBaseLayoutValue(item);

            // Assert
            Assert.Null(result);
        }
        public void Process_WithNewBaseLayoutItemNull_SetsFieldValueToEmptyString()
        {
            // Arrange
            var args      = new SaveBaseLayoutArgs(MasterFakesFactory.CreateFakeItem());
            var processor = new SaveNewBaseLayout();

            // Act
            processor.Process(args);

            // Assert
            Assert.Equal(string.Empty, args.Item.InnerItem.Fields[BaseLayoutItem.BaseLayoutFieldId].Value);
        }
        public void GetDialogUrl_WithNoBaseLayoutItems_ReturnsNull()
        {
            // Arrange
            var item    = MasterFakesFactory.CreateFakeItem();
            var runner  = Substitute.For <IPipelineRunner>();
            var locator = new SelectBaseLayoutDialogLocator(runner);

            // Act
            var result = locator.GetDialogUrl(item);

            // Assert
            Assert.Null(result);
        }
Ejemplo n.º 22
0
        public void CreatesCircularBaseLayoutReference_WhenBaseLayoutItemHasItemSelectedAsBaseLayout_ReturnsTrue()
        {
            // Arrange
            var validator = new BaseLayoutValidator(TestUtil.CreateFakeSettings());
            var item      = MasterFakesFactory.CreateFakeItem();
            var item2     = MasterFakesFactory.CreateFakeItem(null, null, null, null, item.ID);

            // Act
            var result = validator.CreatesCircularBaseLayoutReference(item, item2);

            // Assert
            Assert.True(result);
        }
Ejemplo n.º 23
0
        public void CreatesVersioningConflict_WhenBaseLayoutItemHasOnlySharedRenderings_ReturnsFalse()
        {
            // Arrange
            var validator = new BaseLayoutValidator(TestUtil.CreateFakeSettings());
            var item      = MasterFakesFactory.CreateFakeItem();
            var item2     = MasterFakesFactory.CreateFakeItem(null, null, null, string.Empty);

            // Act
            var result = validator.CreatesVersioningConflict(item, item2);

            // Assert
            Assert.False(result);
        }
Ejemplo n.º 24
0
        public void CreatesVersioningConflict_WhenItemHasRenderingsSeedAndBaseLayoutItemHasFinalRenderings_ReturnsFalse()
        {
            // Arrange
            var validator = new BaseLayoutValidator(TestUtil.CreateFakeSettings());
            var item      = MasterFakesFactory.CreateFakeItem();
            var item2     = MasterFakesFactory.CreateFakeItem();

            // Act
            var result = validator.CreatesVersioningConflict(item, item2);

            // Assert
            Assert.False(result);
        }
Ejemplo n.º 25
0
        public void CreatesVersioningConflict_WhenItemHasRenderingsDeltaAndBaseLayoutItemHasFinalRenderings_ReturnsTrue()
        {
            // Arrange
            var validator = new BaseLayoutValidator(TestUtil.CreateFakeSettings());
            var item      = MasterFakesFactory.CreateFakeItem(null, null, "<r xmlns:p=\"p\" xmlns:s=\"s\" p:p=\"1\"></r>");
            var item2     = MasterFakesFactory.CreateFakeItem();

            // Act
            var result = validator.CreatesVersioningConflict(item, item2);

            // Assert
            Assert.True(result);
        }
        public void GetCacheKey_WithoutCircularReference_ReturnsKeyThatEndsWithItemId()
        {
            // Arrange
            var cache = new BaseLayoutValueCache(TestUtil.CreateFakeSettings());
            var item1 = MasterFakesFactory.CreateFakeItem();
            var item2 = MasterFakesFactory.CreateFakeItem(null, null, null, null, item1.ID);

            // Act
            var result = cache.GetCacheKey(item2);

            // Assert
            Assert.True(result.EndsWith(item2.ID.ToString(), StringComparison.OrdinalIgnoreCase));
        }
Ejemplo n.º 27
0
        public void HasCircularBaseLayoutReference_WithSelfReference_ReturnsTrue()
        {
            // Arrange
            var validator = new BaseLayoutValidator(TestUtil.CreateFakeSettings());
            var id        = new ID();
            var item      = MasterFakesFactory.CreateFakeItem(id, null, null, null, id);

            // Act
            var result = validator.HasCircularBaseLayoutReference(item);

            // Assert
            Assert.True(result);
        }
Ejemplo n.º 28
0
        public void RenderPreviews_WithItemsAndNullSelectedItemId_RendersItemPreviews()
        {
            // Arrange
            var form = Substitute.ForPartsOf <SelectBaseLayoutForm>();

            form.When(x => x.RenderItemPreview(Arg.Any <Item>(), Arg.Any <HtmlTextWriter>())).DoNotCallBase();
            var items = Enumerable.Range(0, 4).Select(x => MasterFakesFactory.CreateFakeItem());

            // Act
            var result = form.RenderPreviews(items, null);

            // Assert
            form.Received(4).RenderItemPreview(Arg.Any <Item>(), Arg.Any <HtmlTextWriter>());
        }
Ejemplo n.º 29
0
        public void Process_WithNewBaseLayoutItemNull_DoesNotCallValidator()
        {
            // Arrange
            var item      = MasterFakesFactory.CreateFakeItem();
            var args      = new SaveBaseLayoutArgs(item);
            var validator = Substitute.For <IBaseLayoutValidator>();
            var processor = new CheckForVersioningConflict(validator);

            // Act
            processor.Process(args);

            // Assert
            validator.DidNotReceive().CreatesVersioningConflict(Arg.Any <Item>(), Arg.Any <Item>());
        }
        public void Process_WithItemWithoutBaseLayoutField_DoesNotCallGetItems()
        {
            // Arrange
            var args      = new GetBaseLayoutItemsArgs(MasterFakesFactory.CreateFakeItem(null, null, null, null, null, false));
            var processor = Substitute.ForPartsOf <GetLookupSourceItems>();

            processor.When(p => p.GetItems(Arg.Any <Item>(), Arg.Any <string>())).DoNotCallBase();

            // Act
            processor.Process(args);

            // Assert
            processor.DidNotReceive().GetItems(Arg.Any <Item>(), Arg.Any <string>());
        }