PageRenderTime 60ms CodeModel.GetById 0ms RepoModel.GetById 0ms app.codeStats 0ms

/UnitTests/GitUI.Tests/Theming/CssUrlResolverTests.cs

https://github.com/gitextensions/gitextensions
C# | 48 lines | 41 code | 7 blank | 0 comment | 0 complexity | d32465b9e352dd992ed4dd78419d6712 MD5 | raw file
Possible License(s): GPL-3.0
  1. using System.IO;
  2. using FluentAssertions;
  3. using GitExtUtils.GitUI.Theming;
  4. using GitUI.Theming;
  5. using NSubstitute;
  6. using NUnit.Framework;
  7. namespace GitUITests.Theming
  8. {
  9. [TestFixture]
  10. public class CssUrlResolverTests
  11. {
  12. private const string PreinstalledThemesMockPath = "pre-installed\\themes";
  13. private const string UserDefinedThemesMockPath = "app-data\\themes";
  14. [Test]
  15. public void Should_resolve_to_preinstalled_themes_directory_by_default()
  16. {
  17. ThemeCssUrlResolver resolver = new(CreateMockThemePathProvider());
  18. var resolvedPath = resolver.ResolveCssUrl("dark.css");
  19. resolvedPath.Should().Be(Path.Combine(PreinstalledThemesMockPath, "dark.css"));
  20. }
  21. [Test]
  22. public void Should_resolve_to_user_defined_themes_directory_When_url_starts_with_macro()
  23. {
  24. ThemeCssUrlResolver resolver = new(CreateMockThemePathProvider());
  25. var resolvedPath = resolver.ResolveCssUrl("{UserAppData}/dark.css");
  26. resolvedPath.Should().Be(Path.Combine(UserDefinedThemesMockPath, "dark.css"));
  27. }
  28. private static IThemePathProvider CreateMockThemePathProvider()
  29. {
  30. var pathProvider = Substitute.For<IThemePathProvider>();
  31. pathProvider.ThemeExtension.Returns(".css");
  32. pathProvider.GetThemePath(Arg.Any<ThemeId>()).Returns(callInfo =>
  33. Path.Combine(
  34. callInfo.Arg<ThemeId>().IsBuiltin
  35. ? PreinstalledThemesMockPath
  36. : UserDefinedThemesMockPath,
  37. callInfo.Arg<ThemeId>().Name + ".css"));
  38. return pathProvider;
  39. }
  40. }
  41. }