Skip to content

Erhöhe die Testabdeckung für ETL-Services und füge neue Tests für den…#19

Merged
christopherdukart merged 5 commits intomainfrom
18-feature-testabdeckung-weiter-erhöhen-etl-services-markdig
Feb 28, 2026

Hidden character warning

The head ref may contain hidden characters: "18-feature-testabdeckung-weiter-erh\u00f6hen-etl-services-markdig"
Merged

Erhöhe die Testabdeckung für ETL-Services und füge neue Tests für den…#19
christopherdukart merged 5 commits intomainfrom
18-feature-testabdeckung-weiter-erhöhen-etl-services-markdig

Conversation

@christopherdukart
Copy link
Contributor

… Übersetzungsbatchkontext, den Confluence-Renderer, den URL-Builder und den Bildoptimierer hinzu. Setze die Coverage-Schwelle auf 70-80 und aktualisiere die CI-Konfiguration für die Coverage-Berichterstattung.

Summary

Describe what this PR changes and why.

Related Issues

  • Closes #
  • Related #

Type of change

  • Bug fix
  • New feature
  • Refactor
  • Documentation update
  • CI / tooling

Validation

  • dotnet build ConfluenceSynkMD.slnx --configuration Release
  • dotnet test ConfluenceSynkMD.slnx --configuration Release --no-build
  • Added/updated tests where appropriate

Breaking changes

  • No
  • Yes (describe below)

Checklist

  • I followed the contribution guidelines
  • I updated relevant docs
  • I did not include secrets or private data

… Übersetzungsbatchkontext, den Confluence-Renderer, den URL-Builder und den Bildoptimierer hinzu. Setze die Coverage-Schwelle auf 65 und aktualisiere die CI-Konfiguration für die Coverage-Berichterstattung.
Copilot AI review requested due to automatic review settings February 28, 2026 15:11
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Diese PR erhöht die Testabdeckung rund um zentrale ETL-/Rendering-/Service-Komponenten und passt die CI-Pipeline an, um Code-Coverage zu erzeugen und per Threshold zu erzwingen.

Changes:

  • Neue Unit-Tests für TranslationBatchContext, ConfluenceRenderer, ConfluenceUrlBuilder und ImageOptimizer.
  • Anpassung der Coverlet-Threshold-Konfiguration im Testprojekt.
  • CI-Workflow-Update: Coverage-Erzeugung via Coverlet MSBuild + Upload der Coverage-Artefakte/Codecov-Upload.

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
tests/ConfluenceSynkMD.Tests/Services/ImageOptimizerTests.cs Neue Tests für Bildoptimierung (Disabled/Nonexistent/Resize/Load-Failure).
tests/ConfluenceSynkMD.Tests/Services/ConfluenceUrlBuilderTests.cs Neue Tests für URL-Strategie/Encoding/Fallbacks.
tests/ConfluenceSynkMD.Tests/Markdig/ConfluenceRendererTests.cs Neue Tests für Default-State und registrierte Renderer.
tests/ConfluenceSynkMD.Tests/ETL/Core/TranslationBatchContextTests.cs Neue Tests für Initialzustand und Mutierbarkeit des Batch-Kontexts.
tests/ConfluenceSynkMD.Tests/ConfluenceSynkMD.Tests.csproj Threshold-Anhebung und ThresholdStat=total.
.github/workflows/ci.yml dotnet test mit Coverlet MSBuild, Threshold-Enforcement, Artifact-/Codecov-Upload.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +16 to +17
<Threshold>65</Threshold>
<ThresholdStat>total</ThresholdStat>
Copy link

Copilot AI Feb 28, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR-Beschreibung erwähnt eine Coverage-Schwelle von 70–80, hier wird jedoch 65 gesetzt. Bitte entweder die PR-Beschreibung anpassen oder den Threshold konsistent auf den intendierten Wert erhöhen (und CI/Tests entsprechend).

Copilot uses AI. Check for mistakes.
Comment on lines +46 to +56
- name: Test with coverage (enforced threshold)
run: |
dotnet test ConfluenceSynkMD.slnx \
--no-build \
--configuration Release \
/p:CollectCoverage=true \
/p:CoverletOutput=./TestResults/Coverage/ \
/p:CoverletOutputFormat="cobertura,json" \
/p:ThresholdType=line \
/p:ThresholdStat=total \
/p:Threshold=65
Copy link

Copilot AI Feb 28, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Die Threshold-Parameter (ThresholdType/Stat/Value) werden sowohl im Testprojekt (.csproj) als auch hier in der CI gesetzt. Das ist fehleranfällig (Drift bei zukünftigen Änderungen). Besser: Thresholds nur an einer Stelle definieren (z.B. im .csproj/Directory.Build.props) und in der CI nur CollectCoverage/Output/Format konfigurieren.

Suggested change
- name: Test with coverage (enforced threshold)
run: |
dotnet test ConfluenceSynkMD.slnx \
--no-build \
--configuration Release \
/p:CollectCoverage=true \
/p:CoverletOutput=./TestResults/Coverage/ \
/p:CoverletOutputFormat="cobertura,json" \
/p:ThresholdType=line \
/p:ThresholdStat=total \
/p:Threshold=65
- name: Test with coverage
run: |
dotnet test ConfluenceSynkMD.slnx \
--no-build \
--configuration Release \
/p:CollectCoverage=true \
/p:CoverletOutput=./TestResults/Coverage/ \
/p:CoverletOutputFormat="cobertura,json"

Copilot uses AI. Check for mistakes.
Comment on lines +34 to +38
sut.ObjectRenderers.Should().Contain(r => r.GetType().Name == "HeadingRenderer");
sut.ObjectRenderers.Should().Contain(r => r.GetType().Name == "CodeBlockRenderer");
sut.ObjectRenderers.Should().Contain(r => r.GetType().Name == "LinkInlineRenderer");
sut.ObjectRenderers.Should().Contain(r => r.GetType().Name == "MathInlineRenderer");
sut.ObjectRenderers.Should().Contain(r => r.GetType().Name == "MathBlockRenderer");
Copy link

Copilot AI Feb 28, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Die Assertions prüfen Renderer über GetType().Name == "…", was bei Umbenennungen/Refactors unnötig fragil ist. Da die Renderer-Typen im Projekt verfügbar sind, besser direkt auf die Typen prüfen (z.B. r is HeadingRenderer) statt auf String-Namen.

Suggested change
sut.ObjectRenderers.Should().Contain(r => r.GetType().Name == "HeadingRenderer");
sut.ObjectRenderers.Should().Contain(r => r.GetType().Name == "CodeBlockRenderer");
sut.ObjectRenderers.Should().Contain(r => r.GetType().Name == "LinkInlineRenderer");
sut.ObjectRenderers.Should().Contain(r => r.GetType().Name == "MathInlineRenderer");
sut.ObjectRenderers.Should().Contain(r => r.GetType().Name == "MathBlockRenderer");
sut.ObjectRenderers.Should().Contain(r => r is HeadingRenderer);
sut.ObjectRenderers.Should().Contain(r => r is CodeBlockRenderer);
sut.ObjectRenderers.Should().Contain(r => r is LinkInlineRenderer);
sut.ObjectRenderers.Should().Contain(r => r is MathInlineRenderer);
sut.ObjectRenderers.Should().Contain(r => r is MathBlockRenderer);

Copilot uses AI. Check for mistakes.
…für verschiedene Renderer hinzu, einschließlich Fußnoten-, HTML-, Listen-, Mathematik- und Absatz-Renderer. Aktualisiere die CI-Konfiguration entsprechend.
… CI-Konfiguration entsprechend. Füge zusätzliche Dateien zur Ausschlussliste hinzu.
@codecov
Copy link

codecov bot commented Feb 28, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@christopherdukart christopherdukart merged commit 8fe95c4 into main Feb 28, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature]: Testabdeckung weiter erhöhen (ETL, Services, Markdig)

2 participants