shard-ameba/spec/ameba/base_spec.cr
Sijawusz Pur Rahnama 881209d54e
Merge pull request #412 from crystal-ameba/group-documentation-rules
Move documentation-related rules into its own group
2023-11-09 06:19:36 +01:00

92 lines
2.4 KiB
Crystal

require "../spec_helper"
module Ameba::Rule
describe Base do
context ".rules" do
it "returns a list of all rules" do
rules = Rule.rules
rules.should_not be_nil
rules.should contain DummyRule
end
it "contains rules across all the available groups" do
Rule.rules.map(&.group_name).uniq!.reject!(&.empty?).sort.should eq %w(
Ameba
Documentation
Layout
Lint
Metrics
Naming
Performance
Style
)
end
end
context "properties" do
subject = DummyRule.new
it "is enabled by default" do
subject.enabled?.should be_true
end
it "has a description property" do
subject.description.should_not be_nil
end
it "has a dummy? property" do
subject.dummy?.should be_true
end
it "has excluded property" do
subject.excluded.should be_nil
end
end
describe "#excluded?" do
it "returns false if a rule does no have a list of excluded source" do
DummyRule.new.excluded?(Source.new "", "source.cr").should_not be_true
end
it "returns false if source is not excluded from this rule" do
rule = DummyRule.new
rule.excluded = %w(some_source.cr)
rule.excluded?(Source.new "", "another_source.cr").should_not be_true
end
it "returns true if source is excluded from this rule" do
rule = DummyRule.new
rule.excluded = %w(source.cr)
rule.excluded?(Source.new "", "source.cr").should be_true
end
it "returns true if source matches the wildcard" do
rule = DummyRule.new
rule.excluded = %w(**/*.cr)
rule.excluded?(Source.new "", __FILE__).should be_true
end
it "returns false if source does not match the wildcard" do
rule = DummyRule.new
rule.excluded = %w(*_spec.cr)
rule.excluded?(Source.new "", "source.cr").should be_false
end
end
describe ".parsed_doc" do
it "returns the parsed rule doc" do
DummyRule.parsed_doc.should eq "Dummy Rule which does nothing."
end
end
describe "#==" do
it "returns true if rule has the same name" do
DummyRule.new.should eq(DummyRule.new)
end
it "returns false if rule has a different name" do
DummyRule.new.should_not eq(ScopeRule.new)
end
end
end
end