public void UpdateAfterModifyingValue_CheckNewVersion(UpdateUserDataParams data) { var now = DateTime.UtcNow; m_dateTimeProviderMock.Setup(x => x.UtcNow).Returns(now); CreateTestUserData(); var currentUserData = m_userDataRepository.FindCurrentVersionOfUserDataWithLoaGreaterThan(FirstName, FirstNameDataType, LowLoa, now); var sourceUserCurrentUserData = currentUserData.Single(x => x.DataSource.Equals(m_userDataSource)); SetUserData(sourceUserCurrentUserData, data); m_dataVersioningProxy.UpdateUserData(new[] { sourceUserCurrentUserData }); m_sessionManager.OpenSession() .Flush(); //Flush has to be here, otherwise NHibernate returns old version with specified ValidTo even though WHERE clause in FindActualVersionOfUserDataWithLoaGreaterThan is set to ValidTo == null var newUserDataVersion = m_userDataRepository.FindCurrentVersionOfUserDataWithLoaGreaterThan(sourceUserCurrentUserData.Value, sourceUserCurrentUserData.UserDataType.DataTypeValue, LowLoa, now); var sourceUserNewUserData = newUserDataVersion.Single(x => x.DataSource.Equals(m_userDataSource)); CheckUpdatedUserData(sourceUserNewUserData, data); Assert.Null(sourceUserNewUserData.ActiveTo); Assert.Equal(now, sourceUserNewUserData.ActiveFrom); Assert.Equal(sourceUserCurrentUserData.DataSource, sourceUserNewUserData.DataSource); Assert.Equal(sourceUserCurrentUserData.ParentUserData, sourceUserNewUserData.ParentUserData); Assert.Equal(sourceUserCurrentUserData.User, sourceUserNewUserData.User); Assert.Equal(sourceUserCurrentUserData.VerifiedBy, sourceUserNewUserData.VerifiedBy); Assert.NotEqual(sourceUserCurrentUserData.Id, sourceUserNewUserData.Id); }
private void CheckUpdatedUserData(UserDataEntity updatedUserData, UpdateUserDataParams data) { switch (data.UpdateType) { case UpdateType.Value: Assert.Equal(data.Value, updatedUserData.Value); break; case UpdateType.Type: Assert.Equal(data.Type, updatedUserData.UserDataType.DataTypeValue); break; case UpdateType.LevelOfAssurance: Assert.Equal(data.LevelOfAssurance, updatedUserData.LevelOfAssurance.Name); break; default: throw new ArgumentOutOfRangeException(); } }
private void SetUserData(UserDataEntity loadedUserData, UpdateUserDataParams data) { switch (data.UpdateType) { case UpdateType.Value: loadedUserData.Value = data.Value; break; case UpdateType.Type: loadedUserData.UserDataType = CreateTestDataType(data.Type); break; case UpdateType.LevelOfAssurance: loadedUserData.LevelOfAssurance = CreateTestLoa(data.LevelOfAssurance); break; default: throw new ArgumentOutOfRangeException(); } }
public void UpdateAfterModifyingValue_CheckOldVersion(UpdateUserDataParams data) { var now = DateTime.UtcNow; m_dateTimeProviderMock.Setup(x => x.UtcNow).Returns(now); CreateTestUserData(); var loadedUserData = m_dataVersioningProxy.FindUserDataWithLoaGreaterThan(FirstName, FirstNameDataType, LowLoa); var sourceUserCurrentUserData = loadedUserData.Single(x => x.DataSource.Equals(m_userDataSource)); SetUserData(sourceUserCurrentUserData, data); m_dataVersioningProxy.UpdateUserData(new[] { sourceUserCurrentUserData }); var oldVersion = m_userDataRepository.FindById <UserDataEntity>(sourceUserCurrentUserData.Id); Assert.NotNull(oldVersion.ActiveTo); Assert.Equal(now, oldVersion.ActiveTo); Assert.Equal(FirstName, oldVersion.Value); Assert.Equal(FirstNameDataType, oldVersion.UserDataType.DataTypeValue); Assert.Equal(MediumLoa, oldVersion.LevelOfAssurance.Name); }