コード例 #1
0
        public async Task ChangeStateForArtifactAsync_WithEditPermissions_SuccessfullyReturnsState()
        {
            // Arrange
            int userId         = 1;
            int workflowId     = 4;
            int artifactId     = 1;
            int desiredStateId = 6;

            var permissionsRepository = CreatePermissionsRepositoryMock(new[] { artifactId }, userId, RolePermissions.Edit);
            var cxn        = new SqlConnectionWrapperMock();
            var repository = new SqlWorkflowRepository(cxn.Object, permissionsRepository.Object);

            var stateChangeParam = new WorkflowStateChangeParameterEx
            {
                ToStateId = desiredStateId
            };
            var expected = new WorkflowState
            {
                Id         = desiredStateId,
                Name       = "Ready",
                WorkflowId = workflowId
            };

            cxn.SetupQueryAsync("GetArtifactBasicDetails",
                                new Dictionary <string, object>
            {
                { "userId", userId },
                { "itemId", artifactId }
            },
                                new List <ArtifactBasicDetails> {
                new ArtifactBasicDetails {
                    PrimitiveItemTypePredefined = (int)ItemTypePredefined.Actor
                }
            });
            cxn.SetupQueryAsync("ChangeStateForArtifact",
                                new Dictionary <string, object>
            {
                { "userId", userId },
                { "artifactId", artifactId },
                { "desiredStateId", desiredStateId },
                { "result", null }
            },
                                new List <SqlWorkFlowState>
            {
                new SqlWorkFlowState()
                {
                    WorkflowId        = workflowId,
                    WorkflowStateId   = desiredStateId,
                    WorkflowStateName = "Ready",
                    Result            = 0
                }
            });
            // Act
            var result = (await repository.ChangeStateForArtifactAsync(userId, artifactId, stateChangeParam));

            // Assert
            Assert.AreEqual(workflowId, result.WorkflowId);
            Assert.AreEqual(desiredStateId, result.Id);
        }
コード例 #2
0
 public StateChangeExecutor(
     int userId, WorkflowStateChangeParameterEx input,
     ISqlHelper sqlHelper,
     IStateChangeExecutorRepositories stateChangeExecutorRepositories,
     IStateChangeExecutorHelper stateChangeExecutorHelper,
     IWorkflowEventsMessagesHelper workflowEventsMessagesHelper)
 {
     _userId    = userId;
     _input     = input;
     _sqlHelper = sqlHelper;
     _stateChangeExecutorRepositories = stateChangeExecutorRepositories;
     _stateChangeExecutorHelper       = stateChangeExecutorHelper;
     _workflowEventsMessagesHelper    = workflowEventsMessagesHelper;
 }
コード例 #3
0
        public async Task <WorkflowState> ChangeStateForArtifactAsync(
            int userId,
            int artifactId,
            WorkflowStateChangeParameterEx stateChangeParameter,
            IDbTransaction transaction = null)
        {
            // Need to access code for artifact permissions for revision
            await CheckForArtifactPermissions(userId, artifactId, permissions : RolePermissions.Edit);

            return(await ChangeStateForArtifactInternal(
                       userId,
                       artifactId,
                       stateChangeParameter.ToStateId,
                       transaction));
        }
コード例 #4
0
        private async Task <QuerySingleResult <WorkflowState> > ChangeStateForArtifactAsync(WorkflowStateChangeParameterEx input, IDbTransaction transaction = null)
        {
            var newState = await _stateChangeExecutorRepositories.WorkflowRepository.ChangeStateForArtifactAsync(_userId, input.ArtifactId, input, transaction);

            if (newState == null)
            {
                return(new QuerySingleResult <WorkflowState>
                {
                    ResultCode = QueryResultCode.Failure,
                    Message = I18NHelper.FormatInvariant("State could not be modified for Artifact: {0} from State: {1} to New State: {2}", input.ArtifactId, input.FromStateId, input.ToStateId)
                });
            }
            return(new QuerySingleResult <WorkflowState>
            {
                ResultCode = QueryResultCode.Success,
                Item = newState
            });
        }
コード例 #5
0
        public void TestInitialize()
        {
            WorkflowStateChangeParameterEx ex = new WorkflowStateChangeParameterEx()
            {
                ArtifactId       = ArtifactId,
                ToStateId        = ToStateId,
                FromStateId      = FromStateId,
                CurrentVersionId = CurrentVersionId,
                TransitionId     = TransitionId
            };

            _workflowRepository         = new Mock <IWorkflowRepository>(MockBehavior.Strict);
            _artifactVersionsRepository = new Mock <IArtifactVersionsRepository>(MockBehavior.Strict);
            _sqlHelperMock                     = new SqlHelperMock();
            _versionControlService             = new Mock <IVersionControlService>(MockBehavior.Loose);
            _reuseRepository                   = new Mock <IReuseRepository>(MockBehavior.Loose);
            _saveArtifactRepositoryMock        = new Mock <ISaveArtifactRepository>(MockBehavior.Loose);
            _applicationSettingsRepositoryMock = new Mock <IApplicationSettingsRepository>(MockBehavior.Loose);
            _serviceLogRepositoryMock          = new Mock <IServiceLogRepository>(MockBehavior.Loose);
            _usersRepositoryMock               = new Mock <IUsersRepository>(MockBehavior.Loose);
            _stateChangeHelperMock             = new Mock <IStateChangeExecutorHelper>(MockBehavior.Loose);
            _workflowEventsMessagesHelperMock  = new Mock <IWorkflowEventsMessagesHelper>();
            _webhooksRepositoryMock            = new Mock <IWebhooksRepository>(MockBehavior.Loose);
            _projectMetaRepositoryMock         = new Mock <IProjectMetaRepository>(MockBehavior.Loose);
            _workflowEventsMessagesHelperMock.Setup(m => m.GenerateMessages(
                                                        It.IsAny <int>(),
                                                        It.IsAny <int>(),
                                                        It.IsAny <string>(),
                                                        It.IsAny <long>(),
                                                        It.IsAny <WorkflowEventTriggers>(),
                                                        It.IsAny <IBaseArtifactVersionControlInfo>(),
                                                        It.IsAny <string>(),
                                                        It.IsAny <IDictionary <int, IList <Property> > >(),
                                                        It.IsAny <WorkflowState>(),
                                                        It.IsAny <WorkflowState>(),
                                                        It.IsAny <bool>(),
                                                        It.IsAny <string>(),
                                                        It.IsAny <string>(),
                                                        It.IsAny <IUsersRepository>(),
                                                        It.IsAny <IServiceLogRepository>(),
                                                        It.IsAny <IWebhooksRepository>(),
                                                        It.IsAny <IProjectMetaRepository>(),
                                                        It.IsAny <IArtifactVersionsRepository>(),
                                                        It.IsAny <IDbTransaction>()))
            .ReturnsAsync(new List <IWorkflowMessage>());

            _stateChangeExecutor = new StateChangeExecutor(UserId,
                                                           ex,
                                                           _sqlHelperMock,
                                                           new StateChangeExecutorRepositories(_artifactVersionsRepository.Object,
                                                                                               _workflowRepository.Object,
                                                                                               _versionControlService.Object,
                                                                                               _reuseRepository.Object,
                                                                                               _saveArtifactRepositoryMock.Object,
                                                                                               _applicationSettingsRepositoryMock.Object,
                                                                                               _serviceLogRepositoryMock.Object,
                                                                                               _usersRepositoryMock.Object,
                                                                                               _webhooksRepositoryMock.Object,
                                                                                               _projectMetaRepositoryMock.Object),
                                                           _stateChangeHelperMock.Object,
                                                           _workflowEventsMessagesHelperMock.Object);
        }