public async Task GetCurrentState_StoredProcedureReturnsNull_ReturnsFailureResult() { // Arrange var permissionsRepository = CreatePermissionsRepositoryMock(new[] { 1 }, 1, RolePermissions.Edit | RolePermissions.Read); var artifactIdsTable = SqlConnectionWrapper.ToDataTable(new[] { 1 }, "Int32Collection", "Int32Value"); var cxn = new SqlConnectionWrapperMock(); var repository = new SqlWorkflowRepository(cxn.Object, permissionsRepository.Object); cxn.SetupQueryAsync("GetArtifactBasicDetails", new Dictionary <string, object> { { "userId", 1 }, { "itemId", 1 } }, new List <ArtifactBasicDetails> { new ArtifactBasicDetails { PrimitiveItemTypePredefined = (int)ItemTypePredefined.Actor } }); cxn.SetupQueryAsync("GetWorkflowStatesForArtifacts", new Dictionary <string, object> { { "userId", 1 }, { "artifactIds", artifactIdsTable }, { "revisionId", 2147483647 }, { "addDrafts", true } }, new List <SqlWorkFlowState>()); // Act var result = (await repository.GetStateForArtifactAsync(1, 1, int.MaxValue, true)); Assert.IsTrue(result == null, "Workflow State is not null"); }
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 async Task GetTransitionsAsync_WithEditPermissions_SuccessfullyReads() { // Arrange var permissionsRepository = CreatePermissionsRepositoryMock(new[] { 1 }, 1, RolePermissions.Edit); var cxn = new SqlConnectionWrapperMock(); var repository = new SqlWorkflowRepository(cxn.Object, permissionsRepository.Object); cxn.SetupQueryAsync("GetArtifactBasicDetails", new Dictionary <string, object> { { "userId", 1 }, { "itemId", 1 } }, new List <ArtifactBasicDetails> { new ArtifactBasicDetails { PrimitiveItemTypePredefined = (int)ItemTypePredefined.Actor } }); cxn.SetupQueryAsync("GetTransitionsForState", new Dictionary <string, object> { { "workflowId", 1 }, { "stateId", 1 }, { "userId", 1 } }, new List <SqlWorkflowTransition> { new SqlWorkflowTransition { WorkflowEventId = 1, ToStateId = 2, ToStateName = "A", FromStateId = 1, WorkflowEventName = "TA" }, new SqlWorkflowTransition { WorkflowEventId = 2, ToStateId = 3, ToStateName = "B", FromStateId = 1, WorkflowEventName = "TB" }, new SqlWorkflowTransition { WorkflowEventId = 3, ToStateId = 4, ToStateName = "C", FromStateId = 1, WorkflowEventName = "TC" } }); // Act var result = (await repository.GetTransitionsAsync(1, 1, 1, 1)); Assert.IsTrue(result.Count == 3, "Transitions could not be retrieved"); }
public async Task GetTransitionForAssociatedStatesAsync_WithEditPermissions_SuccessfullyReturnsTransition() { // Arrange var permissionsRepository = CreatePermissionsRepositoryMock(new[] { 1 }, 1, RolePermissions.Edit); var cxn = new SqlConnectionWrapperMock(); var repository = new SqlWorkflowRepository(cxn.Object, permissionsRepository.Object); int userId = 1; int workflowId = 4; int fromStateId = 5; int toStateId = 6; const int transitionId = 1; var expected = new SqlWorkflowTransition { WorkflowEventId = transitionId, ToStateId = toStateId, ToStateName = "New", FromStateId = fromStateId, FromStateName = "Ready", WorkflowEventName = "New To Redy", WorkflowId = workflowId }; cxn.SetupQueryAsync("GetArtifactBasicDetails", new Dictionary <string, object> { { "userId", userId }, { "itemId", 1 } }, new List <ArtifactBasicDetails> { new ArtifactBasicDetails { PrimitiveItemTypePredefined = (int)ItemTypePredefined.Actor } }); cxn.SetupQueryAsync("GetTransitionAssociatedWithStates", new Dictionary <string, object> { { "workflowId", workflowId }, { "fromStateId", fromStateId }, { "toStateId", toStateId }, { "userId", userId } }, new List <SqlWorkflowTransition> { expected }); // Act var result = (await repository.GetTransitionForAssociatedStatesAsync(userId, 1, workflowId, fromStateId, toStateId, transitionId)); // Assert Assert.AreEqual(workflowId, result.WorkflowId); Assert.AreEqual(fromStateId, result.FromState.Id); Assert.AreEqual(toStateId, result.ToState.Id); Assert.AreEqual(transitionId, result.Id); }
public async Task GetTransitionsAsync_NotFoundArtifact_ThrowsException() { // Arrange var cxn = new SqlConnectionWrapperMock(); var repository = new SqlWorkflowRepository(cxn.Object, new Mock <IArtifactPermissionsRepository>().Object); cxn.SetupQueryAsync("GetArtifactBasicDetails", new Dictionary <string, object> { { "userId", 1 }, { "itemId", 1 } }, new List <ArtifactBasicDetails>()); // Act await repository.GetTransitionsAsync(1, 1, 1, 1); }
public async Task GetTransitionsAsync_IncorrectArtifactType_ThrowsException() { // Arrange var permissionsRepository = CreatePermissionsRepositoryMock(new[] { 1 }, 1, RolePermissions.None); var cxn = new SqlConnectionWrapperMock(); var repository = new SqlWorkflowRepository(cxn.Object, permissionsRepository.Object); cxn.SetupQueryAsync("GetArtifactBasicDetails", new Dictionary <string, object> { { "userId", 1 }, { "itemId", 1 } }, new List <ArtifactBasicDetails> { new ArtifactBasicDetails() { PrimitiveItemTypePredefined = (int)ItemTypePredefined.Project } }); // Act await repository.GetTransitionsAsync(1, 1, 1, 1); }
public void TestInitialize() { _userId = 2; _revisionId = 2548; _tenant = new TenantInformation { TenantId = "Blueprint", PackageName = "Professional", TenantName = "Blueprint", BlueprintConnectionString = "DBConnection", AdminStoreLog = "localhost", ExpirationDate = DateTime.MaxValue, PackageLevel = 2, StartDate = DateTime.Today }; _message = new ArtifactsPublishedMessage { RevisionId = _revisionId, UserId = _userId, UserName = "******", Artifacts = new List <PublishedArtifactInformation> { new PublishedArtifactInformation { Id = ArtifactId, Name = ArtifactName, ModifiedProperties = new List <PublishedPropertyInformation>(), ProjectId = ProjectId, IsFirstTimePublished = true, Url = "localhost:id", BaseUrl = "localhost", Predefined = (int)Predefined } } }; _workflowMessageArtifactInfos = new List <WorkflowMessageArtifactInfo> { new WorkflowMessageArtifactInfo { Id = ArtifactId, ProjectName = "ProjectName", ProjectId = ProjectId, Name = ArtifactName, PredefinedType = Predefined, ItemTypeId = ItemTypeId } }; _artifactsPublishedRepositoryMock = new Mock <IArtifactsPublishedRepository>(MockBehavior.Loose); _serviceLogRepositoryMock = new Mock <IServiceLogRepository>(MockBehavior.Loose); _workflowRepoMock = new Mock <IWorkflowRepository>(MockBehavior.Loose); _workflowRepoMock .Setup(r => r.IsWorkflowSupported(It.IsAny <ItemTypePredefined>())) .Returns((ItemTypePredefined p) => SqlWorkflowRepository.IsWorkflowSupportedForArtifactType(p)); _userRepoMock = new Mock <IUsersRepository>(MockBehavior.Loose); _wfMessagingMock = new Mock <IWorkflowMessagingProcessor>(MockBehavior.Loose); _artifactsPublishedRepositoryMock.Setup(t => t.WorkflowRepository).Returns(_workflowRepoMock.Object); _artifactsPublishedRepositoryMock.Setup(t => t.UsersRepository).Returns(_userRepoMock.Object); }
public ArtifactsPublishedRepository(ISqlConnectionWrapper connectionWrapper, IArtifactPermissionsRepository artifactPermissionsRepository, IUsersRepository usersRepository) : base(connectionWrapper, artifactPermissionsRepository, usersRepository) { WorkflowRepository = new SqlWorkflowRepository(connectionWrapper, ArtifactPermissionsRepository); WebhooksRepository = new WebhooksRepository(connectionWrapper); ProjectMetaRepository = new SqlProjectMetaRepository(connectionWrapper); }
public async Task GetTransitionForAssociatedStatesAsync_ReturnsCorrectTransition_WhenMultipleTransitionsHaveTheSameDestinationState() { // Arrange const int transitionId = 123; const int userId = 1; const int workflowId = 2; const int fromStateId = 3; const int toStateId = 4; const int artifactId = 5; var artifactIds = new[] { artifactId }; var permissionsRepository = CreatePermissionsRepositoryMock(artifactIds, userId, RolePermissions.Edit); var cxn = new SqlConnectionWrapperMock(); var repository = new SqlWorkflowRepository(cxn.Object, permissionsRepository.Object); var artifactDetailsParameters = new Dictionary <string, object> { { "userId", userId }, { "itemId", artifactId } }; var artifactDetailsResult = new List <ArtifactBasicDetails> { new ArtifactBasicDetails { PrimitiveItemTypePredefined = (int)ItemTypePredefined.Actor } }; cxn.SetupQueryAsync("GetArtifactBasicDetails", artifactDetailsParameters, artifactDetailsResult); var expectedResult = new SqlWorkflowTransition { WorkflowEventId = transitionId, ToStateId = toStateId, FromStateId = fromStateId, WorkflowId = workflowId }; var unexpectedResult1 = new SqlWorkflowTransition { WorkflowEventId = transitionId - 1, ToStateId = toStateId, FromStateId = fromStateId, WorkflowId = workflowId }; var unexpectedResult2 = new SqlWorkflowTransition { WorkflowEventId = transitionId + 1, ToStateId = toStateId, FromStateId = fromStateId, WorkflowId = workflowId }; var transitionsResult = new List <SqlWorkflowTransition> { unexpectedResult1, expectedResult, unexpectedResult2 }; var transitionsParameters = new Dictionary <string, object> { { "workflowId", workflowId }, { "fromStateId", fromStateId }, { "toStateId", toStateId }, { "userId", userId } }; cxn.SetupQueryAsync("GetTransitionAssociatedWithStates", transitionsParameters, transitionsResult); // Act var result = await repository.GetTransitionForAssociatedStatesAsync(userId, artifactId, workflowId, fromStateId, toStateId, transitionId); // Assert Assert.AreEqual(transitionId, result.Id); Assert.AreEqual(workflowId, result.WorkflowId); Assert.AreEqual(fromStateId, result.FromState.Id); Assert.AreEqual(toStateId, result.ToState.Id); }