// Kyoo - A portable and vast media library solution. // Copyright (c) Kyoo. // // See AUTHORS.md and LICENSE file in the project root for full license information. // // Kyoo is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // any later version. // // Kyoo is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with Kyoo. If not, see . using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Kyoo.Abstractions.Controllers; using Kyoo.Abstractions.Models; using Kyoo.Core.Models.Options; using Microsoft.Extensions.Options; using Moq; using Xunit; using Xunit.Abstractions; using KTranscoder = Kyoo.Core.Controllers.Transcoder; namespace Kyoo.Tests.Transcoder { public class TranscoderTests { private readonly Mock _files; private readonly ITranscoder _transcoder; public TranscoderTests(ITestOutputHelper output) { _files = new Mock(); _transcoder = new KTranscoder( _files.Object, Options.Create(new BasicOptions()), output.BuildLoggerFor() ); } [Fact] public async Task ListFontsTest() { Episode episode = TestSample.Get(); _files.Setup(x => x.ListFiles(It.IsAny(), System.IO.SearchOption.TopDirectoryOnly)) .ReturnsAsync(new[] { "font.ttf", "font.TTF", "toto.ttf" }); ICollection fonts = await _transcoder.ListFonts(episode); List fontsFiles = fonts.Select(x => x.File).ToList(); Assert.Equal(3, fonts.Count); Assert.Contains("font.TTF", fontsFiles); Assert.Contains("font.ttf", fontsFiles); Assert.Contains("toto.ttf", fontsFiles); } [Fact] public async Task GetNoFontTest() { Episode episode = TestSample.Get(); _files.Setup(x => x.GetExtraDirectory(It.IsAny())) .ReturnsAsync("/path"); _files.Setup(x => x.ListFiles(It.IsAny(), System.IO.SearchOption.TopDirectoryOnly)) .ReturnsAsync(new[] { "font.ttf", "font.TTF", "toto.ttf" }); Font font = await _transcoder.GetFont(episode, "toto.ttf"); Assert.Null(font); } [Fact] public async Task GetFontTest() { Episode episode = TestSample.Get(); _files.Setup(x => x.GetExtraDirectory(It.IsAny())) .ReturnsAsync("/path"); _files.Setup(x => x.ListFiles(It.IsAny(), System.IO.SearchOption.TopDirectoryOnly)) .ReturnsAsync(new[] { "/path/font.ttf", "/path/font.TTF", "/path/toto.ttf" }); Font font = await _transcoder.GetFont(episode, "toto"); Assert.NotNull(font); Assert.Equal("toto.ttf", font.File); Assert.Equal("toto", font.Slug); Assert.Equal("ttf", font.Format); Assert.Equal("/path/toto.ttf", font.Path); } [Fact] public async Task GetFontNoExtensionTest() { Episode episode = TestSample.Get(); _files.Setup(x => x.GetExtraDirectory(It.IsAny())) .ReturnsAsync("/path"); _files.Setup(x => x.ListFiles(It.IsAny(), System.IO.SearchOption.TopDirectoryOnly)) .ReturnsAsync(new[] { "/path/font", "/path/toto.ttf" }); Font font = await _transcoder.GetFont(episode, "font"); Assert.NotNull(font); Assert.Equal("font", font.File); Assert.Equal("font", font.Slug); Assert.Equal("", font.Format); Assert.Equal("/path/font", font.Path); } } }