56 lines
2.2 KiB
C#
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);
|
|
}
|
|
}
|