using OF_DL.Services; namespace OF_DL.Tests.Services; public class FileNameServiceTests { [Fact] public async Task GetFilename_ReturnsExpectedValues() { TestInfo info = new() { Id = 7, Text = "
hello world
", CreatedAt = new DateTime(2024, 1, 2) }; TestMedia media = new() { Id = 99, Files = new TestMediaFiles { Full = new TestMediaFull { Url = "https://cdn.test/file-name.jpg" }, Drm = new object() } }; TestAuthor author = new() { Id = 123 }; FileNameService service = new(new FakeAuthService()); List selectedProperties = ["mediaId", "filename", "username", "text", "createdAt", "id"]; Dictionary values = await service.GetFilename(info, media, author, selectedProperties, "creator"); Assert.Equal("99", values["mediaId"]); Assert.Equal("file-name", values["filename"]); Assert.Equal("creator", values["username"]); Assert.Equal("hello world", values["text"]); Assert.Equal("2024-01-02", values["createdAt"]); Assert.Equal("7", values["id"]); } [Fact] public async Task GetFilename_TruncatesTextTo100Chars() { string longText = new('a', 120); TestInfo info = new() { Text = $"

{longText}

" }; TestMedia media = new() { Id = 1, Files = new TestMediaFiles { Full = new TestMediaFull { Url = "https://cdn.test/short.jpg" }, Drm = null } }; FileNameService service = new(new FakeAuthService()); Dictionary values = await service.GetFilename(info, media, new TestAuthor(), ["text"], "creator"); Assert.Equal(100, values["text"].Length); Assert.Equal(new string('a', 100), values["text"]); } [Fact] public async Task GetFilename_UsesUserLookupWhenUsernameMissing() { TestAuthor author = new() { Id = 55 }; Dictionary users = new() { { "mapped", 55 } }; FileNameService service = new(new FakeAuthService()); Dictionary values = await service.GetFilename(new TestInfo(), new TestMedia(), author, ["username"], "", users); Assert.Equal("mapped", values["username"]); } [Fact] public async Task BuildFilename_ReplacesTokensAndRemovesInvalidChars() { FileNameService service = new(new FakeAuthService()); Dictionary values = new() { { "username", "creator" }, { "mediaId", "99" } }; string result = await service.BuildFilename("{username}_{mediaId}:*?", values); Assert.Equal("creator_99", result); } }