Testing CSS Margin Rule Generation in Bourbon Framework
This test suite validates the margin mixin functionality in Bourbon, ensuring proper CSS margin rule generation for various input combinations. The tests verify the mixin’s ability to handle different margin configurations while maintaining CSS specification compliance.
Test Coverage Overview
Implementation Analysis
Technical Details
Best Practices Demonstrated
thoughtbot/bourbon
spec/bourbon/library/margin_spec.rb
require "spec_helper"
describe "margin" do
before(:all) do
ParserSupport.parse_file("library/margin")
end
context "called with one size" do
it "applies same width to all sides" do
rule = "margin: 1px"
expect(".margin-all").to have_rule(rule)
end
end
context "called with two sizes" do
it "applies to alternating sides" do
rule = "margin: 2px 3px"
expect(".margin-alternate").to have_rule(rule)
end
end
context "called with three sizes" do
it "applies second width to left and right" do
rule = "margin: 4px 5px 6px"
expect(".margin-implied-left").to have_rule(rule)
end
end
context "called with four sizes" do
it "applies different widths to all sides" do
rule = "margin: 7px 8px 9px 10px"
expect(".margin-explicit").to have_rule(rule)
end
end
context "called with null values" do
it "writes rules for other three" do
ruleset = "margin-top: 11px; " +
"margin-right: 12px; " +
"margin-left: 13px;"
bad_rule = "margin-bottom: null;"
expect(".margin-false-third").to have_ruleset(ruleset)
expect(".margin-false-third").to_not have_rule(bad_rule)
end
end
end