public async Task GetTransitionsAsync_ChangeStateForArtifactAsync_SuccessfullyCallsRepo()
        {
            // Arrange
            int       itemId       = 1;
            int       userId       = 1;
            int       workflowId   = 4;
            int       fromStateId  = 2;
            int       toStateId    = 5;
            const int transitionId = 10;

            var vcArtifactInfo = new VersionControlArtifactInfo
            {
                Id           = itemId,
                VersionCount = 10,
                LockedByUser = new UserGroup
                {
                    Id = userId
                }
            };

            _artifactVersionsRepositoryMock.Setup(t => t.IsItemDeleted(itemId))
            .ReturnsAsync(false);
            _artifactVersionsRepositoryMock.Setup(t => t.GetVersionControlArtifactInfoAsync(itemId, null, 1))
            .ReturnsAsync(vcArtifactInfo);
            _applicationSettingsRepositoryMock.Setup(t => t.GetTenantInfo(It.IsAny <IDbTransaction>())).ReturnsAsync(new TenantInfo()
            {
                TenantId = Guid.NewGuid().ToString()
            });

            var wfStateChangeParam = new WorkflowStateChangeParameter
            {
                CurrentVersionId = 10,
                ToStateId        = toStateId,
                FromStateId      = fromStateId,
                TransitionId     = transitionId
            };

            var fromState = new WorkflowState
            {
                Id         = fromStateId,
                WorkflowId = workflowId,
                Name       = "Ready"
            };
            var toState = new WorkflowState
            {
                Id         = toStateId,
                Name       = "Close",
                WorkflowId = workflowId
            };

            _workflowRepositoryMock.Setup(t => t.GetStateForArtifactAsync(userId, itemId, int.MaxValue, true))
            .ReturnsAsync(fromState);

            var transition = new WorkflowTransition()
            {
                FromState  = fromState,
                Id         = transitionId,
                ToState    = toState,
                WorkflowId = workflowId,
                Name       = "Ready to Closed"
            };

            _workflowRepositoryMock.Setup(
                t => t.GetTransitionForAssociatedStatesAsync(userId, itemId, workflowId, fromStateId, toStateId, transitionId))
            .ReturnsAsync(transition);
            _workflowRepositoryMock.Setup(
                t => t.GetWorkflowEventTriggersForTransition(userId, itemId, workflowId, fromStateId, toStateId, transitionId))
            .ReturnsAsync(new WorkflowTriggersContainer());


            _workflowRepositoryMock.Setup(t => t.ChangeStateForArtifactAsync(1, itemId, It.IsAny <WorkflowStateChangeParameterEx>(), It.IsAny <IDbTransaction>()))
            .ReturnsAsync(toState);

            // Act
            var result = await _workflowServiceMock.ChangeStateForArtifactAsync(1, "admin", itemId, wfStateChangeParam);

            // Assert
            Assert.AreEqual(toState, result.Item);
            Assert.AreEqual(QueryResultCode.Success, result.ResultCode);
        }