LocalizationManagerTests.cs 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. using System.Linq;
  2. using System.Threading.Tasks;
  3. using Emby.Server.Implementations.Localization;
  4. using MediaBrowser.Controller.Configuration;
  5. using MediaBrowser.Model.Configuration;
  6. using Microsoft.Extensions.Logging.Abstractions;
  7. using Moq;
  8. using Xunit;
  9. namespace Jellyfin.Server.Implementations.Tests.Localization
  10. {
  11. public class LocalizationManagerTests
  12. {
  13. private LocalizationManager _localizationManager = null!;
  14. public LocalizationManagerTests()
  15. {
  16. var config = new ServerConfiguration() { UICulture = "de-DE" };
  17. Setup(config);
  18. }
  19. [Fact]
  20. public void GetCountries_All_Success()
  21. {
  22. var countries = _localizationManager.GetCountries();
  23. var countryInfos = countries.ToList();
  24. Assert.Equal(139, countryInfos.Count);
  25. var germany = countryInfos.FirstOrDefault(x => x.Name == "DE");
  26. Assert.NotNull(germany);
  27. Assert.Equal("Germany", germany!.DisplayName);
  28. Assert.Equal("DEU", germany!.ThreeLetterISORegionName);
  29. Assert.Equal("DE", germany!.TwoLetterISORegionName);
  30. }
  31. [Fact]
  32. public async Task GetCultures_All_Success()
  33. {
  34. await _localizationManager.LoadAll();
  35. var cultures = _localizationManager.GetCultures().ToList();
  36. Assert.Equal(189, cultures.Count);
  37. var germany = cultures.FirstOrDefault(x => x.TwoLetterISOLanguageName == "de");
  38. Assert.NotNull(germany);
  39. Assert.Equal("ger", germany!.ThreeLetterISOLanguageName);
  40. Assert.Equal("German", germany!.DisplayName);
  41. Assert.Equal("German", germany!.Name);
  42. Assert.Contains("deu", germany!.ThreeLetterISOLanguageNames);
  43. Assert.Contains("ger", germany!.ThreeLetterISOLanguageNames);
  44. }
  45. [Theory]
  46. [InlineData("de")]
  47. [InlineData("ger")]
  48. [InlineData("german")]
  49. public async Task FindLanguage_Valid_Success(string identifier)
  50. {
  51. await _localizationManager.LoadAll();
  52. var germany = _localizationManager.FindLanguageInfo(identifier);
  53. Assert.NotNull(germany);
  54. Assert.Equal("ger", germany!.ThreeLetterISOLanguageName);
  55. Assert.Equal("German", germany!.DisplayName);
  56. Assert.Equal("German", germany!.Name);
  57. Assert.Contains("deu", germany!.ThreeLetterISOLanguageNames);
  58. Assert.Contains("ger", germany!.ThreeLetterISOLanguageNames);
  59. }
  60. [Fact]
  61. public async Task ParentalRatings_Default_Success()
  62. {
  63. await _localizationManager.LoadAll();
  64. var ratings = _localizationManager.GetParentalRatings().ToList();
  65. Assert.Equal(23, ratings.Count);
  66. var tvma = ratings.FirstOrDefault(x => x.Name == "TV-MA");
  67. Assert.NotNull(tvma);
  68. Assert.Equal(9, tvma!.Value);
  69. }
  70. [Fact]
  71. public async Task ParentalRatings_ConfiguredCountryCode_Success()
  72. {
  73. Setup(new ServerConfiguration()
  74. {
  75. MetadataCountryCode = "DE"
  76. });
  77. await _localizationManager.LoadAll();
  78. var ratings = _localizationManager.GetParentalRatings().ToList();
  79. Assert.Equal(10, ratings.Count);
  80. var fsk = ratings.FirstOrDefault(x => x.Name == "FSK-12");
  81. Assert.NotNull(fsk);
  82. Assert.Equal(7, fsk!.Value);
  83. }
  84. [Theory]
  85. [InlineData("CA-R", "CA", 10)]
  86. [InlineData("FSK-16", "DE", 8)]
  87. [InlineData("FSK-18", "DE", 9)]
  88. [InlineData("FSK-18", "US", 9)]
  89. [InlineData("TV-MA", "US", 9)]
  90. [InlineData("XXX", "asdf", 100)]
  91. [InlineData("Germany: FSK-18", "DE", 9)]
  92. public async Task GetRatingLevelFromString_Valid_Success(string value, string countryCode, int expectedLevel)
  93. {
  94. Setup(new ServerConfiguration()
  95. {
  96. MetadataCountryCode = countryCode
  97. });
  98. await _localizationManager.LoadAll();
  99. var level = _localizationManager.GetRatingLevel(value);
  100. Assert.NotNull(level);
  101. Assert.Equal(expectedLevel, level!);
  102. }
  103. [Fact]
  104. public async Task GetRatingLevelFromString_Unrated_Success()
  105. {
  106. await _localizationManager.LoadAll();
  107. Assert.Null(_localizationManager.GetRatingLevel("n/a"));
  108. }
  109. [Theory]
  110. [InlineData("Default", "Default")]
  111. [InlineData("HeaderLiveTV", "Live TV")]
  112. public void GetLocalizedString_Valid_Success(string key, string expected)
  113. {
  114. Setup(new ServerConfiguration()
  115. {
  116. UICulture = "en-US"
  117. });
  118. var translated = _localizationManager.GetLocalizedString(key);
  119. Assert.NotNull(translated);
  120. Assert.Equal(expected, translated);
  121. }
  122. [Fact]
  123. public void GetLocalizedString_Invalid_Success()
  124. {
  125. Setup(new ServerConfiguration()
  126. {
  127. UICulture = "en-US"
  128. });
  129. var key = "SuperInvalidTranslationKeyThatWillNeverBeAdded";
  130. var translated = _localizationManager.GetLocalizedString(key);
  131. Assert.NotNull(translated);
  132. Assert.Equal(key, translated);
  133. }
  134. private void Setup(ServerConfiguration config)
  135. {
  136. var mockConfiguration = new Mock<IServerConfigurationManager>();
  137. mockConfiguration.SetupGet(x => x.Configuration).Returns(config);
  138. _localizationManager = new LocalizationManager(mockConfiguration.Object, new NullLogger<LocalizationManager>());
  139. }
  140. }
  141. }