Ejemplo n.º 1
0
        private ShimSPFieldCollection CreateShimSpFieldCollection()
        {
            var fieldsDictionary = new Dictionary <string, SPField>();
            var shimFields       = new ShimSPFieldCollection();

            shimFields.ContainsFieldString = fieldName => fieldsDictionary.ContainsKey(fieldName);
            shimFields.ItemGetString       = fieldName => fieldsDictionary[fieldName];
            shimFields.AddSPField          = spField =>
            {
                fieldsDictionary.Add(spField.TypeDisplayName, spField);
                return(spField.TypeDisplayName);
            };
            shimFields.AddStringSPFieldTypeBoolean = (displayName, fieldType, required) =>
            {
                var spField = CreateSpField(displayName, fieldType, fieldsDictionary.Count);
                fieldsDictionary.Add(displayName, spField);

                return(displayName);
            };
            shimFields.CreateNewFieldStringString = (typeName, displayName) =>
            {
                SPField spField;

                if (typeName == SPFieldType.Text.ToString())
                {
                    var spFieldText = new ShimSPFieldText();
                    spField = CreateSpField(displayName, SPFieldType.Text, fieldsDictionary.Count, spFieldText.Instance);
                }
                else
                {
                    spField = CreateSpField(displayName, SPFieldType.Invalid, fieldsDictionary.Count);
                }

                return(spField);
            };

            var shimBaseCollection = new ShimSPBaseCollection(shimFields.Instance);

            shimBaseCollection.GetEnumerator = () => fieldsDictionary.Values.ToList().GetEnumerator();

            return(shimFields);
        }
Ejemplo n.º 2
0
        public void EnsureFieldsInRequestItem_WhenCalled_ReturnsBoolean()
        {
            // Arrange
            const string workspaceUrl        = "WorkspaceUrl";
            const string childItem           = "ChildItem";
            const string url                 = "http://sampleurl.com";
            const string expectedDescription = "sampleurl.com";

            var validationCount     = 0;
            var expectedString      = $"{guid.ToString()}.{guid.ToString()}.1";
            var actualString        = string.Empty;
            var actualFieldUrlValue = default(SPFieldUrlValue);
            var visitCount          = new Dictionary <string, int>()
            {
                [workspaceUrl] = 0,
                [childItem]    = 0
            };

            spList.FieldsGet = () => new ShimSPFieldCollection()
            {
                GetFieldByInternalNameString = key =>
                {
                    var result = default(SPField);
                    switch (key)
                    {
                    case workspaceUrl:
                        visitCount[key] = visitCount[key] + 1;
                        if (visitCount[key] > 1)
                        {
                            result = new ShimSPFieldUrl().Instance;
                        }
                        break;

                    case childItem:
                        visitCount[key] = visitCount[key] + 1;
                        if (visitCount[key] > 1)
                        {
                            result = new ShimSPFieldText().Instance;
                        }
                        break;

                    default:
                        result = new ShimSPField()
                        {
                            IdGet = () => guid
                        }.Instance;
                        break;
                    }
                    return(result);
                },
                AddStringSPFieldTypeBoolean = (key, _, __) =>
                {
                    if (key == workspaceUrl || key == childItem)
                    {
                        validationCount = validationCount + 1;
                    }
                    return(key);
                }
            };
            spWeb.ServerRelativeUrlGet = () => url;
            spListItem.SystemUpdate    = () =>
            {
                validationCount = validationCount + 1;
            };
            spListItem.ItemSetGuidObject = (_, input) =>
            {
                if (input.GetType().Equals(typeof(SPFieldUrlValue)))
                {
                    actualFieldUrlValue = (SPFieldUrlValue)input;
                    validationCount     = validationCount + 1;
                }
                else if (input.GetType().Equals(typeof(string)))
                {
                    actualString    = (string)input;
                    validationCount = validationCount + 1;
                }
            };

            ShimSPField.AllInstances.Update = _ =>
            {
                validationCount = validationCount + 1;
            };

            // Act
            var actual = (bool)privateObj.Invoke(
                EnsureFieldsInRequestItemMethodName,
                BindingFlags.Static | BindingFlags.NonPublic,
                new object[] { string.Empty, spList.Instance, spWeb.Instance, spListItem.Instance, spListItem.Instance });

            // Assert
            actual.ShouldSatisfyAllConditions(
                () => actual.ShouldBeTrue(),
                () => actualString.ShouldBe(expectedString),
                () => actualFieldUrlValue.Url.ShouldBe(url),
                () => actualFieldUrlValue.Description.ShouldBe(expectedDescription),
                () => validationCount.ShouldBe(7));
        }