Exemple #1
0
        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);
        }
Exemple #2
0
        /// <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);
                }
            }
        }