public void Should_throw_When_css_syntax_error() { var mockFileReader = CreateMockFileReader(GetThemeContent(KnownColor.Control, Color.Red) + "}"); var mockCssUrlResolver = Substitute.For <IThemeCssUrlResolver>(); var loader = new ThemeLoader(mockCssUrlResolver, mockFileReader); loader.Invoking(l => LoadTheme(l)) .Should().Throw <ThemeException>() .Which.Message.Should().Contain("Error parsing CSS"); }
public void Should_throw_When_unknown_color_name() { var mockFileReader = CreateMockFileReader(GetThemeContent("InvalidColorName", Color.Red)); var mockCssUrlResolver = Substitute.For <IThemeCssUrlResolver>(); var loader = new ThemeLoader(mockCssUrlResolver, mockFileReader); loader.Invoking(l => LoadTheme(l)) .Should().Throw <ThemeException>() .Which.Message.Should().Contain("InvalidColorName"); }
public void Should_throw_When_cyclic_css_imports() { var pathProvider = CreateMockPathProvider(); var resolver = new ThemeCssUrlResolver(pathProvider); string themePath = Path.Combine(pathProvider.AppThemesDirectory, "theme.css"); string baseThemePath = Path.Combine(pathProvider.AppThemesDirectory, "base.css"); var mockFileReader = CreateMockFileReader(new Dictionary <string, string> { [baseThemePath] = "@import url(\"theme.css\");", [themePath] = "@import url(\"base.css\");" }); var loader = new ThemeLoader(resolver, mockFileReader); loader.Invoking(_ => _.LoadTheme( themePath, new ThemeId("theme", isBuiltin: true), allowedClasses: ThemeVariations.None)) .Should().Throw <ThemeException>() .Which.Message.Should().Contain("Cycling CSS import"); }