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); }
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; }
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)); }
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 }); }
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); }