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; }
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) ); }
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); }
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")); }
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%")); }
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")); }
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")); }
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")); }
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")); }
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")); }
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%")); }
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)); }
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); }
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);
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)); }
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(); }
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); }
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()); }
public void EmptyPropertiesShouldReturnFalse() { var objVerEx = new Common.ObjVerEx(); Assert.AreEqual(false, objVerEx.IsTemplate()); }
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); }
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); }
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); }
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); }
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)); }
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); }