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); }
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)); }
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); }
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); }
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); }
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())); }
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); }
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); }
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); }
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); }
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)); }
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); }
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>()); }
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>()); }