Inheritance: AResult
		public void Update_GivenNewUsersAttributes_CreateUserObjectReturnSuccess()
		{
			var extension = Make_WayfProfileExtension();
			var user = new UserInfo
			{
				Guid = new Guid("63a0348b-ab4b-8847-9c71-2d0b4771b0fe"),
				Email = "*****@*****.**"
			};
			var userFolder = new Folder
			{
				ID = 34
			};
				
			PortalRequest.SetupGet(r => r.User).Returns(Make_UserManager());
			PortalRepository.Setup(r => r.UserInfoGet(user.Guid, null, null, null)).Returns(new List<UserInfo>{user});
			McmRepository.Setup(r => r.FolderGet(null, null, null)).Returns(Make_Folders());
			McmRepository.Setup(r => r.FolderCreate(user.Guid, null, user.Guid.ToString(), 90, Settings.UserFolderTypeId)).Returns(userFolder.ID).Verifiable();
			McmRepository.Setup(r => r.ObjectCreate(user.Guid, Settings.UserObjectTypeId, userFolder.ID)).Returns(1).Verifiable();
			McmRepository.Setup(r => r.MetadataSet(user.Guid, It.IsAny<Guid>(), Settings.UserProfileMetadataSchemaGuid, Settings.UserProfileLanguageCode, 0, It.Is<XDocument>(x => x.ToString(SaveOptions.DisableFormatting) == CHAOS_PROFILE), user.Guid)).Returns(1).Verifiable();

			var result = extension.Update(user.Guid, WAYF_ATTRIBUTES);

			McmRepository.Verify();

			Assert.That(result, Is.Not.Null);
			Assert.That(result.Value, Is.EqualTo(1));
		}
        public void SystemPermissionsEnum_SystemPermissionsIsFour_ShouldHaveManageFlag()
        {
            var userInfo = new UserInfo();
            userInfo.SystemPermissions = 4;

            var actual = userInfo.SystemPermissonsEnum;

            Assert.That(actual.HasFlag(SystemPermissons.Manage), Is.True);
        }
        public void Create_WithPermission_CallMcmRepositoryAndReturnTheSchema()
        {
            var extension = this.Make_MetadMetadataSchemaExtension();
            var schema    = Make_MetadataSchema();
            var userInfo  = new UserInfo
                {
                    SystemPermissonsEnum = SystemPermissons.Manage,
                    Guid = new Guid("c0b231e9-7d98-4f52-885e-af4837faa352")
                };
            var groupGuids = new Guid[0];
            PortalRequest.SetupGet(p => p.User).Returns(userInfo);
            McmRepository.Setup(m => m.MetadataSchemaGet(userInfo.Guid, groupGuids, schema.Guid, MetadataSchemaPermission.Read)).Returns(new[] { schema });

            var result = extension.Create(schema.Name, schema.Schema, schema.Guid);

            Assert.AreEqual(schema, result);
        }
		public void Update_GivenExistingUsersAttributesWithChanges_UpdateUserObjectReturnSuccess()
		{
			var extension = Make_WayfProfileExtension();
			var user = new UserInfo
			{
				Guid = new Guid("63a0348b-ab4b-8847-9c71-2d0b4771b0fe"),
				Email = "*****@*****.**"
			};
			var existingMetadata = new Metadata
			{
				Guid = new Guid("70a0348b-ab4b-8847-9c71-2d0b4771b0ff"),
				MetadataSchemaGuid = Settings.UserProfileMetadataSchemaGuid,
				MetadataXml = XDocument.Parse("<CHAOS.Profile></CHAOS.Profile>"),
				RevisionID = 3
			};
			var userObject = new Mcm.Data.Dto.Object
			{
				Guid = user.Guid,
				Metadatas = new List<Metadata>
				{
					new Metadata{Guid = new Guid("70a0348b-ab4b-8847-0000-2d0b4771b0ff")},
					existingMetadata
				}
			};

			PortalRequest.SetupGet(r => r.User).Returns(Make_UserManager());
			PortalRepository.Setup(r => r.UserInfoGet(user.Guid, null, null, null)).Returns(new List<UserInfo> { user });
			McmRepository.Setup(r => r.ObjectGet(user.Guid, true, false, false, false, false)).Returns(userObject).Verifiable();
			McmRepository.Setup(r => r.MetadataSet(user.Guid, existingMetadata.Guid, Settings.UserProfileMetadataSchemaGuid, Settings.UserProfileLanguageCode, 4, It.Is<XDocument>(x => x.ToString(SaveOptions.DisableFormatting) == CHAOS_PROFILE), user.Guid)).Returns(1).Verifiable();

			var result = extension.Update(user.Guid, WAYF_ATTRIBUTES);

			McmRepository.Verify();

			Assert.That(result, Is.Not.Null);
			Assert.That(result.Value, Is.EqualTo(1));
		}
		public void Update_GivenExistingUsersAttributesWithSomeEmptyProperties_UpdateUserObjectReturnSuccess()
		{
			var extension = Make_WayfProfileExtension();
			const string expectedXmlString = "<CHAOS.Profile><Name>Jens farmer</Name><Title>Walker</Title><About></About><Organization>Institut</Organization><Emails><Email>[email protected]</Email></Emails><Phonenumbers><Phonenumber></Phonenumber></Phonenumbers><Websites><Website></Website></Websites><Skype></Skype><LinkedIn></LinkedIn><Twitter></Twitter><Address></Address><City></City><ZipCode></ZipCode><Country>Denmark</Country></CHAOS.Profile>";
			var user = new UserInfo
			{
				Guid = new Guid("63a0348b-ab4b-8847-9c71-2d0b4771b0fe"),
				Email = "*****@*****.**"
			};
			var existingMetadata = new Metadata
			{
				Guid = new Guid("70a0348b-ab4b-8847-9c71-2d0b4771b0ff"),
				MetadataSchemaGuid = Settings.UserProfileMetadataSchemaGuid,
				MetadataXml = XDocument.Parse("<CHAOS.Profile><Name></Name><Title>Walker</Title><About></About><Organization>Institut</Organization><Emails><Email></Email></Emails><Phonenumbers><Phonenumber></Phonenumber></Phonenumbers><Websites><Website></Website></Websites><Skype></Skype><LinkedIn></LinkedIn><Twitter></Twitter><Address></Address><City></City><ZipCode></ZipCode><Country>Denmark</Country></CHAOS.Profile>"),
				RevisionID = 3
			};
			var userObject = new Mcm.Data.Dto.Object
			{
				Guid = user.Guid,
				Metadatas = new List<Metadata>
				{
					new Metadata{Guid = new Guid("70a0348b-ab4b-8847-0000-2d0b4771b0ff")},
					existingMetadata
				}
			};

			PortalRequest.SetupGet(r => r.User).Returns(Make_UserManager());
			PortalRepository.Setup(r => r.UserInfoGet(user.Guid, null, null, null)).Returns(new List<UserInfo> { user });
			McmRepository.Setup(r => r.ObjectGet(user.Guid, true, false, false, false, false)).Returns(userObject).Verifiable();
			McmRepository.Setup(r => r.MetadataSet(user.Guid, existingMetadata.Guid, Settings.UserProfileMetadataSchemaGuid, Settings.UserProfileLanguageCode, 4, It.Is<XDocument>(x => x.ToString(SaveOptions.DisableFormatting) == expectedXmlString), user.Guid)).Returns(1).Verifiable();

			var result = extension.Update(user.Guid, PARTIAL_WAYF_ATTRIBUTES);

			McmRepository.Verify();

			Assert.That(result, Is.Not.Null);
			Assert.That(result.Value, Is.EqualTo(1));
		}
    public void Set_GivenValidProfileResultButMetadataDoesntExist_SetMetadata()
    {
      var extension = Make_ProfileExtension();
      var user = new UserInfo {Guid = new Guid("10000000-0000-0000-0000-000000000001")};
      PortalRequest.Setup(p => p.User).Returns(user);
      McmRepository.Setup(
        m => m.ObjectGet(new Guid("10000000-0000-0000-0000-000000000001"), true, false, false, false, false))
                   .Returns(new Object());
      
      var result = extension.Set(new ProfileResult{Name = "John Doe", Emails = new []{"*****@*****.**"}});

      Assert.That(result.WasSuccess, Is.True);
      McmRepository.Verify(m => m.MetadataSet(user.Guid, It.IsAny<Guid>(), It.IsAny<Guid>(), "da", 0, It.IsAny<XDocument>(), user.Guid));
    }
    public void Set_GivenValidProfileResult_SetMetadata()
    {
      var extension = Make_ProfileExtension();
      var user = new UserInfo {Guid = new Guid("10000000-0000-0000-0000-000000000001")};
      PortalRequest.Setup(p => p.User).Returns(user);
      McmRepository.Setup(
        m => m.ObjectGet(new Guid("10000000-0000-0000-0000-000000000001"), true, false, false, false, false))
                   .Returns(new Object
                   {
                     Metadatas = new[]{new Metadata
                         {
                           MetadataXml = XDocument.Parse("<CHAOS.Profile><Name>John Doe</Name><Title>Phd</Title><About>about text</About><Organization>DTU</Organization><Emails><Email>[email protected]</Email></Emails><Phonenumbers><String>(+45) 8888 8888</String></Phonenumbers><Websites><Website>www.example.com</Website></Websites><Skype>john.dtu.doe</Skype><LinkedIn>link</LinkedIn><Twitter>link</Twitter><Address>street and number</Address><City>city name</City><Zipcode>1234</Zipcode><Country>DK</Country></CHAOS.Profile>")
                         }}
                   });
      
      var result = extension.Set(new ProfileResult{Name = "John Doe"});

      Assert.That(result.WasSuccess, Is.True);
      McmRepository.Verify(m => m.MetadataSet(user.Guid, It.IsAny<Guid>(), It.IsAny<Guid>(), "da", 0, It.IsAny<XDocument>(), user.Guid));
    }