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 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_WithNonLayoutField_DoesNotCallLayoutValueProvider() { // Arrange var innerProvider = Substitute.For <StandardValuesProvider>(); var settings = TestUtil.CreateFakeSettings(); var layoutProvider = Substitute.For <IBaseLayoutValueProvider>(); var validator = Substitute.For <IBaseLayoutValidator>(); var log = Substitute.For <ILog>(); var provider = new BaseLayoutStandardValuesProvider(innerProvider, settings, layoutProvider, validator, log); var field = MasterFakesFactory.CreateFakeEmptyField(); // Act var result = provider.GetStandardValue(field); // Assert layoutProvider.DidNotReceive().GetBaseLayoutValue(Arg.Any <Item>()); }
public void GetStandardValue_WithAlwaysCheckForCircularReferenceTrueAndFinalLayoutFieldFromItemWithCircularReference_CallsLogWarn() { // Arrange var layoutProvider = Substitute.For <IBaseLayoutValueProvider>(); var innerProvider = Substitute.For <StandardValuesProvider>(); var settings = TestUtil.CreateFakeSettings(null, true); var validator = Substitute.For <IBaseLayoutValidator>(); validator.HasCircularBaseLayoutReference(Arg.Any <Item>()).Returns(true); validator.ItemSupportsBaseLayouts(Arg.Any <Item>()).Returns(true); 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 log.ReceivedWithAnyArgs().Warn(Arg.Any <string>()); }
public void GetStandardValue_WithNonLayoutField_ReturnsValueFromInnerProvider() { // Arrange var layoutProvider = Substitute.For <IBaseLayoutValueProvider>(); var innerProviderValue = "Standard value from inner provider"; var innerProvider = Substitute.For <StandardValuesProvider>(); var settings = TestUtil.CreateFakeSettings(); var validator = Substitute.For <IBaseLayoutValidator>(); var log = Substitute.For <ILog>(); innerProvider.GetStandardValue(Arg.Any <Field>()).Returns(innerProviderValue); var provider = new BaseLayoutStandardValuesProvider(innerProvider, settings, layoutProvider, validator, log); var field = MasterFakesFactory.CreateFakeEmptyField(); // Act var result = provider.GetStandardValue(field); // Assert Assert.Equal(innerProviderValue, result); }