Skip to content

Commit 05d11a5

Browse files
committed
Fix serialisation of the "Harvard" style for lower-roman list
1 parent fc3d965 commit 05d11a5

File tree

3 files changed

+21
-11
lines changed

3 files changed

+21
-11
lines changed

src/Html2OpenXml/Expressions/Numbering/NumberingExpressionBase.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,8 @@ protected int GetOrCreateListTemplate(ParsingContext context, string listName)
8080

8181
abstractNum.StyleLink = new StyleLink { Val = "Harvard" };
8282
context.DocumentStyle.AddStyle("Harvard", new Style (
83-
new Name { Val = "Harvard" },
84-
new ParagraphProperties(
83+
new StyleName { Val = "Harvard" },
84+
new StyleParagraphProperties(
8585
new NumberingProperties() { NumberingId = new() { Val = abstractNum.AbstractNumberId } }
8686
)) {
8787
Type = StyleValues.Numbering,

test/HtmlToOpenXml.Tests/HtmlConverterTestBase.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ protected void AssertThatOpenXmlDocumentIsValid()
4949
foreach (ValidationErrorInfo error in errors)
5050
{
5151
TestContext.Error.Write("{0}\n\t{1}\n", error.Path?.XPath, error.Description);
52+
if (error.Node is not null)
53+
TestContext.Error.WriteLine("\n\t{0}", error.Node.OuterXml);
5254
}
5355

5456
Assert.Fail("The document isn't conformant with Office 2021");

test/HtmlToOpenXml.Tests/NumberingTests.cs

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,13 @@ public void NonLiElement_ShouldBeIgnored()
2727
}
2828

2929
[Test(Description = "Two consecutive lists should restart numbering to 1")]
30-
public void ConsecutiveList_ReturnsList_RestartingOrder()
30+
public async Task ConsecutiveList_ReturnsList_RestartingOrder()
3131
{
32-
var elements = converter.Parse(@"
32+
await converter.ParseBody(@"
3333
<oL><li>Item 1.1</li></oL>
3434
<p>placeholder</p>
3535
<ol><li>Item 2.1</li></ol>");
36+
var elements = mainPart.Document.Body!.ChildElements;
3637
Assert.Multiple(() => {
3738
Assert.That(elements, Has.Count.EqualTo(3));
3839
Assert.That(elements, Is.All.TypeOf<Paragraph>());
@@ -59,18 +60,20 @@ public void ConsecutiveList_ReturnsList_RestartingOrder()
5960
Is.Not.EqualTo(p2.ParagraphProperties?.NumberingProperties?.NumberingId?.Val?.Value),
6061
"Expected two different list instances");
6162
});
63+
AssertThatOpenXmlDocumentIsValid();
6264
}
6365

6466
[Test]
65-
public void NestedNumberList_ReturnsMultilevelList()
67+
public async Task NestedNumberList_ReturnsMultilevelList()
6668
{
67-
var elements = converter.Parse(
69+
await converter.ParseBody(
6870
@"<ol>
6971
<li>Item 1
7072
<ol><li>Item 1.1</li></ol>
7173
</li>
7274
<li>Item 2</li>
7375
</ol>");
76+
var elements = mainPart.Document.Body!.ChildElements;
7477
Assert.Multiple(() => {
7578
Assert.That(elements, Has.Count.EqualTo(3));
7679
Assert.That(elements, Is.All.TypeOf<Paragraph>());
@@ -113,6 +116,7 @@ public void NestedNumberList_ReturnsMultilevelList()
113116
Assert.That(p1_1.ParagraphProperties?.NumberingProperties?.NumberingLevelReference?.Val?.Value, Is.EqualTo(1));
114117
Assert.That(p2.ParagraphProperties?.NumberingProperties?.NumberingLevelReference?.Val?.Value, Is.EqualTo(0));
115118
});
119+
AssertThatOpenXmlDocumentIsValid();
116120
}
117121

118122
[Test(Description = "Empty list should not be registred")]
@@ -392,12 +396,13 @@ public void OverrideStartNumber_WithUl_ShouldBeIgnored()
392396
}
393397

394398
[Test]
395-
public void RomanList_ReturnsListWithCustomStyle()
399+
public async Task RomanList_ReturnsListWithCustomStyle()
396400
{
397-
var elements = converter.Parse(@"<ul style='list-style-type:lower-roman'>
401+
await converter.ParseBody(@"<ul style='list-style-type:lower-roman'>
398402
<li>Item 1</li>
399403
</ul>");
400404

405+
var elements = mainPart.Document.Body!.ChildElements;
401406
Assert.That(elements, Is.Not.Empty);
402407
Assert.That(elements, Is.All.TypeOf<Paragraph>());
403408
var numId = ((Paragraph) elements[0]).ParagraphProperties?.NumberingProperties?.NumberingId?.Val?.Value;
@@ -418,12 +423,13 @@ public void RomanList_ReturnsListWithCustomStyle()
418423
.Elements<Style>()
419424
.FirstOrDefault(s => s.StyleName?.Val == "Harvard");
420425
Assert.That(style, Is.Not.Null);
426+
AssertThatOpenXmlDocumentIsValid();
421427
}
422428

423429
[Test(Description = "Restart indenting in second nested numbering (issue #83)")]
424-
public void NestedNumbering_ReturnsNestedList_RestartingOrder()
430+
public async Task NestedNumbering_ReturnsNestedList_RestartingOrder()
425431
{
426-
var elements = converter.Parse(@"
432+
await converter.ParseBody(@"
427433
<ol style='list-style-type: decimal;'>
428434
<li>item 1a
429435
<ol style='list-style-type: lower-alpha;'>
@@ -439,6 +445,7 @@ public void NestedNumbering_ReturnsNestedList_RestartingOrder()
439445
</li>
440446
</ol>");
441447

448+
var elements = mainPart.Document.Body!.ChildElements;
442449
var absNum = mainPart.NumberingDefinitionsPart?.Numbering
443450
.Elements<AbstractNum>();
444451
Assert.That(absNum, Is.Not.Null);
@@ -455,8 +462,9 @@ public void NestedNumbering_ReturnsNestedList_RestartingOrder()
455462
});
456463
Assert.That(instances.Last().GetFirstChild<LevelOverride>()?.LevelIndex?.Value, Is.EqualTo(1));
457464
Assert.That(instances.Last().GetFirstChild<LevelOverride>()?.StartOverrideNumberingValue?.Val?.Value, Is.EqualTo(1));
465+
AssertThatOpenXmlDocumentIsValid();
458466
}
459-
467+
460468
[TestCase("rtl", true)]
461469
[TestCase("ltr", false)]
462470
[TestCase("", null)]

0 commit comments

Comments
 (0)