From 61b9a0323c19c608fd014af77c3a26f26fd030ac Mon Sep 17 00:00:00 2001 From: Enkidu93 Date: Thu, 30 Apr 2026 04:18:37 -0400 Subject: [PATCH] Parse Settings.xml visibility; add tests to confirm attribute values are assigned correctly now that there are so many --- .../Corpora/ParatextProjectSettings.cs | 3 ++ .../ParatextProjectSettingsParserBase.cs | 35 ++++++++++--------- .../FileParatextProjectSettingsParserTests.cs | 32 +++++++++++++++-- .../Corpora/ParatextProjectSettingsTests.cs | 3 +- .../ZipParatextProjectSettingsParserTests.cs | 29 +++++++++++++-- 5 files changed, 81 insertions(+), 21 deletions(-) diff --git a/src/SIL.Machine/Corpora/ParatextProjectSettings.cs b/src/SIL.Machine/Corpora/ParatextProjectSettings.cs index e1875715..d370c824 100644 --- a/src/SIL.Machine/Corpora/ParatextProjectSettings.cs +++ b/src/SIL.Machine/Corpora/ParatextProjectSettings.cs @@ -23,6 +23,7 @@ public ParatextProjectSettings( string biblicalTermsFileName, string languageCode, string translationType, + string visibility, string parentGuid = null, string parentName = null, ParatextProjectSettings parentSettings = null @@ -45,6 +46,7 @@ public ParatextProjectSettings( ParentGuid = parentGuid; ParentName = parentName; _parent = parentSettings; + Visibility = visibility; } public string Guid { get; } @@ -63,6 +65,7 @@ public ParatextProjectSettings( public string TranslationType { get; } public string ParentGuid { get; } public string ParentName { get; } + public string Visibility { get; } public ParatextProjectSettings Parent { get { return _parent; } diff --git a/src/SIL.Machine/Corpora/ParatextProjectSettingsParserBase.cs b/src/SIL.Machine/Corpora/ParatextProjectSettingsParserBase.cs index f570f464..01c4d68b 100644 --- a/src/SIL.Machine/Corpora/ParatextProjectSettingsParserBase.cs +++ b/src/SIL.Machine/Corpora/ParatextProjectSettingsParserBase.cs @@ -131,23 +131,26 @@ public ParatextProjectSettings Parse() parentGuid = translationInfoSettingParts[2] != string.Empty ? translationInfoSettingParts[2] : null; } + string visibility = settingsDoc.Root.Element("Visibility")?.Value; + var settings = new ParatextProjectSettings( - guid, - name, - fullName, - encoding, - versification, - stylesheet, - prefix, - form, - suffix, - parts[0], - parts[1], - parts[2], - languageCode, - translationType, - parentGuid, - parentName + guid: guid, + name: name, + fullName: fullName, + encoding: encoding, + versification: versification, + stylesheet: stylesheet, + fileNamePrefix: prefix, + fileNameForm: form, + fileNameSuffix: suffix, + biblicalTermsListType: parts[0], + biblicalTermsProjectName: parts[1], + biblicalTermsFileName: parts[2], + languageCode: languageCode, + translationType: translationType, + visibility: visibility, + parentGuid: parentGuid, + parentName: parentName ); if (_parentParatextProjectSettings != null && settings.HasParent) diff --git a/tests/SIL.Machine.Tests/Corpora/FileParatextProjectSettingsParserTests.cs b/tests/SIL.Machine.Tests/Corpora/FileParatextProjectSettingsParserTests.cs index 52470253..e03857b0 100644 --- a/tests/SIL.Machine.Tests/Corpora/FileParatextProjectSettingsParserTests.cs +++ b/tests/SIL.Machine.Tests/Corpora/FileParatextProjectSettingsParserTests.cs @@ -1,9 +1,35 @@ using NUnit.Framework; +using SIL.Scripture; namespace SIL.Machine.Corpora; public class FileParatextProjectSettingsParserTests { + [Test] + public void Parse() + { + FileParatextProjectSettingsParser parser = new(CorporaTestHelpers.UsfmTestProjectPath); + ParatextProjectSettings settings = parser.Parse(); + + using (Assert.EnterMultipleScope()) + { + Assert.That(settings.Guid, Is.EqualTo("a7e0b3ce0200736062f9f810a444dbfbe64aca35")); + Assert.That(settings.Name, Is.EqualTo("Tes")); + Assert.That(settings.FullName, Is.EqualTo("Test")); + Assert.That(settings.Encoding, Is.EqualTo(System.Text.Encoding.UTF8)); + Assert.That(settings.Versification.BaseVersification, Is.EqualTo(ScrVers.English)); + Assert.That(settings.FileNamePrefix, Is.EqualTo(string.Empty)); + Assert.That(settings.FileNameForm, Is.EqualTo("41MAT")); + Assert.That(settings.FileNameSuffix, Is.EqualTo("Tes.SFM")); + Assert.That(settings.BiblicalTermsListType, Is.EqualTo("Project")); + Assert.That(settings.BiblicalTermsProjectName, Is.EqualTo("Tes")); + Assert.That(settings.BiblicalTermsFileName, Is.EqualTo("ProjectBiblicalTerms.xml")); + Assert.That(settings.LanguageCode, Is.EqualTo("en")); + Assert.That(settings.TranslationType, Is.EqualTo("Standard")); + Assert.That(settings.Visibility, Is.EqualTo("Public")); + } + } + [Test] public void Parse_CustomStylesheet() { @@ -19,16 +45,18 @@ public void Parse_ParentProject() { FileParatextProjectSettingsParser parser = new(CorporaTestHelpers.UsfmTestProjectPath); ParatextProjectSettings settings = parser.Parse(); + + Assert.That(settings.TranslationType, Is.EqualTo("Standard")); + Assert.That(settings.Visibility, Is.EqualTo("Public")); + Assert.That(settings.HasParent); Assert.That(settings.IsDaughterProjectOf(settings)); - Assert.That(settings.TranslationType, Is.EqualTo("Standard")); Assert.That(settings.Parent, Is.Null); parser = new(CorporaTestHelpers.UsfmTestProjectPath, parentSettings: settings); settings = parser.Parse(); Assert.That(settings.HasParent); Assert.That(settings.IsDaughterProjectOf(settings)); - Assert.That(settings.TranslationType, Is.EqualTo("Standard")); Assert.That(settings.Parent, Is.Not.Null); } } diff --git a/tests/SIL.Machine.Tests/Corpora/ParatextProjectSettingsTests.cs b/tests/SIL.Machine.Tests/Corpora/ParatextProjectSettingsTests.cs index 1fecc472..5ef8d1b3 100644 --- a/tests/SIL.Machine.Tests/Corpora/ParatextProjectSettingsTests.cs +++ b/tests/SIL.Machine.Tests/Corpora/ParatextProjectSettingsTests.cs @@ -187,7 +187,8 @@ private static ParatextProjectSettings CreateSettings(string fileNameForm) "", "BiblicalTerms.xml", "en", - "Standard" + "Standard", + "Public" ); } } diff --git a/tests/SIL.Machine.Tests/Corpora/ZipParatextProjectSettingsParserTests.cs b/tests/SIL.Machine.Tests/Corpora/ZipParatextProjectSettingsParserTests.cs index 2794f189..382a38e9 100644 --- a/tests/SIL.Machine.Tests/Corpora/ZipParatextProjectSettingsParserTests.cs +++ b/tests/SIL.Machine.Tests/Corpora/ZipParatextProjectSettingsParserTests.cs @@ -1,11 +1,37 @@ using System.IO.Compression; using NUnit.Framework; using SIL.ObjectModel; +using SIL.Scripture; namespace SIL.Machine.Corpora; public class ZipParatextProjectSettingsParserTests { + [Test] + public void Parse() + { + using var env = new TestEnvironment(); + ParatextProjectSettings settings = env.Parser.Parse(); + + using (Assert.EnterMultipleScope()) + { + Assert.That(settings.Guid, Is.EqualTo("a7e0b3ce0200736062f9f810a444dbfbe64aca35")); + Assert.That(settings.Name, Is.EqualTo("Tes")); + Assert.That(settings.FullName, Is.EqualTo("Test")); + Assert.That(settings.Encoding, Is.EqualTo(System.Text.Encoding.UTF8)); + Assert.That(settings.Versification.BaseVersification, Is.EqualTo(ScrVers.English)); + Assert.That(settings.FileNamePrefix, Is.EqualTo(string.Empty)); + Assert.That(settings.FileNameForm, Is.EqualTo("41MAT")); + Assert.That(settings.FileNameSuffix, Is.EqualTo("Tes.SFM")); + Assert.That(settings.BiblicalTermsListType, Is.EqualTo("Project")); + Assert.That(settings.BiblicalTermsProjectName, Is.EqualTo("Tes")); + Assert.That(settings.BiblicalTermsFileName, Is.EqualTo("ProjectBiblicalTerms.xml")); + Assert.That(settings.LanguageCode, Is.EqualTo("en")); + Assert.That(settings.TranslationType, Is.EqualTo("Standard")); + Assert.That(settings.Visibility, Is.EqualTo("Public")); + } + } + [Test] public void Parse_CustomStylesheet() { @@ -21,16 +47,15 @@ public void Parse_ParentProject() { using var env = new TestEnvironment(); ParatextProjectSettings settings = env.Parser.Parse(); + Assert.That(settings.HasParent); Assert.That(settings.IsDaughterProjectOf(settings)); - Assert.That(settings.TranslationType, Is.EqualTo("Standard")); Assert.That(settings.Parent, Is.Null); env.Parser = new ZipParatextProjectSettingsParser(env.Archive, settings); settings = env.Parser.Parse(); Assert.That(settings.HasParent); Assert.That(settings.IsDaughterProjectOf(settings)); - Assert.That(settings.TranslationType, Is.EqualTo("Standard")); Assert.That(settings.Parent, Is.Not.Null); }