38 lines
1.7 KiB
C#
38 lines
1.7 KiB
C#
using PrivaPub.Federation.Inbox;
|
|||
|
|
using PrivaPub.Federation.Objects;
|
||
|
|
using PrivaPub.Models.Post;
|
||
|
|
|
||
|
|
namespace PrivaPub.Tests.Federation
|
||
|
|
{
|
||
|
|
public class RemoteEditsTests
|
||
|
|
{
|
||
|
|
static readonly DateTime Published = new(2026, 10, 3, 10, 40, 1, DateTimeKind.Utc);
|
||
|
|
|
||
|
|
static Post Stored(DateTime? editedAt = default) => new() { CreationDate = Published, EditedAt = editedAt, ContentHtml = "<p>before</p>" };
|
||
|
|
|
||
|
|
[Fact]
|
||
|
|
public void A_newer_update_is_an_edit_and_an_update_without_a_date_is_a_refresh()
|
||
|
|
{
|
||
|
|
Assert.True(RemoteEdits.IsEdit(new NoteDocument { Updated = Published.AddSeconds(1), ContentHtml = "<p>before</p>" }, Stored()));
|
||
|
|
Assert.False(RemoteEdits.IsEdit(new NoteDocument { ContentHtml = "<p>after</p>" }, Stored()));
|
||
|
|
Assert.False(RemoteEdits.IsEdit(new NoteDocument { Updated = Published.AddSeconds(-1), ContentHtml = "<p>after</p>" }, Stored()));
|
||
|
|
}
|
||
|
|
|
||
|
|
[Fact]
|
||
|
|
public void An_edit_in_the_second_the_post_was_published_counts_when_the_text_changed()
|
||
|
|
{
|
||
|
|
Assert.True(RemoteEdits.IsEdit(new NoteDocument { Updated = Published, ContentHtml = "<p>after</p>" }, Stored()));
|
||
|
|
Assert.True(RemoteEdits.IsEdit(new NoteDocument { Updated = Published, ContentHtml = "<p>before</p>", SpoilerText = "now with a warning" }, Stored()));
|
||
|
|
Assert.False(RemoteEdits.IsEdit(new NoteDocument { Updated = Published, ContentHtml = "<p>before</p>" }, Stored()));
|
||
|
|
}
|
||
|
|
|
||
|
|
[Fact]
|
||
|
|
public void After_a_first_edit_only_a_newer_one_counts()
|
||
|
|
{
|
||
|
|
var edited = Published.AddMinutes(1);
|
||
|
|
|
||
|
|
Assert.False(RemoteEdits.IsEdit(new NoteDocument { Updated = edited, ContentHtml = "<p>again</p>" }, Stored(edited)));
|
||
|
|
Assert.True(RemoteEdits.IsEdit(new NoteDocument { Updated = edited.AddSeconds(1), ContentHtml = "<p>again</p>" }, Stored(edited)));
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|