public async Task GetFormDataAsyncReturnsSerializedObjectTest()
        {
            var entity = new FormDataEntity { SerializedFormData = "SerializedObject" };

            var mockLoggerService = new Mock<ILoggerService>();
            var mockUnitOfWork = new Mock<IUnitOfWork>();
            mockUnitOfWork.Setup(x => x.Repository<FormDataEntity>().GetAsync(It.IsAny<Expression<Func<FormDataEntity, bool>>>()))
                .Returns(() => Task.FromResult(entity));

            var persistenceService = new FormsPersistenceService(mockUnitOfWork.Object, mockLoggerService.Object);

            var result = await persistenceService.GetFormDataAsync(It.IsAny<Guid>());
            Assert.AreEqual(typeof(string), result.GetType());
        }
        public async Task GetFormDataFragmentAsyncCallsCorrectServiceMethodsTest()
        {
            var entity = new FormDataEntity { SerializedFormData = "SerializedObject" };
            var mockDataFragmentService = new Mock<IDataFragmentService>();

            var mockUnitOfWork = new Mock<IUnitOfWork>();
            mockUnitOfWork.Setup(x => x.Repository<FormDataEntity>().GetAsync(It.IsAny<Expression<Func<FormDataEntity, bool>>>()))
                .Returns(() => Task.FromResult(entity));

            var persistenceService = new FormsPersistenceFragmentService(mockUnitOfWork.Object, mockDataFragmentService.Object);

            await persistenceService.GetFormDataFragmentAsync(It.IsAny<Guid>(), It.IsAny<string>(), It.IsAny<KeyValuePair<string, string>>());
            mockDataFragmentService.Verify(m => m.GetFragment(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<KeyValuePair<string, string>>()));
        }
        public async Task GetFormDataAsyncCallsCorrectUnitOfWorkMethodTest()
        {
            var entity = new FormDataEntity();

            var mockLoggerService = new Mock<ILoggerService>();
            var mockUnitOfWork = new Mock<IUnitOfWork>();
            mockUnitOfWork.Setup(x => x.Repository<FormDataEntity>().GetAsync(It.IsAny<Expression<Func<FormDataEntity, bool>>>()))
                .Returns(() => Task.FromResult(entity));

            var persistenceService = new FormsPersistenceService(mockUnitOfWork.Object, mockLoggerService.Object);

            await persistenceService.GetFormDataAsync(It.IsAny<Guid>());
            mockUnitOfWork.Verify(m => m.Repository<FormDataEntity>().GetAsync(It.IsAny<Expression<Func<FormDataEntity, bool>>>()), Times.Once);
        }
        public async Task SaveFormDataAsync(Guid formDataId, string serializedFormData)
        {
            var formDataEntity = await GetFormDataEntity(formDataId);

            if (formDataEntity == null)
            {
                formDataEntity = new FormDataEntity(formDataId, serializedFormData);
                _unitOfWork.Repository<FormDataEntity>().Add(formDataEntity);
            }
            else
            {
                formDataEntity.UpdateFormData(serializedFormData);
                _unitOfWork.Repository<FormDataEntity>().Update(formDataEntity);
            }

            await _unitOfWork.SaveChanges();
        }