public void Create(TaskList entityToCreate)
        {
            var taskList = entityToCreate.MapToTaskListEntity();
            var taskListShare = new TaskListShareEntity(entityToCreate.RowKey, entityToCreate.Owner.RowKey);

            TaskLists.Add(taskList);
            TaskListShares.Add(taskListShare);
        }
        /// <summary>
        /// Creates a new TaskList.
        /// </summary>
        /// <param name="entityToCreate">TaskList domain object with the properties to map to an TaskLists table entity</param>
        public void Create(TaskList entityToCreate)
        {
            entityToCreate.PartitionKey = entityToCreate.Owner.RowKey;
            entityToCreate.RowKey = ShortGuid.NewGuid();

            var taskListEntity = entityToCreate.MapToTaskListEntity();
            _unitOfWork.Create(taskListEntity, "TaskLists");

            // the User that creates the new TaskList is automatically add in the TaskList Shares list.
            var sharePartitionKey = string.Format("{0}+{1}", entityToCreate.PartitionKey, entityToCreate.RowKey);
            var taskListShare = new TaskListShareEntity(sharePartitionKey, entityToCreate.Owner.RowKey);
            _unitOfWork.Create(taskListShare, "TaskListShares");
        }
 /// <summary>
 /// Share the TaskList with a User.
 /// </summary>
 /// <param name="taskList">The TaskList to be shared</param>
 /// <param name="userId">RowKey from the User</param>
 public void AddShare(TaskList taskList, string userId)
 {
     var sharePartitionKey = string.Format("{0}+{1}", taskList.PartitionKey, taskList.RowKey);
     var share = new TaskListShareEntity(sharePartitionKey, userId);
     _unitOfWork.Create(share, "TaskListShares");
 }
        public void TaskListsRepositoryHasPermisionToEditCallsGetFromTheUnitOfWork()
        {
            // Arrange
            var user = new User { PartitionKey = User1PartitionKey, RowKey = User1RowKey };
            var taskList = new TaskList("Test title", user) { PartitionKey = TaskList1PartitionKey, RowKey = _taskList1RowKey };
            var taskListShare = new TaskListShareEntity(string.Format("{0}+{1}", TaskList1PartitionKey, _taskList1RowKey), User1RowKey);
            taskList.Share.Add(user);

            var unitOfWorkMock = new Mock<IUnitOfWork>();
            unitOfWorkMock.Setup(u => u.Get("TaskListShares", It.IsAny<Expression<Func<TaskListShareEntity, bool>>>())).Returns(taskListShare);
            var repository = new TaskListsRepository(unitOfWorkMock.Object);

            // Act
            var result = repository.HasPermissionToEdit(user, taskList);

            // Assert
            Assert.IsTrue(result);
            unitOfWorkMock.Verify(uow => uow.Get("TaskListShares", It.IsAny<Expression<Func<TaskListShareEntity, bool>>>()), Times.Once());
        }