public void InitializeWithField_Should_ExecuteCorrectly()
        {
            // Arrange
            var field = new ShimCascadingLookupField
            {
                UrlGet        = () => DummyString,
                ListGet       = () => DummyString,
                DefineNoneGet = () => DummyString,
            };

            ddlFilterValueField.Items.Add(DummyString);
            ShimSPField.AllInstances.InternalNameGet     = _ => DummyString;
            ShimControl.AllInstances.EnsureChildControls = _ => { };

            // Act
            cascadingLookupFieldSettings.InitializeWithField(field);
            var url        = privateObject.GetFieldOrProperty("Url") as string;
            var list       = privateObject.GetFieldOrProperty("List") as string;
            var defineNone = privateObject.GetFieldOrProperty("DefineNone") as string;

            // Assert
            cascadingLookupFieldSettings.ShouldSatisfyAllConditions(
                () => url.ShouldNotBeNullOrEmpty(),
                () => url.ShouldBe(DummyString),
                () => list.ShouldNotBeNullOrEmpty(),
                () => list.ShouldBe(DummyString),
                () => defineNone.ShouldNotBeNullOrEmpty(),
                () => defineNone.ShouldBe(DummyString),
                () => ddlFilterValueField.Items.Count.ShouldBe(0));
        }
        public void OnSaveChange_IsNewField_ExecutesCorrectly()
        {
            // Arrange
            const string Url = "dummyurl.com";

            txtUrl.Text = Url;
            var fields = new Dictionary <string, string>();
            var field  = new ShimCascadingLookupField
            {
                UpdateMyCustomPropertyStringString = (propertyName, value) =>
                {
                    fields.Add(propertyName, value);
                }
            }.Instance;

            chkFilterCriteria.Checked = true;
            ShimSPField.AllInstances.ParentListGet = _ => new ShimSPList
            {
                FieldsGet = () => new ShimSPFieldCollection
                {
                    GetFieldByInternalNameString = name => new ShimCascadingLookupField().Instance
                }
            };
            ShimSPField.AllInstances.TitleGet                      = _ => DummyString;
            ShimSPField.AllInstances.InternalNameGet               = _ => DummyString;
            ShimListControl.AllInstances.SelectedIndexGet          = _ => 1;
            ShimListControl.AllInstances.SelectedValueGet          = _ => DummyString;
            ShimCascadingLookupField.AllInstances.ChildrenFieldGet = _ => string.Empty;

            // Act
            privateObject.Invoke(OnSaveChangeMethodName, field, true);

            // Assert
            cascadingLookupFieldSettings.ShouldSatisfyAllConditions(
                () => fields.ShouldNotBeEmpty(),
                () => fields.Keys.ShouldContain("Url"),
                () => fields["Url"].ShouldBe(Url));
        }
        public void OnSaveChange_IsNewFieldFalse_ExecutesCorrectly()
        {
            // Arrange
            const string Url      = "dummyurl.com";
            var          fieldUrl = string.Empty;

            txtUrl.Text = Url;
            var field = new ShimCascadingLookupField
            {
                UpdateMyCustomPropertyStringString = (propertyName, value) => { },
                UrlSetString = value => fieldUrl = value
            }.Instance;

            chkFilterCriteria.Checked = true;
            ShimSPField.AllInstances.ParentListGet = _ => new ShimSPList
            {
                FieldsGet = () => new ShimSPFieldCollection
                {
                    GetFieldByInternalNameString = name => new ShimCascadingLookupField().Instance
                }
            };
            ShimSPField.AllInstances.TitleGet                      = _ => DummyString;
            ShimSPField.AllInstances.InternalNameGet               = _ => DummyString;
            ShimListControl.AllInstances.SelectedIndexGet          = _ => 1;
            ShimListControl.AllInstances.SelectedValueGet          = _ => DummyString;
            ShimCascadingLookupField.AllInstances.ChildrenFieldGet = _ => string.Empty;
            ShimCascadingLookupFieldSettings.AllInstances.CleanupChildrenFieldSPFieldString = (_, property, value) => value;

            // Act
            privateObject.Invoke(OnSaveChangeMethodName, field, false);

            // Assert
            cascadingLookupFieldSettings.ShouldSatisfyAllConditions(
                () => fieldUrl.ShouldNotBeNullOrEmpty(),
                () => fieldUrl.ShouldBe(Url));
        }