ProSol.Html.TagsProvider/tests/TagsProvider_MessageHistory_Tests.cs
Alexander Kozachenko 5598d0f898 refactoring #6 (#7)
refactoring #6

Co-authored-by: Alexander Kozachenko <119358312+Alex-Kozachenko@users.noreply.github.com>
Reviewed-on: #7
2023-12-08 01:46:37 +00:00

66 lines
2 KiB
C#

using System.Collections.Immutable;
using ProSol.Html;
using ProSol.Html.Contracts.Data;
using ProSol.Messaging;
using ProSol.Messaging.Translating;
namespace ProSol.Html.Tests;
public class TagsProvider_MessageHistory_Tests
{
private TagsProvider tagsProvider;
private DataSubscriber<string> tagNamesListener;
[SetUp]
public void Setup()
{
tagsProvider = new();
tagNamesListener = new();
tagsProvider
.Translate<TagsProviderMessage, string>(x => x.CurrentTag.TagInfo.Name)
.Subscribe(tagNamesListener);
}
[Test]
public void Process_ShouldReturn_CorrectMessageOrder()
{
var text = "LoremIpsum";
var html = $"<main> <div> <p>{text}</p> </div> </main>";
tagsProvider.Process(html);
var names = tagNamesListener.Messages;
Assert.Multiple( () => {
Assert.That(names[0], Is.EqualTo("p"));
Assert.That(names[1], Is.EqualTo("div"));
Assert.That(names[2], Is.EqualTo("main"));
});
}
[Test]
public void Process_FirstDeepestMessage_ShouldContain_CorrectHistory()
{
var text = "LoremIpsum";
var html = $"<main> <div> <p>{text}</p> </div> </main>";
var tagsHistoryListener = new DataSubscriber<ImmutableArray<TagInfo>>();
tagsProvider
.Translate<TagsProviderMessage, ImmutableArray<TagInfo>>(x => x.TagsHistory)
.Subscribe(tagsHistoryListener);
tagsProvider.Process(html);
var names = tagNamesListener.Messages;
Assert.That(names[0], Is.EqualTo("p"));
Assert.Multiple( () => {
var deepestHistory = tagsHistoryListener.Messages[0]
.Select(x => x.Name)
.ToArray();
Assert.That(deepestHistory[0], Is.EqualTo("main"));
Assert.That(deepestHistory[1], Is.EqualTo("div"));
Assert.That(deepestHistory[2], Is.EqualTo("p"));
});
}
}