Exemple #1
0
        public void DataMigration7000063Test()
        {
            var mockMdc = new MockMDCForDataMigration();

            mockMdc.AddClass(1, "CmObject", null, new List <string> {
                "LangProject"
            });
            mockMdc.AddClass(2, "LangProject", "CmObject", new List <string>());

            var dtos = DataMigrationTestServices.ParseProjectFile("DataMigration7000063.xml");
            IDomainObjectDTORepository dtoRepos = new DomainObjectDtoRepository(7000061, dtos, mockMdc, null);

            m_dataMigrationManager.PerformMigration(dtoRepos, 7000063, new DummyProgressDlg());

            var wmbLangProjList = dtoRepos.AllInstancesSansSubclasses("LangProject");
            var wmbLangProj     = wmbLangProjList.First();
            var wmbLangProjElt  = XElement.Parse(wmbLangProj.Xml);
            // the homograph ws should have been added
            var homographWs = wmbLangProjElt.Element("HomographWs");             // has to be only one

            Assert.IsNotNull(homographWs, "Migration 7000063 failed to add HomographWs element to LangProject class");
            var homographWsUni = homographWs.Element("Uni");             // only one

            Assert.IsNotNull(homographWs, "Migration 7000063 failed to add HomographWs/Uni element to LangProject class");
            var homographWsTag = homographWsUni.Value;             // only one

            Assert.AreEqual("fa", homographWsUni.Value, "HomographWs value in LangProject class is incorrect");

            Assert.AreEqual(7000063, dtoRepos.CurrentModelVersion, "Wrong updated version.");
        }
Exemple #2
0
        public void BadListDisplayOptionAndChoiceOptionAreFixed()
        {
            var mockMdc = new MockMDCForDataMigration();

            mockMdc.AddClass(1, "CmObject", null, new List <string> {
                "CmPossibilityList", "LanguageProject", "CmCustomItem", "LexDb", "LexEntryRef"
            });
            mockMdc.AddClass(2, "CmPossibilityList", "CmObject", new List <string>());
            mockMdc.AddClass(3, "CmCustomItem", "CmObject", new List <string>());
            mockMdc.AddClass(4, "LanguageProject", "CmObject", new List <string>());
            mockMdc.AddClass(5, "LexDb", "CmObject", new List <string>());
            mockMdc.AddClass(6, "LexEntryRef", "CmObject", new List <string>());

            var dtos = DataMigrationTestServices.ParseProjectFile("DataMigration7000070_DoubledList.xml");
            IDomainObjectDTORepository dtoRepos = new DomainObjectDtoRepository(7000069, dtos, mockMdc, null, FwDirectoryFinder.FdoDirectories);

            const string badEnumValue = "-1073741824";

            Assert.True(dtoRepos.AllInstancesWithSubclasses("CmPossibilityList").Any(dto => dto.Xml.Contains("PreventChoiceAboveLevel val=\"" + badEnumValue + "\"")),
                        "The CmPossibilityList test data has changed");
            Assert.True(dtoRepos.AllInstancesWithSubclasses("CmPossibilityList").Any(dto => dto.Xml.Contains("DisplayOption val=\"" + badEnumValue + "\"")),
                        "The CmPossibilityList test data has changed");

            m_dataMigrationManager.PerformMigration(dtoRepos, 7000070, new DummyProgressDlg());             // SUT

            var resultingLists = dtoRepos.AllInstancesWithSubclasses("CmPossibilityList").ToList();

            Assert.False(dtoRepos.AllInstancesWithSubclasses("CmPossibilityList").Any(dto => dto.Xml.Contains(badEnumValue)), "Bad list data was not removed.");
            Assert.AreEqual(2, resultingLists.Count(dto => dto.Xml.Contains("PreventChoiceAboveLevel val=\"0\"")), "PreventChoiceAbove should have changed to 0");
            Assert.AreEqual(2, resultingLists.Count(dto => dto.Xml.Contains("DisplayOption val=\"0\"")), "DisplayOption should have changed to 0");
        }
Exemple #3
0
        public void DataMigration7000060Test()
        {
            var projectFolder  = Path.GetTempPath();
            var settingsFolder = Path.Combine(projectFolder, DirectoryFinder.ksConfigurationSettingsDir);
            var sampleLayout   = Path.Combine(settingsFolder, "Test_Layouts.xml");
            var otherFile      = Path.Combine(settingsFolder, "other.xml");
            var newLayoutPath  = Path.Combine(settingsFolder, "Test.fwlayout");

            // Delete any leftover data from incomplete test (or previous test).
            if (Directory.Exists(settingsFolder))
            {
                Directory.Delete(settingsFolder, true);
            }

            Directory.CreateDirectory(settingsFolder);
            File.WriteAllText(sampleLayout, "nonsence", Encoding.UTF8);
            File.WriteAllText(otherFile, "rubbish", Encoding.UTF8);

            var mockMDC = new MockMDCForDataMigration();           // no classes to migrate here
            var dtos    = new HashSet <DomainObjectDTO>();         // no objects to migrate
            IDomainObjectDTORepository dtoRepos = new DomainObjectDtoRepository(7000059, dtos, mockMDC, projectFolder);

            // Do the migration.
            m_dataMigrationManager.PerformMigration(dtoRepos, 7000060, new DummyProgressDlg());

            Assert.That(File.Exists(newLayoutPath));
            Assert.That(File.Exists(otherFile));
            Assert.That(!File.Exists(sampleLayout));
            Directory.Delete(settingsFolder, true);

            Assert.AreEqual(7000060, dtoRepos.CurrentModelVersion, "Wrong updated version.");
        }
Exemple #4
0
        public void DataMigration7000006Test()
        {
            var dtos = DataMigrationTestServices.ParseProjectFile("DataMigration7000006Tests.xml");

            // Set up mock MDC.
            var mockMDC = new MockMDCForDataMigration();

            mockMDC.AddClass(1, "CmObject", null, new List <string> {
                "CmProject"
            });
            mockMDC.AddClass(2, "CmProject", "CmObject", new List <string> {
                "LangProject"
            });
            mockMDC.AddClass(3, "LangProject", "CmProject", new List <string>());
            IDomainObjectDTORepository dtoRepos = new DomainObjectDtoRepository(7000005, dtos, mockMDC, null);

            m_dataMigrationManager.PerformMigration(dtoRepos, 7000006, new DummyProgressDlg());

            var cmProjDto = dtoRepos.AllInstancesSansSubclasses("LangProject").First();
            var cpElement = XElement.Parse(cmProjDto.Xml);

            Assert.AreEqual(7000006, dtoRepos.CurrentModelVersion, "Wrong updated version.");
            // Get the Description Element in cmProject
            Assert.IsNotNull(cpElement.XPathSelectElement("CmProject/Description"));
            // Get the Name Element in cmProject (should be gone)
            Assert.IsNull(cpElement.XPathSelectElement("CmProject/Name"));
        }
        private void TryThisProject(HashSet <DomainObjectDTO> dtos, MockMDCForDataMigration mockMDC, int numOfPubs)
        {
            IDomainObjectDTORepository dtoRepos = new DomainObjectDtoRepository(7000040, dtos, mockMDC,
                                                                                @"C:\Path\Not\Used");

            // Do Migration
            m_dataMigrationManager.PerformMigration(dtoRepos, 7000041, new DummyProgressDlg());

            // Check that the version was updated.
            Assert.AreEqual(7000041, dtoRepos.CurrentModelVersion, "Wrong updated version.");

            // The LexEntry with ExcludeAsHeadword val="True" should be replaced by
            // DoNotShowMainEntryIn with the entire publist as objsur elements.
            VerifyReplace(dtoRepos, "7ecbb299-bf35-4795-a5cc-8d38ce8b891c", true, numOfPubs);

            // The LexEntry with no ExcludeAsHeadword should have no
            // DoNotShowMainEntryIn element.
            VerifyReplace(dtoRepos, "77b2397d-19c9-4321-b581-7a4ccfa9fc0e", false, numOfPubs);

            // The LexEntry with ExcludeAsHeadword val="False" should have no
            // DoNotShowMainEntryIn element.
            VerifyReplace(dtoRepos, "a78bb1d7-a86c-40c5-8ad1-8d75b71c4962", false, numOfPubs);

            // The LexEntry with ExcludeAsHeadword val="garbled" should have no
            // DoNotShowMainEntryIn element.
            VerifyReplace(dtoRepos, "1e4ae08a-2672-4df2-9e2d-980be367e893", false, numOfPubs);
        }
        public void DataMigration7000058Test_SkipNonEmptyGlossAppend()
        {
            var dtos = DataMigrationTestServices.ParseProjectFile("DataMigration7000058_NonEmptyGlossAppend.xml");
            // Set up mock MDC.
            var mockMdc = new MockMDCForDataMigration();
            IDomainObjectDTORepository dtoRepos = new DomainObjectDtoRepository(7000057, dtos, mockMdc, null);

            m_dataMigrationManager.PerformMigration(dtoRepos, 7000058, new DummyProgressDlg());
            Assert.AreEqual(7000058, dtoRepos.CurrentModelVersion, "Wrong updated version.");

            // Skip GlossAppend for Irregularly Inflected Form Type (Plural)
            {
                var iifPlural       = dtoRepos.GetDTO(kguidLexTypPluralVar);
                var iifNewPluralElt = XElement.Parse(iifPlural.Xml);
                Assert.That(iifNewPluralElt.XPathSelectElement("GlossAppend/AUni[@ws='en']").Value,
                            Is.EqualTo(".pL"));
            }

            //  Skip GlossAppend for Irregularly Inflected Form Type (Past)
            {
                var iifPast       = dtoRepos.GetDTO(kguidLexTypPastVar);
                var iifNewPastElt = XElement.Parse(iifPast.Xml);
                Assert.That(iifNewPastElt.XPathSelectElement("GlossAppend/AUni[@ws='en']").Value,
                            Is.EqualTo(".pST"));
            }
        }
        public void DowngradeMigrationTest()
        {
            var mockMDC = new MockMDCForDataMigration();
            IDomainObjectDTORepository dtoRepos = new DomainObjectDtoRepository(7100000,
                                                                                new HashSet <DomainObjectDTO>(), mockMDC, null, FwDirectoryFinder.FdoDirectories);

            m_dataMigrationManager.PerformMigration(dtoRepos, 7000000, null);
        }
Exemple #8
0
        public void DataMigration7000016Test()
        {
            var dtos = DataMigrationTestServices.ParseProjectFile("DataMigration7000016.xml");

            var mockMdc = SetupMdc();

            IDomainObjectDTORepository repoDTO = new DomainObjectDtoRepository(7000015, dtos, mockMdc, null);

            // SUT: Do the migration.
            m_dataMigrationManager.PerformMigration(repoDTO, 7000016, new DummyProgressDlg());

            // Verification Phase
            Assert.AreEqual(7000016, repoDTO.CurrentModelVersion, "Wrong updated version.");

            DomainObjectDTO nbkDto = null;

            foreach (DomainObjectDTO dot in repoDTO.AllInstancesSansSubclasses("RnResearchNbk"))
            {
                nbkDto = dot;
                break;
            }
            Assert.NotNull(nbkDto);
            XElement nbkElem      = XElement.Parse(nbkDto.Xml);
            var      recTypesGuid = (string)nbkElem.XPathSelectElement("RecTypes/objsur").Attribute("guid");

            Assert.AreEqual(recTypesGuid.ToLowerInvariant(), ksguidRecTypesList);

            // All we can guarantee being able to check are those items that we create, and to a
            // limited degree, those items that are moved to belong to a created item.
            bool fFoundEvent   = false;
            bool fFoundMethod  = false;
            bool fFoundWeather = false;

            foreach (DomainObjectDTO dto in repoDTO.GetDirectlyOwnedDTOs(ksguidRecTypesList))
            {
                string sguid = dto.Guid.ToLowerInvariant();
                Assert.AreNotEqual(sguid, ksguidObservation);
                Assert.AreNotEqual(sguid, ksguidConversation);
                Assert.AreNotEqual(sguid, ksguidInterview);
                Assert.AreNotEqual(sguid, ksguidPerformance);
                if (sguid == ksguidEvent)
                {
                    fFoundEvent = true;
                    CheckEventSubTypes(repoDTO);
                }
                else if (sguid == ksguidMethodology)
                {
                    fFoundMethod = true;
                }
                else if (sguid == ksguidWeather)
                {
                    fFoundWeather = true;
                }
            }
            Assert.IsTrue(fFoundEvent);
            Assert.IsTrue(fFoundMethod);
            Assert.IsTrue(fFoundWeather);
        }
Exemple #9
0
        public void DeleteWeatherListAndField()
        {
            var dtos = DataMigrationTestServices.ParseProjectFile("DataMigration7000017.xml");

            var mockMdc = SetupMdc();

            IDomainObjectDTORepository repoDTO = new DomainObjectDtoRepository(7000016, dtos, mockMdc, null, FwDirectoryFinder.FdoDirectories);

            // SUT: Do the migration.
            m_dataMigrationManager.PerformMigration(repoDTO, 7000017, new DummyProgressDlg());

            // Verification Phase
            Assert.AreEqual(7000017, repoDTO.CurrentModelVersion, "Wrong updated version.");

            DomainObjectDTO dtoLP = null;

            foreach (DomainObjectDTO dto in repoDTO.AllInstancesSansSubclasses("LangProject"))
            {
                Assert.IsNull(dtoLP, "Only one LangProject object should exist");
                dtoLP = dto;
            }
            Assert.NotNull(dtoLP, "The LangProject object should exist");
            string sXml = dtoLP.Xml;

            Assert.IsFalse(sXml.Contains("<WeatherConditions>"), "The <WeatherConditions> element should have disappeared");
            string sLpOwnerGuid = GetGuidAsOwnerGuid(sXml);

            DomainObjectDTO dtoNbk = null;

            foreach (DomainObjectDTO dto in repoDTO.AllInstancesSansSubclasses("RnResearchNbk"))
            {
                Assert.IsNull(dtoNbk, "Only one RnResearchNbk should exist");
                Assert.IsTrue(dto.Xml.Contains(sLpOwnerGuid), "The RnResearchNbk should be owned by the LangProject");
                dtoNbk = dto;
            }
            Assert.NotNull(dtoNbk, "The RnResearchNbk should exist");
            string sNbkOwnerGuid = GetGuidAsOwnerGuid(dtoNbk.Xml);
            int    cList         = 0;

            foreach (DomainObjectDTO dto in repoDTO.AllInstancesSansSubclasses("CmPossibilityList"))
            {
                sXml = dto.Xml;
                Assert.IsTrue(sXml.Contains(sNbkOwnerGuid), "Possibility List must be owned by Data Notebook");
                ++cList;
            }
            Assert.AreEqual(1, cList, "Only one CmPossibilityList should exist");

            foreach (DomainObjectDTO dto in repoDTO.AllInstancesWithSubclasses("RnGenericRec"))
            {
                Assert.IsFalse(dto.Xml.Contains("<Weather"), "Any <Weather> element should have disappeared");
                Assert.IsFalse(dto.Xml.Contains("<Custom name="), "No <Custom> element should have been created");
            }

            // This test file has three overlays; the first refers to a weather item and the weather possibility list,
            // and should be delted. The second refers to a non-weather possibility, and the third to a non-weather
            // possibility list; they should survive.
            Assert.That(repoDTO.AllInstancesSansSubclasses("CmOverlay"), Has.Count.EqualTo(2));
        }
Exemple #10
0
        public void NonExistantGuidTest()
        {
            IDomainObjectDTORepository dtoRepos = new DomainObjectDtoRepository(
                1,
                new HashSet <DomainObjectDTO>(),
                m_mdc,
                null, FwDirectoryFinder.FdoDirectories);

            dtoRepos.GetDTO(Guid.NewGuid().ToString());
        }
Exemple #11
0
        public void DataMigration7000014Test()
        {
            var dtos = DataMigrationTestServices.ParseProjectFile("DataMigration7000014_Evaluations.xml");

            var mockMDC = SetupMDC();

            IDomainObjectDTORepository dtoRepos = new DomainObjectDtoRepository(7000013, dtos, mockMDC, null, FwDirectoryFinder.FdoDirectories);

            // SUT; Do the migration.
            m_dataMigrationManager.PerformMigration(dtoRepos, 7000014, new DummyProgressDlg());

            // Verification Phase
            Assert.AreEqual(7000014, dtoRepos.CurrentModelVersion, "Wrong updated version.");

            //
            var firstAgent     = dtoRepos.GetDTO("c1ec8357-e382-11de-8a39-0800200c9a66");
            var secondAgent    = dtoRepos.GetDTO("c1ec8357-e382-11de-8a39-0800200c9a67");
            var thirdAgent     = dtoRepos.GetDTO("c1ec8357-e382-11de-8a39-0800200c9a68");
            var emptyAgent     = dtoRepos.GetDTO("c1ec8357-e382-11de-8a39-0800200c9a6c");
            var firstAnalysis  = dtoRepos.GetDTO("c84614e6-168b-4304-a025-0d6ae6573086");
            var secondAnalysis = dtoRepos.GetDTO("c84614e6-168b-4304-a025-0d6ae6573087");

            string firstApprovesGuid,
                   firstDisapprovesGuid,
                   secondApprovesGuid,
                   secondDisapprovesGuid,
                   thirdApprovesGuid,
                   thirdDisapprovesGuid,
                   emptyApprovesGuid,
                   emptyDisapprovesGuid;

            VerifyAgent(firstAgent, dtoRepos, out firstApprovesGuid, out firstDisapprovesGuid);
            VerifyAgent(secondAgent, dtoRepos, out secondApprovesGuid, out secondDisapprovesGuid);
            VerifyAgent(thirdAgent, dtoRepos, out thirdApprovesGuid, out thirdDisapprovesGuid);
            VerifyAgent(emptyAgent, dtoRepos, out emptyApprovesGuid, out emptyDisapprovesGuid);

            VerifyAnalysis(firstAnalysis, new string[] { firstApprovesGuid, secondDisapprovesGuid, thirdApprovesGuid });
            VerifyAnalysis(secondAnalysis, new string[] { firstApprovesGuid });

            var goners = ((DomainObjectDtoRepository)dtoRepos).Goners;

            Assert.AreEqual(4, goners.Count, "Wrong number removed.");
            var gonerGuids = new List <string>
            {
                ("c84614e6-168b-4304-a025-0d6ae6573085").ToLower(),
                ("c84614e6-168b-4304-a025-0d6ae6573088").ToLower(),
                ("8151a002-a32e-476f-9c32-f95ee48fc71c").ToLower(),
                ("c84614e6-168b-4304-a025-0d6ae657308a").ToLower()
            };

            foreach (var goner in goners)
            {
                Assert.Contains(goner.Guid.ToLower(), gonerGuids, "Goner guid not found.");
            }
        }
        public void DataMigration7000037Test()
        {
            // Bring in data from xml file.
            var dtos = DataMigrationTestServices.ParseProjectFile("DataMigration7000037.xml");

            // Create all the Mock classes for the classes in my test data.
            var mockMDC = new MockMDCForDataMigration();

            mockMDC.AddClass(1, "CmObject", null, new List <string> {
                "LexSense", "StPara"
            });
            mockMDC.AddClass(7, "LexSense", "CmObject", new List <string>());
            mockMDC.AddClass(15, "StPara", "CmObject", new List <string> {
                "StTxtPara"
            });
            mockMDC.AddClass(16, "StTxtPara", "StPara", new List <string>());

            IDomainObjectDTORepository dtoRepos = new DomainObjectDtoRepository(7000036, dtos, mockMDC,
                                                                                FileUtils.ChangePathToPlatform("C:\\WW\\DistFiles\\Projects\\TokPisin"));

            // Check that the version is correct.
            Assert.AreEqual(7000036, dtoRepos.CurrentModelVersion, "Wrong original version.");
            // Collect the link values that shouldn't change.
            m_cLinks = 0;
            CollectionNonSilfwLinks(dtoRepos);
            int cLinksOrig = m_cLinks;

            Assert.AreEqual(12, m_cLinks, "Should have 12 externalLink attributes in the test data");

            // Do Migration
            m_dataMigrationManager.PerformMigration(dtoRepos, 7000037, new DummyProgressDlg());

            // Check that the version was updated.
            Assert.AreEqual(7000037, dtoRepos.CurrentModelVersion, "Wrong updated version.");

            // Check that all externalLink values are reasonable, and that we find the right
            // number of them.
            m_cLinks = 0;
            foreach (var dto in dtoRepos.AllInstancesWithValidClasses())
            {
                string xml = dto.Xml;
                Assert.IsTrue(xml.Contains("externalLink"), "Every object in the test has an externalLink");
                var dtoXML = XElement.Parse(xml);
                foreach (var run in dtoXML.XPathSelectElements("//Run"))
                {
                    var externalLinkAttr = run.Attribute("externalLink");
                    if (externalLinkAttr != null)
                    {
                        CheckForValidLinkValue(externalLinkAttr.Value);
                        ++m_cLinks;
                    }
                }
            }
            Assert.AreEqual(cLinksOrig, m_cLinks, "Migration should not change the number of externalLink attributes");
        }
Exemple #13
0
        public void PerformMigration7000018()
        {
            var dtos = DataMigrationTestServices.ParseProjectFile("DataMigration7000018.xml");

            var mockMdc = SetupMdc();

            IDomainObjectDTORepository repoDTO = new DomainObjectDtoRepository(7000017, dtos, mockMdc, null, FwDirectoryFinder.FdoDirectories);

            // SUT: Do the migration.
            m_dataMigrationManager.PerformMigration(repoDTO, 7000018, new DummyProgressDlg());

            // Verification Phase
            Assert.AreEqual(7000018, repoDTO.CurrentModelVersion, "Wrong updated version.");

            DomainObjectDTO dtoLP = null;

            foreach (DomainObjectDTO dto in repoDTO.AllInstancesSansSubclasses("LangProject"))
            {
                Assert.IsNull(dtoLP, "Only one Language Project object should exist");
                dtoLP = dto;
            }
            Assert.NotNull(dtoLP, "The Language Project object should exist");

            DomainObjectDTO dtoNtbk = null;

            foreach (DomainObjectDTO dto in repoDTO.AllInstancesSansSubclasses("RnResearchNbk"))
            {
                Assert.IsNull(dtoNtbk, "Only one Data Notebook object should exist");
                dtoNtbk = dto;
            }
            Assert.NotNull(dtoNtbk, "The Data Notebook object should exist");

            DomainObjectDTO dtoLexDb = null;

            foreach (DomainObjectDTO dto in repoDTO.AllInstancesSansSubclasses("LexDb"))
            {
                Assert.IsNull(dtoLexDb, "Only one Lexical Database object should exist");
                dtoLexDb = dto;
            }
            Assert.NotNull(dtoLexDb, "The Lexical Database object should exist");

            string sLexDbXml = dtoLexDb.Xml;

            Assert.False(sLexDbXml.Contains("<Styles>"), "The Styles field should be gone from the Lexical Database object");

            string sLpXml = dtoLP.Xml;

            Assert.True(sLpXml.Contains("<Styles>"), "The Styles field should still exist in the Language Project object");

            VerifyStylesRenamedOrDeleted(repoDTO);
            VerifyStyleReferencesUpdated(repoDTO);
            VerifyScriptureStylesUnchanged(repoDTO);
            VerifyNoDirectFormatting(repoDTO);
        }
Exemple #14
0
        public void DataMigration7000051Test()
        {
            var dtos = new HashSet <DomainObjectDTO>();
            var sb   = new StringBuilder();
            // Add Lang Project dto.
            const string sLpGuid    = "9719A466-2240-4DEA-9722-9FE0746A30A6";
            const string afxCatGuid = "60ab6c6c-43f3-4a7f-af61-96b4b77648a5";

            sb.AppendFormat("<rt class=\"LangProject\" guid=\"{0}\">", sLpGuid);
            sb.Append("<AffixCategories>");
            sb.AppendFormat("<objsur guid=\"{0}\" t=\"o\" />", afxCatGuid);
            sb.Append("</AffixCategories>");
            sb.Append("</rt>");
            var oldDto = new DomainObjectDTO(sLpGuid, "LangProject", sb.ToString());

            dtos.Add(oldDto);
            sb.Length = 0;

            sb.AppendFormat("<rt class=\"CmPossibilityList\" guid=\"{0}\"  ownerguid=\"{1}\" />", afxCatGuid, sLpGuid);
            var afxCatDto = new DomainObjectDTO(afxCatGuid, "CmPossibilityList", sb.ToString());

            dtos.Add(afxCatDto);

            // Set up mock MDC.
            var mockMDC = new MockMDCForDataMigration();

            mockMDC.AddClass(1, "CmObject", null, new List <string> {
                "LangProject", "CmPossibilityList"
            });                                                                                                         // Not true, but no matter.
            mockMDC.AddClass(2, "LangProject", "CmObject", new List <string>());
            mockMDC.AddClass(3, "CmPossibilityList", "CmObject", new List <string>());
            IDomainObjectDTORepository dtoRepos = new DomainObjectDtoRepository(7000050, dtos, mockMDC, null, FwDirectoryFinder.FdoDirectories);

            m_dataMigrationManager.PerformMigration(dtoRepos, 7000051, new DummyProgressDlg());
            Assert.AreEqual(7000051, dtoRepos.CurrentModelVersion, "Wrong updated version.");

            // Check that the old LP is not present.
            DomainObjectDTO gonerDto;

            Assert.IsFalse(dtoRepos.TryGetValue(sLpGuid, out gonerDto));
            Assert.IsTrue(((DomainObjectDtoRepository)dtoRepos).Goners.Contains(oldDto));
            var newDto = dtoRepos.AllInstancesSansSubclasses("LangProject").FirstOrDefault();

            Assert.IsNotNull(newDto);
            Assert.AreNotSame(oldDto, newDto);
            var newDtoGuid = newDto.Guid.ToLowerInvariant();

            Assert.AreNotEqual(sLpGuid.ToLowerInvariant(), newDtoGuid);

            // Check that ownerguid was changed on afxCatDto.
            var afxCatElm = XElement.Parse(afxCatDto.Xml);

            Assert.AreEqual(newDtoGuid, afxCatElm.Attribute("ownerguid").Value.ToLowerInvariant());
        }
        public void AllRegularBasicDataPropertiesExistAfterDataMigration66()
        {
            var mockMdc = new MockMDCForDataMigration();

            mockMdc.AddClass(1, "CmObject", null, new List <string> {
                "RegularPropertyMagnet"
            });
            mockMdc.AddClass(2, "RegularPropertyMagnet", "CmObject", new List <string>());

            // These are all present in the original data file and act as controls.
            // They should not be changed.
            var currentFlid = 2000;

            mockMdc.AddField(++currentFlid, "ExtantOwningAtomic", CellarPropertyType.OwningAtom, 2);
            mockMdc.AddField(++currentFlid, "ExtantBooleanProperty", CellarPropertyType.Boolean, 0);
            mockMdc.AddField(++currentFlid, "ExtantGenDateProperty", CellarPropertyType.GenDate, 0);
            mockMdc.AddField(++currentFlid, "ExtantGuidProperty", CellarPropertyType.Guid, 0);
            // Not used in model yet (as of 23 march 2013) mockMdc.AddField(++currentFlid, "ExtantFloatProperty", CellarPropertyType.Float, 0);
            mockMdc.AddField(++currentFlid, "ExtantIntegerProperty", CellarPropertyType.Integer, 0);
            // Not used in model yet (as of 23 march 2013) var mockMdc.AddField(++currentFlid, "ExtantNumericProperty", CellarPropertyType.Numeric, 0);
            mockMdc.AddField(++currentFlid, "ExtantTimeProperty", CellarPropertyType.Time, 0);

            // These are all missing in the original data file.
            // They should all end up with the default values for the given type of data.
            mockMdc.AddField(++currentFlid, "NewBooleanProperty", CellarPropertyType.Boolean, 0);
            mockMdc.AddField(++currentFlid, "NewGenDateProperty", CellarPropertyType.GenDate, 0);
            mockMdc.AddField(++currentFlid, "NewGuidProperty", CellarPropertyType.Guid, 0);
            // Not used in model yet (as of 23 march 2013) mockMdc.AddField(++currentFlid, "NewFloatProperty", CellarPropertyType.Float, 0);
            mockMdc.AddField(++currentFlid, "NewIntegerProperty", CellarPropertyType.Integer, 0);
            // Not used in model yet (as of 23 march 2013) mockMdc.AddField(++currentFlid, "NewNumericProperty", CellarPropertyType.Numeric, 0);
            mockMdc.AddField(++currentFlid, "NewTimeProperty", CellarPropertyType.Time, 0);

            var dtos = DataMigrationTestServices.ParseProjectFile("DataMigration7000066_RegularPropertyMagnet.xml");
            IDomainObjectDTORepository dtoRepos = new DomainObjectDtoRepository(7000065, dtos, mockMdc, null, FwDirectoryFinder.FdoDirectories);

            m_dataMigrationManager.PerformMigration(dtoRepos, 7000066, new DummyProgressDlg());

            var magnet = XElement.Parse(dtoRepos.AllInstancesSansSubclasses("RegularPropertyMagnet").First().Xml);

            // Check the 'control' props to make sure they were not changed.
            Assert.AreEqual("e268fe80-5d9d-4f6b-a68f-37db8218b15d", magnet.Element("ExtantOwningAtomic").Element("objsur").Attribute("guid").Value);
            Assert.AreEqual("True", GetRegularPropertyValue(magnet, "ExtantBooleanProperty"));
            Assert.AreEqual("-201303233", GetRegularPropertyValue(magnet, "ExtantGenDateProperty"));
            Assert.AreEqual("c1ee311b-e382-11de-8a39-0800200c9a66", GetRegularPropertyValue(magnet, "ExtantGuidProperty"));
            Assert.AreEqual("1", GetRegularPropertyValue(magnet, "ExtantIntegerProperty"));
            Assert.AreEqual("2006-3-12 18:19:46.87", GetRegularPropertyValue(magnet, "ExtantTimeProperty"));

            // Check the newly added props to make sure they are present and using default values.
            Assert.AreEqual("False", GetRegularPropertyValue(magnet, "NewBooleanProperty"));
            Assert.AreEqual("-000000000", GetRegularPropertyValue(magnet, "NewGenDateProperty"));
            Assert.AreEqual(Guid.Empty.ToString(), GetRegularPropertyValue(magnet, "NewGuidProperty"));
            Assert.AreEqual("0", GetRegularPropertyValue(magnet, "NewIntegerProperty"));
            Assert.IsNotNull(GetRegularPropertyValue(magnet, "NewTimeProperty"));
        }
        public void DataMigration7000056Test()
        {
            var dtos = DataMigrationTestServices.ParseProjectFile("DataMigration7000056.xml");
            // Set up mock MDC.
            var mockMDC = new MockMDCForDataMigration();
            IDomainObjectDTORepository dtoRepos = new DomainObjectDtoRepository(7000055, dtos, mockMDC, null, FwDirectoryFinder.FdoDirectories);

            m_dataMigrationManager.PerformMigration(dtoRepos, 7000056, new DummyProgressDlg());
            Assert.AreEqual(7000056, dtoRepos.CurrentModelVersion, "Wrong updated version.");

            // check that PhPhonData has the PhonRuleFeats possibility list
            {
                var             dtosList          = dtoRepos.AllInstancesSansSubclasses("PhPhonData");
                DomainObjectDTO dtoPhPhonDataTest = dtosList.First();
                CheckPhPhonData(dtoPhPhonDataTest, dtoRepos);
            }

            // In the extremely unlikely event that there is no PhPhonData yet, check that we add it
            {
                dtos = new HashSet <DomainObjectDTO>();

                var sb = new StringBuilder();
                // Add WfiMorphBundle that already has a form.
                const string sGuid_wmbLangProj = "00b35f9f-86ce-4f07-bde7-b65c28503641";

                sb.AppendFormat("<rt class=\"LangProj\" guid=\"{0}\">", sGuid_wmbLangProj);
                sb.Append("</rt>");
                var dtoLangProj = new DomainObjectDTO(sGuid_wmbLangProj, "LangProj", sb.ToString());
                dtos.Add(dtoLangProj);
                sb.Length = 0;

                mockMDC  = new MockMDCForDataMigration();
                dtoRepos = new DomainObjectDtoRepository(7000055, dtos, mockMDC, null, FwDirectoryFinder.FdoDirectories);
                m_dataMigrationManager.PerformMigration(dtoRepos, 7000056, new DummyProgressDlg());
                Assert.AreEqual(7000056, dtoRepos.CurrentModelVersion, "Wrong updated version.");

                var             dtosList           = dtoRepos.AllInstancesSansSubclasses("LangProj");
                DomainObjectDTO dtoLangProjTest    = dtosList.First();
                var             eltWmbLangProjTest = XElement.Parse(dtoLangProjTest.Xml);
                // get phon rule feats
                var eltPhonologicalDataTest = eltWmbLangProjTest.Element("PhonologicalData");
                Assert.IsNotNull(eltPhonologicalDataTest);
                var eltObjsurTest = eltPhonologicalDataTest.Element("objsur");
                Assert.IsNotNull(eltObjsurTest);
                // get possibility list itself
                var guidPhPhonDataTest = eltObjsurTest.Attribute("guid").Value;
                Assert.IsNotNull(guidPhPhonDataTest);
                DomainObjectDTO dtoPhPhonDataTest;
                dtoRepos.TryGetValue(guidPhPhonDataTest, out dtoPhPhonDataTest);
                Assert.IsNotNull(dtoPhPhonDataTest);
                CheckPhPhonData(dtoPhPhonDataTest, dtoRepos);
            }
        }
Exemple #17
0
        public void UpdateDtoTest()
        {
            var dtos = new HashSet <DomainObjectDTO>();
            // 1. Add barebones LP.
            const string lpGuid = "9719A466-2240-4DEA-9722-9FE0746A30A6";
            var          lpDto  = CreatoDTO(dtos, lpGuid, "LangProject", null);
            IDomainObjectDTORepository dtoRepos = new DomainObjectDtoRepository(1, dtos,
                                                                                m_mdc, null, FwDirectoryFinder.FdoDirectories);

            dtoRepos.Update(lpDto);
            Assert.IsTrue(((DomainObjectDtoRepository)dtoRepos).Dirtballs.Contains(lpDto), "Dirty DTO not in dirtball set.");
        }
        public void DataMigration7000062Test()
        {
            var mockMdc = new MockMDCForDataMigration();

            mockMdc.AddClass(1, "CmObject", null, new List <string> {
                "LangProject", "StStyle", "CmResource"
            });
            mockMdc.AddClass(2, "LangProject", "CmObject", new List <string>());
            mockMdc.AddClass(3, "StStyle", "CmObject", new List <string>());
            mockMdc.AddClass(4, "CmResource", "CmObject", new List <string>());

            var dtos = DataMigrationTestServices.ParseProjectFile("DataMigration7000062.xml");
            IDomainObjectDTORepository dtoRepos = new DomainObjectDtoRepository(7000061, dtos, mockMdc, null, FwDirectoryFinder.FdoDirectories);

            m_dataMigrationManager.PerformMigration(dtoRepos, 7000062, new DummyProgressDlg());

            // Check Step 1.A.
            // <rt class="StStyle" guid ="bb68f6bc-f233-4cd4-8894-c33b4b4c43ba">
            DomainObjectDTO dto;

            dtoRepos.TryGetValue("bb68f6bc-f233-4cd4-8894-c33b4b4c43ba", out dto);
            Assert.IsNull(dto);
            // Step 1.A. Control
            // <rt class="StStyle" guid ="9d28219c-6185-416e-828b-b9e304de141c" ownerguid="88ddebd1-dfad-4033-8b1c-896081469f66">
            dtoRepos.TryGetValue("9d28219c-6185-416e-828b-b9e304de141c", out dto);
            Assert.IsNotNull(dto);

            // Check Step 1.B. (Real + control)
            foreach (var resourceDto in dtoRepos.AllInstancesSansSubclasses("CmResource"))
            {
                var resourceElement = XElement.Parse(resourceDto.Xml);
                var name            = resourceElement.Element("Name").Element("Uni").Value;
                var actualVersion   = resourceElement.Element("Version").Attribute("val").Value;
                var expectedVersion = "";
                switch (name)
                {
                case "TeStyles":
                    expectedVersion = "700176e1-4f42-4abd-8fb5-3c586670085d";
                    break;

                case "FlexStyles":
                    expectedVersion = "13c213b9-e409-41fc-8782-7ca0ee983b2c";
                    break;

                case "ControlResource":
                    expectedVersion = "c1ede2e2-e382-11de-8a39-0800200c9a66";
                    break;
                }
                Assert.AreEqual(expectedVersion, actualVersion);
            }

            Assert.AreEqual(7000062, dtoRepos.CurrentModelVersion, "Wrong updated version.");
        }
Exemple #19
0
        public void ExtantGuidFindsDTOTest()
        {
            var dtos = new HashSet <DomainObjectDTO>();
            // 1. Add barebones LP.
            const string lpGuid = "9719A466-2240-4DEA-9722-9FE0746A30A6";
            var          lpDto  = CreatoDTO(dtos, lpGuid, "LangProject", null);
            IDomainObjectDTORepository dtoRepos = new DomainObjectDtoRepository(1, dtos,
                                                                                m_mdc, null, FwDirectoryFinder.FdoDirectories);
            var resultDto = dtoRepos.GetDTO(lpGuid);

            Assert.AreSame(lpDto, resultDto, "Wrong DTO.");
        }
Exemple #20
0
        public void DataMigration7000007Test()
        {
            var dtos = DataMigrationTestServices.ParseProjectFile("DataMigration7000007Tests.xml");

            // Set up mock MDC.
            var mockMDC = new MockMDCForDataMigration();

            mockMDC.AddClass(1, "CmObject", null, new List <string> {
                "ScrImportSet", "StPara", "StText"
            });
            mockMDC.AddClass(2, "ScrImportSet", "CmObject", new List <string>());
            mockMDC.AddClass(4, "StPara", "CmObject", new List <string> {
                "StTxtPara"
            });
            mockMDC.AddClass(6, "StText", "CmObject", new List <string> {
                "StFootnote"
            });
            mockMDC.AddClass(7, "StTxtPara", "StPara", new List <string>());
            mockMDC.AddClass(9, "StFootnote", "StText", new List <string> {
                "ScrFootnote"
            });
            mockMDC.AddClass(10, "ScrFootnote", "StFootnote", new List <string>());
            IDomainObjectDTORepository dtoRepos = new DomainObjectDtoRepository(7000006, dtos, mockMDC, null, FwDirectoryFinder.FdoDirectories);

            m_dataMigrationManager.PerformMigration(dtoRepos, 7000007, new DummyProgressDlg());

            var ScrInpDto     = dtoRepos.AllInstancesSansSubclasses("ScrImportSet").First();
            var ScrInpElement = XElement.Parse(ScrInpDto.Xml);

            Assert.AreEqual(7000007, dtoRepos.CurrentModelVersion, "Wrong updated version.");

            Assert.IsNull(ScrInpElement.XPathSelectElement("ScrImportSet/ImportSettings"));
            // Get the ImportSettings Element in ScrImportSet (should be gone)
            Assert.IsNotNull(ScrInpElement.XPathSelectElement("ScrImportSet/ImportType"));
            // Get the ImportType Element in ScrImportSet.

            var ScrFootDto     = dtoRepos.AllInstancesSansSubclasses("ScrFootnote").First();
            var ScrFootElement = XElement.Parse(ScrFootDto.Xml);

            Assert.IsNull(ScrFootElement.XPathSelectElement("StFootnote/DisplayFootnoteReference"));
            // Get the DisplayFootnoteReference Element in StFootnote (should be gone)
            Assert.IsNull(ScrFootElement.XPathSelectElement("StFootnote/DisplayFootnoteMarker"));
            // Get the DisplayFootnoteMarker Element in StFootnote (should be gone)

            var StTxtDto     = dtoRepos.AllInstancesSansSubclasses("StTxtPara").First();
            var StTxtElement = XElement.Parse(StTxtDto.Xml);

            Assert.IsNotNull(StTxtElement.XPathSelectElement("StPara/StyleRules"));
            // Get the StyleRules Element in StPara
            Assert.IsNull(StTxtElement.XPathSelectElement("StPara/StyleName"));
            // Get the StyleName Element in StPara (should be gone)
        }
        public void DataMigration7000057Test_SubInflTypes()
        {
            var dtos = DataMigrationTestServices.ParseProjectFile("DataMigration7000057_SubInflTypes.xml");
            // Set up mock MDC.
            var mockMdc = new MockMDCForDataMigration();
            IDomainObjectDTORepository dtoRepos = new DomainObjectDtoRepository(7000056, dtos, mockMdc, null);

            m_dataMigrationManager.PerformMigration(dtoRepos, 7000057, new DummyProgressDlg());
            Assert.AreEqual(7000057, dtoRepos.CurrentModelVersion, "Wrong updated version.");

            const string guidNonStandard      = "1df6f9da-7b69-44e4-b98d-13a0cee17b77";
            const string guidNonStandardChild = "208cc589-f10f-485b-bdcc-843f046d4146";
            const string guidPluralChild      = "2bd3437f-8bde-495c-a12b-d0c8feb7c3e9";
            const string guidPastChild        = "7c607ea9-c1a0-4b7f-aee7-06ead42ac299";

            // test that non-standard (user created) Irregularly Inflected Form has the right class
            {
                var nonStandard = dtoRepos.GetDTO(guidNonStandard);
                Assert.That(nonStandard.Classname, Is.EqualTo(LexEntryInflTypeTags.kClassName));
                var nonStandardElt = XElement.Parse(nonStandard.Xml);
                Assert.That(nonStandardElt.XPathSelectElement("Name/AUni").Value,
                            Is.EqualTo("NonStandard"));
            }

            // test that non-standard child has correct class
            {
                var nonStandardChild = dtoRepos.GetDTO(guidNonStandardChild);
                Assert.That(nonStandardChild.Classname, Is.EqualTo(LexEntryInflTypeTags.kClassName));
                var nonStandardChildElt = XElement.Parse(nonStandardChild.Xml);
                Assert.That(nonStandardChildElt.XPathSelectElement("Name/AUni").Value,
                            Is.EqualTo("NonStandardChild"));
            }

            // test that plural child has correct class
            {
                var varTypePluralChild = dtoRepos.GetDTO(guidPluralChild);
                Assert.That(varTypePluralChild.Classname, Is.EqualTo(LexEntryInflTypeTags.kClassName));
                var varTypePluralChildElt = XElement.Parse(varTypePluralChild.Xml);
                Assert.That(varTypePluralChildElt.XPathSelectElement("Name/AUni").Value,
                            Is.EqualTo("PluralChild"));
            }

            // test that past child has correct class
            {
                var varTypePastChild = dtoRepos.GetDTO(guidPastChild);
                Assert.That(varTypePastChild.Classname, Is.EqualTo(LexEntryInflTypeTags.kClassName));
                var varTypePastChildElt = XElement.Parse(varTypePastChild.Xml);
                Assert.That(varTypePastChildElt.XPathSelectElement("Name/AUni").Value,
                            Is.EqualTo("PastChild"));
            }
        }
Exemple #22
0
        public void DtosByClassButNoSubclassesTest()
        {
            var dtos = new HashSet <DomainObjectDTO>();
            // 1. Add barebones LP.
            const string lpGuid = "9719A466-2240-4DEA-9722-9FE0746A30A6";

            CreatoDTO(dtos, lpGuid, "LangProject", null);
            IDomainObjectDTORepository dtoRepos = new DomainObjectDtoRepository(1, dtos,
                                                                                m_mdc, null, FwDirectoryFinder.FdoDirectories);
            var result = new List <DomainObjectDTO>(dtoRepos.AllInstancesSansSubclasses("CmObject"));

            Assert.AreEqual(0, result.Count, "Wrong number of DTOs (expected 0).");
            result = new List <DomainObjectDTO>(dtoRepos.AllInstancesSansSubclasses("LangProject"));
            Assert.AreEqual(1, result.Count, "Wrong number of DTOs (expected 1).");
        }
        private static IDomainObjectDTORepository DoCommonBasics(IEnumerable <string> extraDataFiles)
        {
            var dtos = DataMigrationTestServices.ParseProjectFile("DataMigration7000013_CommonData.xml");

            foreach (var extraDataFile in extraDataFiles)
            {
                dtos.UnionWith(DataMigrationTestServices.ParseProjectFile(extraDataFile));
            }

            var mockMDC = SetupMDC();

            IDomainObjectDTORepository dtoRepos = new DomainObjectDtoRepository(7000012, dtos, mockMDC, null, FwDirectoryFinder.FdoDirectories);

            return(dtoRepos);
        }
Exemple #24
0
        public void UpdateUnknownDtoTest()
        {
            var dtos = new HashSet <DomainObjectDTO>();
            // 1. Add barebones LP.
            const string lpGuid = "9719A466-2240-4DEA-9722-9FE0746A30A6";

            CreatoDTO(dtos, lpGuid, "LangProject", null);
            IDomainObjectDTORepository dtoRepos = new DomainObjectDtoRepository(1, dtos,
                                                                                m_mdc, null, FwDirectoryFinder.FdoDirectories);

            var newGuid = Guid.NewGuid();
            var newby   = new DomainObjectDTO(newGuid.ToString(), "LexEntry", "<rt />");

            dtoRepos.Update(newby);
        }
Exemple #25
0
        public void DtosByClassWithSubclassesTest()
        {
            var dtos = new HashSet <DomainObjectDTO>();
            // 1. Add barebones LP.
            const string lpGuid = "9719A466-2240-4DEA-9722-9FE0746A30A6";

            CreatoDTO(dtos, lpGuid, "LangProject", null);
            const string lexDbGuid = "6C84F84A-5B99-4CF5-A7D5-A308DDC604E0";

            CreatoDTO(dtos, lexDbGuid, "LexDb", null);
            IDomainObjectDTORepository dtoRepos = new DomainObjectDtoRepository(1, dtos,
                                                                                m_mdc, null, FwDirectoryFinder.FdoDirectories);
            var result = new List <DomainObjectDTO>(dtoRepos.AllInstancesWithSubclasses("CmObject"));

            Assert.AreEqual(2, result.Count, "Wrong number of DTOs (expected 2).");
        }
Exemple #26
0
        public void OwningDtoTest()
        {
            var dtos = new HashSet <DomainObjectDTO>();
            // 1. Add barebones LP.
            const string lpGuid    = "9719A466-2240-4DEA-9722-9FE0746A30A6";
            var          lpDto     = CreatoDTO(dtos, lpGuid, "LangProject", null);
            const string lexDbGuid = "6C84F84A-5B99-4CF5-A7D5-A308DDC604E0";
            var          ldbDto    = CreatoDTO(dtos, lexDbGuid, "LexDb", lpGuid);
            IDomainObjectDTORepository dtoRepos = new DomainObjectDtoRepository(1, dtos,
                                                                                m_mdc, null, FwDirectoryFinder.FdoDirectories);

            Assert.IsNull(dtoRepos.GetOwningDTO(lpDto), "LP has owner?");
            var ldbOwner = dtoRepos.GetOwningDTO(ldbDto);

            Assert.IsNotNull(ldbOwner, "LexDB has no owner?");
            Assert.AreSame(lpDto, ldbOwner, "LP not owner of LexDB?");
        }
        public void DataMigration7000057Test_Normal()
        {
            var dtos = DataMigrationTestServices.ParseProjectFile("DataMigration7000057_Normal.xml");
            // Set up mock MDC.
            var mockMdc = new MockMDCForDataMigration();
            IDomainObjectDTORepository dtoRepos = new DomainObjectDtoRepository(7000056, dtos, mockMdc, null);

            m_dataMigrationManager.PerformMigration(dtoRepos, 7000057, new DummyProgressDlg());
            Assert.AreEqual(7000057, dtoRepos.CurrentModelVersion, "Wrong updated version.");

            // check that Irregularly Inflected Form Type has new class
            {
                var iifNew = dtoRepos.GetDTO(kguidLexTypIrregInflectionVar);
                Assert.That(iifNew.Classname, Is.EqualTo(LexEntryInflTypeTags.kClassName));
                var iifNewElt = XElement.Parse(iifNew.Xml);
                Assert.That(iifNewElt.XPathSelectElement("Name/AUni").Value,
                            Is.EqualTo("Irregularly Inflected Form"));
            }

            // check that we haven't changed another owned object class
            {
                // Discussion for Irregularly Inflected Form Type
                var iifDiscussion = dtoRepos.GetDTO("b6f4c056-ea5e-11de-8a9c-0013722f8dec");
                Assert.That(iifDiscussion.Classname, Is.EqualTo(StTextTags.kClassName));
            }

            // check that Irregularly Inflected Form Type (Plural) has new class
            {
                var iifNewPlural = dtoRepos.GetDTO(kguidLexTypPluralVar);
                Assert.That(iifNewPlural, Is.Not.Null);
                Assert.That(iifNewPlural.Classname, Is.EqualTo(LexEntryInflTypeTags.kClassName));
                var iifNewPluralElt = XElement.Parse(iifNewPlural.Xml);
                Assert.That(iifNewPluralElt.XPathSelectElement("Name/AUni").Value,
                            Is.EqualTo("Plural"));
            }

            // check that Irregularly Inflected Form Type (Past) has new class
            {
                var iifNewPast = dtoRepos.GetDTO(kguidLexTypPastVar);
                Assert.That(iifNewPast, Is.Not.Null);
                Assert.That(iifNewPast.Classname, Is.EqualTo(LexEntryInflTypeTags.kClassName));
                var iifNewPastElt = XElement.Parse(iifNewPast.Xml);
                Assert.That(iifNewPastElt.XPathSelectElement("Name/AUni").Value,
                            Is.EqualTo("Past"));
            }
        }
Exemple #28
0
        public void TryGetValueTests()
        {
            var dtos = new HashSet <DomainObjectDTO>();
            // 1. Add barebones LP.
            const string lpGuid = "9719A466-2240-4DEA-9722-9FE0746A30A6";

            CreatoDTO(dtos, lpGuid, "LangProject", null);
            IDomainObjectDTORepository dtoRepos = new DomainObjectDtoRepository(1, dtos,
                                                                                m_mdc, null, FwDirectoryFinder.FdoDirectories);
            DomainObjectDTO dto;
            var             retval = dtoRepos.TryGetValue(Guid.NewGuid().ToString().ToLower(), out dto);

            Assert.IsNull(dto, "Oops.It does exist.");
            Assert.IsFalse(retval, "Reportedly, it does exist.");

            retval = dtoRepos.TryGetValue("9719A466-2240-4DEA-9722-9FE0746A30A6", out dto);
            Assert.IsNotNull(dto, "LP does not exist???");
            Assert.IsTrue(retval, "Reportedly, it does not exist.");
        }
        public void UniElementPropertiesAreRemoved()
        {
            var mockMdc = new MockMDCForDataMigration();

            mockMdc.AddClass(1, "CmObject", null, new List <string> {
                "ClassWithUnicodeProperties", "AbstractClassWithUnicodeProperties"
            });
            mockMdc.AddClass(2, "ClassWithUnicodeProperties", "CmObject", new List <string>());
            var currentFlid = 2000;

            mockMdc.AddField(++currentFlid, "UnicodePropWithAttrs", CellarPropertyType.Unicode, 0);
            mockMdc.AddField(++currentFlid, "UnicodePropWithoutAttrs", CellarPropertyType.Unicode, 0);

            mockMdc.AddClass(3, "AbstractClassWithUnicodeProperties", "CmObject", new List <string> {
                "ClassWithInheritedUnicodeProperties"
            });
            currentFlid = 3000;
            mockMdc.AddField(++currentFlid, "UnicodePropWithAttrs", CellarPropertyType.Unicode, 0);
            mockMdc.AddField(++currentFlid, "UnicodePropWithoutAttrs", CellarPropertyType.Unicode, 0);
            mockMdc.AddClass(4, "ClassWithInheritedUnicodeProperties", "AbstractClassWithUnicodeProperties", new List <string>());

            var dtos = DataMigrationTestServices.ParseProjectFile("DataMigration7000067TestData.xml");
            IDomainObjectDTORepository dtoRepos = new DomainObjectDtoRepository(7000066, dtos, mockMdc, null, FwDirectoryFinder.FdoDirectories);

            m_dataMigrationManager.PerformMigration(dtoRepos, 7000067, new DummyProgressDlg());

            var instance   = XElement.Parse(dtoRepos.AllInstancesSansSubclasses("ClassWithUnicodeProperties").First().Xml);
            var uniElement = instance.Element("UnicodePropWithAttrs").Element("Uni");

            Assert.IsFalse(uniElement.HasAttributes);
            Assert.AreEqual("With Attrs", uniElement.Value);
            uniElement = instance.Element("UnicodePropWithoutAttrs").Element("Uni");
            Assert.IsFalse(uniElement.HasAttributes);
            Assert.AreEqual("Without Attrs", uniElement.Value);

            instance   = XElement.Parse(dtoRepos.AllInstancesSansSubclasses("ClassWithInheritedUnicodeProperties").First().Xml);
            uniElement = instance.Element("UnicodePropWithAttrs").Element("Uni");
            Assert.IsFalse(uniElement.HasAttributes);
            Assert.AreEqual("Inherited With Attrs", uniElement.Value);
            uniElement = instance.Element("UnicodePropWithoutAttrs").Element("Uni");
            Assert.IsFalse(uniElement.HasAttributes);
            Assert.AreEqual("Inherited Without Attrs", uniElement.Value);
        }
        public void DataMigration7000020Test()
        {
            var dtos = DataMigrationTestServices.ParseProjectFile("DataMigration7000020.xml");

            IFwMetaDataCacheManaged mockMdc = SetupMdc();

            IDomainObjectDTORepository repoDto = new DomainObjectDtoRepository(7000019, dtos, mockMdc,
                                                                               Path.GetTempPath());

            // Initial check that data was read properly.
            var cObjects = repoDto.AllInstances().Count();

            Assert.AreEqual(378, cObjects, "Before migrating, should be 378 objects");
            var cLangProject = repoDto.AllInstancesSansSubclasses("LangProject").Count();

            Assert.AreEqual(1, cLangProject, "Before migrating, should be 1 LangProject object");
            var cUserView = repoDto.AllInstancesSansSubclasses("UserView").Count();

            Assert.AreEqual(17, cUserView, "Before migrating, should be 17 UserView objects");
            var cUserViewRec = repoDto.AllInstancesSansSubclasses("UserViewRec").Count();

            Assert.AreEqual(31, cUserViewRec, "Before migrating, should be 31 UserViewRec objects");
            var cUserViewField = repoDto.AllInstancesSansSubclasses("UserViewField").Count();

            Assert.AreEqual(329, cUserViewField, "Before migrating, should be 329 UserViewField objects");

            // Do the migration.
            m_dataMigrationManager.PerformMigration(repoDto, 7000020, new DummyProgressDlg());

            // Verification Phase
            Assert.AreEqual(7000020, repoDto.CurrentModelVersion, "Wrong updated version.");
            cObjects = repoDto.AllInstances().Count();
            Assert.AreEqual(31, cObjects, "After migrating, should be 31 objects");
            cLangProject = repoDto.AllInstancesSansSubclasses("LangProject").Count();
            Assert.AreEqual(1, cLangProject, "After migrating, should be 1 LangProject object");
            cUserView = repoDto.AllInstancesSansSubclasses("UserView").Count();
            Assert.AreEqual(12, cUserView, "After migrating, should be 12 UserView objects");
            cUserViewRec = repoDto.AllInstancesSansSubclasses("UserViewRec").Count();
            Assert.AreEqual(3, cUserViewRec, "After migrating, should be 3 UserViewRec objects");
            cUserViewField = repoDto.AllInstancesSansSubclasses("UserViewField").Count();
            Assert.AreEqual(15, cUserViewField, "After migrating, should be 15 UserViewField objects");
        }