public void PredictMergedReferentials_Tests() { SampleData.ClearDatabaseThenImportDefaultProject(); // Exporter le projet var service = new ImportExportService(); var mre = new System.Threading.ManualResetEvent(false); Stream stream = null; Exception e = null; service.ExportProject(SampleData.GetProjectId(), d => { stream = d; mre.Set(); }, ex => { e = ex; mre.Set(); }); mre.WaitOne(); AssertExt.IsExceptionNull(e); Assert.IsNotNull(stream); stream.Position = 0; byte[] importData; using (var memoryStream = new MemoryStream()) { stream.CopyTo(memoryStream, StreamExtensions.BufferSize); importData = memoryStream.ToArray(); } // PredictMergedReferentials mre.Reset(); KProcess.Ksmed.Business.Dtos.Export.ProjectImport import = null; service.PredictMergedReferentialsProject(importData, pi => { import = pi; mre.Set(); }, ex => { e = ex; mre.Set(); }); mre.WaitOne(); AssertExt.IsExceptionNull(e); Assert.IsNotNull(import); }
/// <summary> /// Exporte le projet spécifié. /// </summary> /// <param name="projectId">L'identifiant du projet.</param> private void ExportProject(int projectId, bool merge) { var service = new ImportExportService(); string fileName = string.Format("out{0}.xml", fileNumber++); KProcess.Ksmed.Business.Dtos.Export.ProjectExport oldProjectExport; using (var context = KProcess.Ksmed.Data.ContextFactory.GetNewContext()) { oldProjectExport = service.CreateProjectExport(context, projectId); } var mre = new System.Threading.ManualResetEvent(false); Stream stream = null; Exception e = null; service.ExportProject(projectId, d => { stream = d; mre.Set(); }, ex => { e = ex; mre.Set(); }); mre.WaitOne(); AssertExt.IsExceptionNull(e); Assert.IsNotNull(stream); using (var reader = new StreamReader(stream)) { string xml = reader.ReadToEnd(); File.WriteAllText(fileName, xml); Assert.IsNotNull(xml); } stream.Close(); Initialization.SetCurrentUser("paula"); // Ouvrir le fichier mre.Reset(); int newProjectId = -1; service.PredictMergedReferentialsProject(File.ReadAllBytes(fileName), pi => { service.ImportProject(pi, merge, TestContext.DeploymentDirectory, p => { newProjectId = p.ProjectId; mre.Set(); }, ex => { e = ex; mre.Set(); }); }, ex => { e = ex; mre.Set(); }); mre.WaitOne(); AssertExt.IsExceptionNull(e); // Réexporter le projet KProcess.Ksmed.Business.Dtos.Export.ProjectExport newProjectExport; using (var context = KProcess.Ksmed.Data.ContextFactory.GetNewContext()) { newProjectExport = service.CreateProjectExport(context, newProjectId); } // Comparer les valeurs // Projet AssertProject(oldProjectExport.Project, newProjectExport.Project); // Vidéos var oldVideos = oldProjectExport.Project.Videos.OrderBy(v => v.Name).ToArray(); var newVideos = newProjectExport.Project.Videos.OrderBy(v => v.Name).ToArray(); for (int i = 0; i < oldVideos.Length; i++) { AssertVideo(oldVideos[i], newVideos[i]); } // Scénarios var oldScenarios = oldProjectExport.Project.Scenarios.OrderBy(s => s.Label).ToArray(); var newScenarios = newProjectExport.Project.Scenarios.OrderBy(s => s.Label).ToArray(); for (int i = 0; i < oldProjectExport.Project.Scenarios.Count; i++) { var oldScenario = oldScenarios[i]; var newScenario = newScenarios[i]; AssertScenario(oldScenario, newScenario); var oldActions = oldScenario.Actions.OrderBy(a => WBSHelper.GetParts(a.WBS), new WBSHelper.WBSComparer()).ToArray(); var newActions = newScenario.Actions.OrderBy(a => WBSHelper.GetParts(a.WBS), new WBSHelper.WBSComparer()).ToArray(); // Actions for (int j = 0; j < oldScenario.Actions.Count; j++) { var oldAction = oldActions[j]; var newAction = newActions[j]; AssertAction(oldAction, newAction); // Actions réduites AssertActionReduced(oldAction.Reduced, newAction.Reduced); } } }