コード例 #1
0
 public PropertyDefTestEnvironment(MFIdentifier prop, Common.ObjVerEx objverEx)
 {
     Ident      = prop;
     IsResolved = prop?.IsResolved ?? false;
     IsAssigned = IsResolved && null != objverEx && objverEx.HasProperty(prop);
     Value      = IsResolved ? objverEx.GetPropertyText(prop) : null;
 }
コード例 #2
0
        public void ObjectUrl_Mobile()
        {
            var vaultMock = this.GetVaultMock();
            var objectVersionAndPropertiesMock = this.GetObjectVersionAndPropertiesMock(vaultMock);
            var objVerEx = new Common.ObjVerEx(vaultMock.Object, objectVersionAndPropertiesMock.Object);

            // Create our methods for passing data around.
            string getPropertyText(Common.ObjVerEx o, int id)
            {
                Assert.Fail("Unexpected property retrieval");
                throw new InvalidOperationException();
            }

            string getObjectUrl(Common.ObjVerEx o, UrlTargetPlatform platform)
            {
                Assert.AreEqual(UrlTargetPlatform.Mobile, platform);
                return("https://weburl");
            }

            Common.ObjVerEx getDirectReference(Common.ObjVerEx o, int id)
            {
                Assert.Fail("Unexpected property retrieval");
                throw new InvalidOperationException();
            }

            Assert.AreEqual
            (
                "url is: https://weburl",
                objVerEx.ExpandSimpleConcatenation("url is: %OBJECTURL_MOBILE%", getPropertyText, getDirectReference, getObjectUrl)
            );
        }
コード例 #3
0
        public void InvalidPropertyDefinitionThrows()
        {
            // Create our mock objects.
            var vaultMock = this.GetVaultMock();
            var root      = new Common.ObjVerEx
                            (
                vaultMock.Object,
                this.GetObjectVersionAndPropertiesMock(vaultMock, 0, 1).Object
                            );

            // Create our methods for passing data around.
            string getPropertyText(Common.ObjVerEx o, int id)
            {
                Assert.Fail("Unexpected property retrieval");
                throw new InvalidOperationException();
            }

            string getObjectUrl(Common.ObjVerEx o, UrlTargetPlatform platform)
            {
                Assert.Fail("Unexpected url access");
                throw new InvalidOperationException();
            }

            Common.ObjVerEx getDirectReference(Common.ObjVerEx o, int id)
            {
                Assert.Fail("Unexpected property retrieval");
                throw new InvalidOperationException();
            }

            // Output is expected.
            // Note: property definition with alias "first" is not found in the vault, so an exception is expected.
            var input = "resolves to: %PROPERTY_{first}.PROPERTY_456.PROPERTY_{last}%";

            root.ExpandSimpleConcatenation(input, getPropertyText, getDirectReference, getObjectUrl);
        }
コード例 #4
0
        public void ObjectVersionID()
        {
            var vaultMock = this.GetVaultMock();
            var objectVersionAndPropertiesMock = this.GetObjectVersionAndPropertiesMock(vaultMock, version: 23);
            var objVerEx = new Common.ObjVerEx(vaultMock.Object, objectVersionAndPropertiesMock.Object);

            Assert.AreEqual("hello 23 world", objVerEx.ExpandSimpleConcatenation("hello %OBJECTVERSIONID% world"));
        }
コード例 #5
0
        public void MultipleInternalID()
        {
            var vaultMock = this.GetVaultMock();
            var objectVersionAndPropertiesMock = this.GetObjectVersionAndPropertiesMock(vaultMock);
            var objVerEx = new Common.ObjVerEx(vaultMock.Object, objectVersionAndPropertiesMock.Object);

            Assert.AreEqual("hello 123 world 123", objVerEx.ExpandSimpleConcatenation("hello %INTERNALID% world %INTERNALID%"));
        }
コード例 #6
0
        public void SingleExternalID()
        {
            var vaultMock = this.GetVaultMock();
            var objectVersionAndPropertiesMock = this.GetObjectVersionAndPropertiesMock(vaultMock);
            var objVerEx = new Common.ObjVerEx(vaultMock.Object, objectVersionAndPropertiesMock.Object);

            Assert.AreEqual("hello 123ABCDEF123 world", objVerEx.ExpandSimpleConcatenation("hello %EXTERNALID% world"));
        }
コード例 #7
0
        public void DisplayID_WithExternalNoOriginal()
        {
            var vaultMock = this.GetVaultMock();
            var objectVersionAndPropertiesMock = this.GetObjectVersionAndPropertiesMock(vaultMock);
            var objVerEx = new Common.ObjVerEx(vaultMock.Object, objectVersionAndPropertiesMock.Object);

            Assert.AreEqual("hello 123ABCDEF123 world", objVerEx.ExpandSimpleConcatenation("hello %DISPLAYID% world"));
        }
コード例 #8
0
        public void ObjectGUID()
        {
            var guid      = Guid.NewGuid();
            var vaultMock = this.GetVaultMock();
            var objectVersionAndPropertiesMock = this.GetObjectVersionAndPropertiesMock(vaultMock, objectGuid: guid);
            var objVerEx = new Common.ObjVerEx(vaultMock.Object, objectVersionAndPropertiesMock.Object);

            Assert.AreEqual($"hello {guid:B} world", objVerEx.ExpandSimpleConcatenation("hello %OBJECTGUID% world"));
        }
コード例 #9
0
        public void VaultGUID()
        {
            var guid      = Guid.NewGuid().ToString("B");
            var vaultMock = this.GetVaultMock();

            vaultMock.Setup(o => o.GetGUID()).Returns(guid);
            var objectVersionAndPropertiesMock = this.GetObjectVersionAndPropertiesMock(vaultMock);
            var objVerEx = new Common.ObjVerEx(vaultMock.Object, objectVersionAndPropertiesMock.Object);

            Assert.AreEqual($"hello {guid} world", objVerEx.ExpandSimpleConcatenation("hello %VAULTGUID% world"));
        }
コード例 #10
0
        public void DisplayID_NoExternalWithOriginal()
        {
            var originalId = new ObjID();

            originalId.SetIDs(101, 1234);
            var vaultMock = this.GetVaultMock();
            var objectVersionAndPropertiesMock = this.GetObjectVersionAndPropertiesMock(vaultMock, externalId: null, originalId: originalId);
            var objVerEx = new Common.ObjVerEx(vaultMock.Object, objectVersionAndPropertiesMock.Object);

            Assert.AreEqual("hello 1234 world", objVerEx.ExpandSimpleConcatenation("hello %DISPLAYID% world"));
        }
コード例 #11
0
        public void PropertyIDWithNumber()
        {
            var vaultMock = this.GetVaultMock();
            var objectVersionAndPropertiesMock = this.GetObjectVersionAndPropertiesMock
                                                 (
                vaultMock,
                propertyValues: new Tuple <int, MFDataType, object>(0, MFDataType.MFDatatypeText, "hello world")
                                                 );
            var objVerEx = new Common.ObjVerEx(vaultMock.Object, objectVersionAndPropertiesMock.Object);

            Assert.AreEqual("document is called: hello world", objVerEx.ExpandSimpleConcatenation("document is called: %PROPERTY_0%"));
        }
コード例 #12
0
        public void ReturnsNullIfPropertyIsNull()
        {
            // IDs used.
            var propertyDefId = 1234;
            var valueListId   = 123;

            // Mock the property definition operations object.
            var propertyDefinitionsMock = new Mock <VaultPropertyDefOperations>();

            propertyDefinitionsMock.Setup(m => m.GetPropertyDef(It.IsAny <int>()))
            .Returns((int propertyDef) =>
            {
                // Ensure that the property definition Id is correct.
                Assert.AreEqual(propertyDefId, propertyDef);

                // Return a property definition that is not based on a value list.
                return(new PropertyDef()
                {
                    ID = propertyDefId,
                    DataType = MFDataType.MFDatatypeLookup,
                    BasedOnValueList = true,
                    ValueList = valueListId
                });
            })
            .Verifiable();

            // Mock the vault.
            var vaultMock = this.GetVaultMock();

            vaultMock.Setup(m => m.PropertyDefOperations).Returns(propertyDefinitionsMock.Object);

            // Set up the data for the ObjVerEx.
            var objVer = new ObjVer();

            objVer.SetIDs(0, 1, 1);
            var objectVersionMock = new Mock <ObjectVersion>();

            objectVersionMock.SetupGet(m => m.ObjVer)
            .Returns(objVer);
            var properties = new PropertyValues();
            {
                var pv = new PropertyValue();
                pv.PropertyDef = propertyDefId;
                pv.TypedValue.SetValueToNULL(MFDataType.MFDatatypeLookup);
                properties.Add(1, pv);
            }

            // Create the ObjVerEx.
            var objVerEx = new Common.ObjVerEx(vaultMock.Object, objectVersionMock.Object, properties);

            // Use the method.
            Assert.IsNull(objVerEx.GetPropertyAsValueListItem(propertyDefId));
        }
コード例 #13
0
        public void InitializeData()
        {
            // Get the vault mock with metadata and populate it if needed.
            var mock = new Mock <Vault>
            {
                DefaultValue = DefaultValue.Mock
            };

            MockVault = mock.Object;

            // Create the ObjVerEx and set the properties.
            DefaultObjVerEx = new Common.ObjVerEx(MockVault, (int)MFBuiltInObjectType.MFBuiltInObjectTypeDocument, id: 1, version: 1);
        }
コード例 #14
0
        public void ReturnsDefaultIfPropertyDoesNotExistInCollection()
        {
            // Create objVerEx instance.
            var objVerEx = new Common.ObjVerEx
                           (
                this.GetVaultMock().Object,
                Mock.Of <ObjectVersion>(ov => ov.ObjVer == new ObjVer()),
                new PropertyValues()
                           );

            // Call method.
            var output = this.CallGetPropertyMethod(objVerEx, 12345);

            // Ensure we got a default output.
            Assert.AreEqual(default, output);
コード例 #15
0
        public void IndirectPropertyReferencePlaceholderNullReference()
        {
            // Create our mock objects.
            var vaultMock = this.GetVaultMock
                            (
                new Tuple <string, int>("first", 123),
                new Tuple <string, int>("last", 789)
                            );
            var root = new Common.ObjVerEx
                       (
                vaultMock.Object,
                this.GetObjectVersionAndPropertiesMock(vaultMock, 0, 1).Object
                       );

            // Create our methods for passing data around.
            string getPropertyText(Common.ObjVerEx o, int id)
            {
                Assert.Fail("Unexpected property retrieval");
                throw new InvalidOperationException();
            }

            string getObjectUrl(Common.ObjVerEx o, UrlTargetPlatform platform)
            {
                Assert.Fail("Unexpected url access");
                throw new InvalidOperationException();
            }

            Common.ObjVerEx getDirectReference(Common.ObjVerEx o, int id)
            {
                switch (id)
                {
                case 123:
                    return(null);

                default:
                    Assert.Fail("Unexpected property retrieval");
                    throw new InvalidOperationException();
                }
            }

            // Output is expected.
            // Note: property "first" returns null, as if the lookup were empty.
            // So the system should stop at this point and return an empty string.
            // BUT the other tokens (e.g. EXTERNALID) should still be resolved.
            var input = "resolves to: %PROPERTY_{first}.PROPERTY_456.PROPERTY_{last}% (%EXTERNALID%)";

            Assert.AreEqual("resolves to:  (123ABCDEF123)", root.ExpandSimpleConcatenation(input, getPropertyText, getDirectReference, getObjectUrl));
        }
コード例 #16
0
        public void ThrowsIfObjectTypeHasNoOwner()
        {
            // Set up our configuration.
            var childObjectType = 102;

            // Set up the object type operations mock.
            var objectTypeOperationsMock = new Mock <VaultObjectTypeOperations>();

            objectTypeOperationsMock
            .Setup(m => m.GetObjectType(It.IsAny <int>()))
            .Returns((int objectTypeId) =>
            {
                // Is it a child?
                if (objectTypeId == childObjectType)
                {
                    return(new ObjType()
                    {
                        ID = childObjectType,
                        NamePlural = "Children",
                        NameSingular = "Child",
                        HasOwnerType = false
                    });
                }

                // Unexpected object type.
                throw new InvalidOperationException("Unexpected object type");
            });

            // Set up the vault mock.
            var vaultMock = this.GetVaultMock();

            vaultMock.Setup(v => v.ObjectTypeOperations).Returns(objectTypeOperationsMock.Object);

            // Set up the ObjVerEx.
            var objVerEx = new Common.ObjVerEx
                           (
                vaultMock.Object,
                childObjectType,
                1,
                2
                           );

            // Run.
            objVerEx.GetOwner();
        }
コード例 #17
0
        public void ToLookupTest
        (
            bool latestVersion,
            int objectType,
            int objectID,
            int expectedOutput
        )
        {
            // Get the vault mock and populate it if needed.
            var vaultMock = this.GetVaultMock();

            // Create the ObjVerEx and set the properties.
            var    objVerEx = new Common.ObjVerEx(vaultMock.Object, objectType, objectID, 1);
            Lookup lkp      = objVerEx.ToLookup(latestVersion);

            // Assert.
            Assert.AreEqual(objectType, lkp.ObjectType);
            Assert.AreEqual(objectID, lkp.Item);
            Assert.AreEqual(expectedOutput, lkp.Version);
        }
コード例 #18
0
        public void IsTemplatePropertyShouldReturnCorrectly
        (
            bool input,
            bool expectedOutput
        )
        {
            // Create the Is Template property.
            var propertyValue = new PropertyValue
            {
                PropertyDef = (int)MFBuiltInPropertyDef.MFBuiltInPropertyDefIsTemplate
            };

            propertyValue.TypedValue.SetValue(MFDataType.MFDatatypeBoolean, input);

            // Create the ObjVerEx and set the properties.
            var objVerEx = new Common.ObjVerEx();

            objVerEx.Properties.Add(-1, propertyValue);

            // Assert.
            Assert.AreEqual(expectedOutput, objVerEx.IsTemplate());
        }
コード例 #19
0
        public void EmptyPropertiesShouldReturnFalse()
        {
            var objVerEx = new Common.ObjVerEx();

            Assert.AreEqual(false, objVerEx.IsTemplate());
        }
コード例 #20
0
        public void ReturnsEmptyCollectionIfPropertyNotInCollection()
        {
            // IDs used.
            var propertyDefId = 1234;
            var valueListId   = 123;

            // Mock the property definition operations object.
            var propertyDefinitionsMock = new Mock <VaultPropertyDefOperations>();

            propertyDefinitionsMock.Setup(m => m.GetPropertyDef(It.IsAny <int>()))
            .Returns((int propertyDef) =>
            {
                // Ensure that the property definition Id is correct.
                Assert.AreEqual(propertyDefId, propertyDef);

                // Return a property definition that is not based on a value list.
                return(new PropertyDef()
                {
                    ID = propertyDefId,
                    DataType = MFDataType.MFDatatypeMultiSelectLookup,
                    BasedOnValueList = true,
                    ValueList = valueListId
                });
            })
            .Verifiable();

            // Mock the object type operations object.
            var objectTypeOperationsMock = new Mock <VaultObjectTypeOperations>();

            objectTypeOperationsMock.Setup(m => m.GetObjectType(It.IsAny <int>()))
            .Returns((int objectTypeId) =>
            {
                return(new ObjType()
                {
                    ID = 101
                });
            });

            // Mock the vault.
            var vaultMock = this.GetVaultMock();

            vaultMock.Setup(m => m.PropertyDefOperations).Returns(propertyDefinitionsMock.Object);
            vaultMock.Setup(m => m.ObjectTypeOperations).Returns(objectTypeOperationsMock.Object);

            // Set up the data for the ObjVerEx.
            var objVer = new ObjVer();

            objVer.SetIDs(0, 1, 1);
            var objectVersionMock = new Mock <ObjectVersion>();

            objectVersionMock.SetupGet(m => m.ObjVer)
            .Returns(objVer);
            var properties = new PropertyValues();

            // Create the ObjVerEx.
            var objVerEx = new Common.ObjVerEx(vaultMock.Object, objectVersionMock.Object, properties);

            // Use the method.
            var items = objVerEx.GetPropertyAsValueListItems(propertyDefId);

            Assert.IsNotNull(items);
            Assert.AreEqual(0, items.Count);
        }
コード例 #21
0
        public void ReturnsCorrectValueListItems_OneInvalid()
        {
            // IDs used.
            var propertyDefId = 1234;
            var valueListId   = 123;

            // Mock the property definition operations object.
            var propertyDefinitionsMock = new Mock <VaultPropertyDefOperations>();

            propertyDefinitionsMock.Setup(m => m.GetPropertyDef(It.IsAny <int>()))
            .Returns((int propertyDef) =>
            {
                // Ensure that the property definition Id is correct.
                Assert.AreEqual(propertyDefId, propertyDef);

                // Return a property definition that is not based on a value list.
                return(new PropertyDef()
                {
                    ID = propertyDefId,
                    DataType = MFDataType.MFDatatypeMultiSelectLookup,
                    BasedOnValueList = true,
                    ValueList = valueListId
                });
            })
            .Verifiable();

            // Mock the value list item operations object.
            var valueListItemsMock = new Mock <VaultValueListItemOperations>();

            valueListItemsMock.Setup(m => m.GetValueListItemByID(It.IsAny <int>(), It.IsAny <int>()))
            .Returns((int vlid, int vliid) =>
            {
                // Did we get the right list and item ids?
                Assert.AreEqual(valueListId, vlid);

                if (vliid == 456)
                {
                    throw new COMException();
                }

                // Return an undeleted item.
                return(Mock.Of <ValueListItem>
                       (
                           i => i.ID == vliid &&
                           i.ValueListID == valueListId &&
                           i.Deleted == false
                       ));
            });

            // Mock the object type operations object.
            var objectTypeOperationsMock = new Mock <VaultObjectTypeOperations>();

            objectTypeOperationsMock.Setup(m => m.GetObjectType(It.IsAny <int>()))
            .Returns((int objectTypeId) =>
            {
                return(new ObjType()
                {
                    ID = 101
                });
            });

            // Mock the vault.
            var vaultMock = this.GetVaultMock();

            vaultMock.Setup(m => m.PropertyDefOperations).Returns(propertyDefinitionsMock.Object);
            vaultMock.Setup(m => m.ValueListItemOperations).Returns(valueListItemsMock.Object);
            vaultMock.Setup(m => m.ObjectTypeOperations).Returns(objectTypeOperationsMock.Object);

            // Set up the data for the ObjVerEx.
            var objVer = new ObjVer();

            objVer.SetIDs(0, 1, 1);
            var objectVersionMock = new Mock <ObjectVersion>();

            objectVersionMock.SetupGet(m => m.ObjVer)
            .Returns(objVer);
            var properties = new PropertyValues();
            {
                var pv = new PropertyValue();
                pv.PropertyDef = propertyDefId;
                pv.TypedValue.SetValue(MFDataType.MFDatatypeMultiSelectLookup, new object[] {
                    123,
                    456,
                    789
                });
                properties.Add(1, pv);
            }

            // Create the ObjVerEx.
            var objVerEx = new Common.ObjVerEx(vaultMock.Object, objectVersionMock.Object, properties);

            // Use the method.
            var items = objVerEx.GetPropertyAsValueListItems(propertyDefId);

            Assert.IsNotNull(items);
            Assert.AreEqual(2, items.Count);
            Assert.AreEqual(123, items[0].ID);
            Assert.AreEqual(789, items[1].ID);
            Assert.IsFalse(items[0].Deleted);
            Assert.IsFalse(items[1].Deleted);
        }
コード例 #22
0
        public void ReturnsParentObjectIfDataCorrect()
        {
            // Set up our configuration.
            var childObjectType  = 102;
            var parentObjectType = 101;
            var ownerPropertyDef = 1020;

            // Unfortunately this requires mocking deep into the vault because we can't override the default ObjVerEx behaviour for GetDirectReference...

            // Set up the property definitions mock.
            var propertyDefOperationsMock = new Mock <VaultPropertyDefOperations>();

            propertyDefOperationsMock
            .Setup(m => m.GetPropertyDef(It.IsAny <int>()))
            .Returns((int propertyDefId) => new PropertyDef()
            {
                BasedOnValueList = true,
                ValueList        = parentObjectType,
                ID       = propertyDefId,
                DataType = MFDataType.MFDatatypeLookup
            });

            // Set up the object type operations mock.
            var objectTypeOperationsMock = new Mock <VaultObjectTypeOperations>();

            objectTypeOperationsMock
            .Setup(m => m.GetObjectType(It.IsAny <int>()))
            .Returns((int objectTypeId) =>
            {
                // Is it a child?
                if (objectTypeId == childObjectType)
                {
                    return(new ObjType()
                    {
                        ID = childObjectType,
                        NamePlural = "Children",
                        NameSingular = "Child",
                        HasOwnerType = true,
                        OwnerType = parentObjectType,
                        RealObjectType = true
                    });
                }

                // Is it a parent?
                if (objectTypeId == parentObjectType)
                {
                    return(new ObjType()
                    {
                        ID = parentObjectType,
                        NamePlural = "Parents",
                        NameSingular = "Parent",
                        HasOwnerType = false,
                        OwnerPropertyDef = ownerPropertyDef,
                        RealObjectType = true
                    });
                }

                // Unexpected object type.
                throw new InvalidOperationException("Unexpected object type");
            });

            // Set up the vault mock.
            var vaultMock = this.GetVaultMock();

            vaultMock.Setup(v => v.ObjectTypeOperations).Returns(objectTypeOperationsMock.Object);
            vaultMock.Setup(v => v.PropertyDefOperations).Returns(propertyDefOperationsMock.Object);

            // Set up the expected object.
            var expectedParent = new Common.ObjVerEx(vaultMock.Object, parentObjectType, 1234, -1);

            // Set up the ObjVerEx.
            var objectVersion = new Mock <ObjectVersion>();

            objectVersion
            .Setup(m => m.ObjVer)
            .Returns(() =>
            {
                var objVer = new ObjVer();
                objVer.SetIDs(childObjectType, 1, 2);
                return(objVer);
            });
            var objVerEx = new Common.ObjVerEx
                           (
                vaultMock.Object,
                objectVersion.Object,
                new PropertyValues()
                           );

            // Set up the owner property.
            {
                var ownerProperty = new PropertyValue()
                {
                    PropertyDef = ownerPropertyDef
                };
                ownerProperty.TypedValue.SetValue(MFDataType.MFDatatypeLookup, new Lookup()
                {
                    Item       = 1234,
                    Deleted    = false,
                    ObjectType = parentObjectType
                });
                objVerEx.Properties.Add(-1, ownerProperty);
            }

            // Run.
            var owner = objVerEx.GetOwner();

            // Did we get the right object back?
            Assert.IsNotNull(owner);
            Assert.AreEqual(expectedParent.Type, owner.Type);
            Assert.AreEqual(expectedParent.ID, owner.ID);
        }
コード例 #23
0
        public void TryGetPropertyText_Setup()
        {
            // Mock the property definition operations object.
            Mock <VaultPropertyDefOperations> propertyDefinitionsMock = new Mock <VaultPropertyDefOperations>();

            propertyDefinitionsMock.Setup(m => m.GetPropertyDefIDByAlias(It.IsAny <string>()))
            .Returns((string propertyAlias) =>
            {
                return(propertyAlias == aliasCustomProp ? idCustomProp : -1);
            })
            .Verifiable();

            propertyDefinitionsMock.Setup(m => m.GetPropertyDef(It.IsAny <int>()))
            .Returns((int propertyDef) =>
            {
                switch (propertyDef)
                {
                case (int)MFBuiltInPropertyDef.MFBuiltInPropertyDefNameOrTitle:
                case (int)MFBuiltInPropertyDef.MFBuiltInPropertyDefKeywords:
                case (int)MFBuiltInPropertyDef.MFBuiltInPropertyDefMessageID:
                case idCustomProp:
                    return(new PropertyDef
                    {
                        ID = propertyDef,
                        DataType = MFDataType.MFDatatypeText,
                        Name = $"Property_{propertyDef}",
                    });

                default:
                    return(null);
                }
            })
            .Verifiable();

            // Mock the vault.
            Mock <Vault> vaultMock = GetVaultMock();

            vaultMock.Setup(m => m.PropertyDefOperations).Returns(propertyDefinitionsMock.Object);

            // Set up the data for the ObjVerEx.
            ObjVer objVer = new ObjVer();

            objVer.SetIDs((int)MFBuiltInObjectType.MFBuiltInObjectTypeDocument, ID: 1, Version: 1);
            Mock <ObjectVersion> objectVersionMock = new Mock <ObjectVersion>();

            objectVersionMock.SetupGet(m => m.ObjVer).Returns(objVer);

            // Setup properties for NameOrTitle and MessageID (NOT: Keywords)
            PropertyValue  pv;
            PropertyValues properties = new PropertyValues();

            {
                // NameOrTitle
                pv = new PropertyValue
                {
                    PropertyDef = (int)MFBuiltInPropertyDef.MFBuiltInPropertyDefNameOrTitle,
                };
                pv.TypedValue.SetValue(MFDataType.MFDatatypeText, "valueNameOrTitle");
                properties.Add(1, pv);

                // MessageID
                pv = new PropertyValue
                {
                    PropertyDef = (int)MFBuiltInPropertyDef.MFBuiltInPropertyDefMessageID,
                };
                pv.TypedValue.SetValue(MFDataType.MFDatatypeText, null);
                properties.Add(2, pv);

                // CustomProp
                pv = new PropertyValue
                {
                    PropertyDef = idCustomProp,
                };
                pv.TypedValue.SetValue(MFDataType.MFDatatypeText, "valueCustomProp");
                properties.Add(3, pv);
            }

            // Create the ObjVerEx.
            objVerEx = new Common.ObjVerEx(vaultMock.Object, objectVersionMock.Object, properties);

            // Get the test property params object
            MFIdentifier identCurrent = null;

            envNull = new PropertyDefTestEnvironment(identCurrent, objVerEx);

            identCurrent = new MFIdentifier((int)MFBuiltInPropertyDef.MFBuiltInPropertyDefNameOrTitle);
            identCurrent.Resolve(vaultMock.Object, typeof(PropertyDef));
            envNameOrTitle = new PropertyDefTestEnvironment(identCurrent, objVerEx);

            identCurrent = new MFIdentifier((int)MFBuiltInPropertyDef.MFBuiltInPropertyDefKeywords);
            identCurrent.Resolve(vaultMock.Object, typeof(PropertyDef));
            envKeywords = new PropertyDefTestEnvironment(identCurrent, objVerEx);

            identCurrent = new MFIdentifier((int)MFBuiltInPropertyDef.MFBuiltInPropertyDefMessageID);
            identCurrent.Resolve(vaultMock.Object, typeof(PropertyDef));
            envMessageID = new PropertyDefTestEnvironment(identCurrent, objVerEx);

            identCurrent = new MFIdentifier(aliasCustomProp);
            identCurrent.Resolve(vaultMock.Object, typeof(PropertyDef));
            envCustomProp = new PropertyDefTestEnvironment(identCurrent, objVerEx);

            identCurrent = new MFIdentifier("incorrectAlias");
            identCurrent.Resolve(vaultMock.Object, typeof(PropertyDef));
            envNotResolved = new PropertyDefTestEnvironment(identCurrent, objVerEx);
        }
コード例 #24
0
        public void IndirectPropertyReferencePlaceholderMixture()
        {
            // Create our mock objects.
            var vaultMock = this.GetVaultMock
                            (
                new Tuple <string, int>("first", 123),
                new Tuple <string, int>("last", 789)
                            );
            var objectTwo = new Common.ObjVerEx
                            (
                vaultMock.Object,
                this.GetObjectVersionAndPropertiesMock(vaultMock, 0, 456).Object
                            );
            var objectOne = new Common.ObjVerEx
                            (
                vaultMock.Object,
                this.GetObjectVersionAndPropertiesMock(vaultMock, 0, 123).Object
                            );
            var root = new Common.ObjVerEx
                       (
                vaultMock.Object,
                this.GetObjectVersionAndPropertiesMock(vaultMock, 0, 1).Object
                       );

            // Create our methods for passing data around.
            string getPropertyText(Common.ObjVerEx o, int id)
            {
                switch (id)
                {
                case 789:
                    return("hello world");

                default:
                    Assert.Fail("Unexpected property retrieval");
                    throw new InvalidOperationException();
                }
            }

            Common.ObjVerEx getDirectReference(Common.ObjVerEx o, int id)
            {
                switch (id)
                {
                case 123:
                    return(objectOne);

                case 456:
                    return(objectTwo);

                default:
                    Assert.Fail("Unexpected property retrieval");
                    throw new InvalidOperationException();
                }
            }

            string getObjectUrl(Common.ObjVerEx o, UrlTargetPlatform platform)
            {
                Assert.Fail("Unexpected url access");
                throw new InvalidOperationException();
            }

            // Output is expected.
            var input = "resolves to: %PROPERTY_{first}.PROPERTY_456.PROPERTY_{last}%";

            Assert.AreEqual("resolves to: hello world", root.ExpandSimpleConcatenation(input, getPropertyText, getDirectReference, getObjectUrl));
        }
コード例 #25
0
        public void ReturnsValueListItemIfIsDeleted()
        {
            // IDs used.
            var propertyDefId   = 1234;
            var valueListId     = 123;
            var valueListItemId = 1;

            // Mock the property definition operations object.
            var propertyDefinitionsMock = new Mock <VaultPropertyDefOperations>();

            propertyDefinitionsMock.Setup(m => m.GetPropertyDef(It.IsAny <int>()))
            .Returns((int propertyDef) =>
            {
                // Ensure that the property definition Id is correct.
                Assert.AreEqual(propertyDefId, propertyDef);

                // Return a property definition that is not based on a value list.
                return(new PropertyDef()
                {
                    ID = propertyDefId,
                    DataType = MFDataType.MFDatatypeLookup,
                    BasedOnValueList = true,
                    ValueList = valueListId
                });
            })
            .Verifiable();

            // Mock the value list item operations object.
            var valueListItemsMock = new Mock <VaultValueListItemOperations>();

            valueListItemsMock.Setup(m => m.GetValueListItemByID(It.IsAny <int>(), It.IsAny <int>()))
            .Returns((int vlid, int vliid) =>
            {
                // Did we get the right list and item ids?
                Assert.AreEqual(valueListId, vlid);
                Assert.AreEqual(valueListItemId, vliid);

                // Deleted is okay.
                return(Mock.Of <ValueListItem>(i => i.ID == valueListItemId && i.ValueListID == valueListId && i.Deleted == true));
            });

            // Mock the vault.
            var vaultMock = this.GetVaultMock();

            vaultMock.Setup(m => m.PropertyDefOperations).Returns(propertyDefinitionsMock.Object);
            vaultMock.Setup(m => m.ValueListItemOperations).Returns(valueListItemsMock.Object);

            // Set up the data for the ObjVerEx.
            var objVer = new ObjVer();

            objVer.SetIDs(0, 1, 1);
            var objectVersionMock = new Mock <ObjectVersion>();

            objectVersionMock.SetupGet(m => m.ObjVer)
            .Returns(objVer);
            var properties = new PropertyValues();
            {
                var pv = new PropertyValue();
                pv.PropertyDef = propertyDefId;
                pv.TypedValue.SetValue(MFDataType.MFDatatypeLookup, valueListItemId);
                properties.Add(1, pv);
            }

            // Create the ObjVerEx.
            var objVerEx = new Common.ObjVerEx(vaultMock.Object, objectVersionMock.Object, properties);

            // Use the method.
            var item = objVerEx.GetPropertyAsValueListItem(propertyDefId);

            Assert.IsNotNull(item);
            Assert.AreEqual(valueListItemId, item.ID);
            Assert.AreEqual(valueListId, item.ValueListID);
            Assert.IsTrue(item.Deleted);
        }