jekyll/test/test_sass.rb

94 lines
2.2 KiB
Ruby

require 'helper'
class TestSass < Test::Unit::TestCase
def site_configuration(overrides = {})
Jekyll::Configuration::DEFAULTS.deep_merge(overrides).deep_merge({
"source" => source_dir,
"destination" => dest_dir
})
end
def converter(overrides = {})
Jekyll::Sass.new(site_configuration({"sass" => overrides}))
end
def sass_content
<<-SASS
$font-stack: Helvetica, sans-serif
body
font-family: $font-stack
font-color: fuschia
SASS
end
def scss_content
<<-SCSS
$font-stack: Helvetica, sans-serif;
body {
font-family: $font-stack;
font-color: fuschia;
}
SCSS
end
def css_output
<<-CSS
body {\n font-family: Helvetica, sans-serif;\n font-color: fuschia; }
CSS
end
context "matching file extensions" do
should "match .scss files" do
assert converter.matches(".scss")
end
should "match .sass files" do
assert converter.matches(".sass")
end
end
context "determining the output file extension" do
should "output .css file extension" do
assert_equal ".css", converter.output_ext(".sass")
end
end
context "when building configurations" do
should "not allow caching" do
assert_equal false, converter.sass_configs[:cache]
end
should "set the load paths to the _sass dir relative to site source" do
assert_equal [source_dir("_sass")], converter.sass_configs[:load_paths]
end
should "allow the user to specify a different sass dir" do
assert_equal [source_dir("_scss")], converter({"sass_dir" => "_scss"}).sass_configs[:load_paths]
end
should "set syntax :scss when SCSS content" do
assert_equal :scss, converter.sass_configs(scss_content)[:syntax]
end
should "set syntax :sass when Sass content" do
assert_equal :sass, converter.sass_configs(sass_content)[:syntax]
end
should "default to :sass syntax when content is empty" do
assert_equal :sass, converter.sass_configs[:syntax]
end
end
context "converting sass" do
should "produce CSS" do
assert_equal css_output, converter.convert(sass_content)
end
end
context "converting SCSS" do
should "produce CSS" do
assert_equal css_output, converter.convert(scss_content)
end
end
end