Files
itworx-knowledge-hub-Public/tests/backend/ItWorx.KnowledgeHub.Domain.Tests/DraftTests.cs
T

56 lines
2.2 KiB
C#

namespace ItWorx.KnowledgeHub.Domain.Tests;
using ItWorx.KnowledgeHub.Domain.Knowledge;
/// <summary>V2-R1 (audit finding M3): a draft must capture every field the editor
/// actually lets a user change, not just title/Markdown, so a metadata-only edit is
/// recoverable exactly like a content edit is.</summary>
public sealed class DraftTests
{
private static readonly DateTimeOffset Now = new(2026, 8, 3, 12, 0, 0, TimeSpan.Zero);
[Fact]
public void Create_captures_tags_document_type_status_and_change_summary()
{
var draft = Draft.Create(
Guid.NewGuid(), Guid.NewGuid(), "draft-key", null, null,
"Titel", "Markdown", ["netwerk", "referentie"], "Runbook", "Active", "Kleine wijziging",
Now, TimeSpan.FromDays(14));
Assert.Equal(["netwerk", "referentie"], draft.Tags);
Assert.Equal("Runbook", draft.DocumentType);
Assert.Equal("Active", draft.DocumentStatus);
Assert.Equal("Kleine wijziging", draft.ChangeSummary);
}
[Fact]
public void Create_with_no_metadata_defaults_to_an_empty_tag_list_and_null_metadata_never_null_reference()
{
var draft = Draft.Create(
Guid.NewGuid(), Guid.NewGuid(), "draft-key", null, null,
"Titel", "Markdown", null, null, null, null, Now, TimeSpan.FromDays(14));
Assert.Empty(draft.Tags);
Assert.Null(draft.DocumentType);
Assert.Null(draft.DocumentStatus);
Assert.Null(draft.ChangeSummary);
}
[Fact]
public void Update_replaces_every_field_including_a_metadata_only_change()
{
var draft = Draft.Create(
Guid.NewGuid(), Guid.NewGuid(), "draft-key", null, null,
"Titel", "Markdown", ["oud"], "WikiPage", "Draft", null, Now, TimeSpan.FromDays(14));
draft.Update("Titel", "Markdown", ["nieuw"], "Runbook", "Active", "Bijgewerkt", Now.AddMinutes(1), TimeSpan.FromDays(14));
Assert.Equal(["nieuw"], draft.Tags);
Assert.Equal("Runbook", draft.DocumentType);
Assert.Equal("Active", draft.DocumentStatus);
Assert.Equal("Bijgewerkt", draft.ChangeSummary);
Assert.Equal(Now.AddMinutes(1), draft.UpdatedAt);
Assert.Equal(Now.AddMinutes(1).AddDays(14), draft.ExpiresAt);
}
}