shard-ameba/spec/ameba/severity_spec.cr

108 lines
3.2 KiB
Crystal
Raw Normal View History

2019-04-13 18:16:59 +00:00
require "../spec_helper"
module Ameba
describe Severity do
2019-04-14 13:45:31 +00:00
describe "#symbol" do
it "returns the symbol for each severity in the enum" do
Severity.values.each do |severity|
severity.symbol.should_not be_nil
end
end
it "returns symbol for Error" do
Severity::Error.symbol.should eq 'E'
end
it "returns symbol for Warning" do
Severity::Warning.symbol.should eq 'W'
end
it "returns symbol for Refactoring" do
Severity::Refactoring.symbol.should eq 'R'
end
end
describe ".parse" do
2019-04-13 18:16:59 +00:00
it "creates error severity by name" do
Severity.parse("Error").should eq Severity::Error
2019-04-13 18:16:59 +00:00
end
it "creates warning severity by name" do
Severity.parse("Warning").should eq Severity::Warning
2019-04-13 18:16:59 +00:00
end
it "creates refactoring severity by name" do
Severity.parse("Refactoring").should eq Severity::Refactoring
2019-04-13 18:16:59 +00:00
end
it "raises when name is incorrect" do
expect_raises(Exception, "Incorrect severity name BadName. Try one of [Error, Warning, Refactoring]") do
Severity.parse("BadName")
2019-04-13 18:16:59 +00:00
end
end
end
end
struct SeverityConvertable
YAML.mapping(
2019-04-13 19:38:37 +00:00
severity: {type: Severity, converter: SeverityYamlConverter}
2019-04-13 18:16:59 +00:00
)
end
describe SeverityYamlConverter do
describe ".from_yaml" do
it "converts from yaml to Severity::Error" do
2019-04-13 19:38:37 +00:00
yaml = {severity: "error"}.to_yaml
2019-04-13 18:16:59 +00:00
converted = SeverityConvertable.from_yaml(yaml)
converted.severity.should eq Severity::Error
end
it "converts from yaml to Severity::Warning" do
2019-04-13 19:38:37 +00:00
yaml = {severity: "warning"}.to_yaml
2019-04-13 18:16:59 +00:00
converted = SeverityConvertable.from_yaml(yaml)
converted.severity.should eq Severity::Warning
end
it "converts from yaml to Severity::Refactoring" do
2019-04-13 19:38:37 +00:00
yaml = {severity: "refactoring"}.to_yaml
2019-04-13 18:16:59 +00:00
converted = SeverityConvertable.from_yaml(yaml)
converted.severity.should eq Severity::Refactoring
end
2019-04-13 19:38:37 +00:00
it "raises if severity is not a scalar" do
yaml = {severity: {refactoring: true}}.to_yaml
expect_raises(Exception, "Severity must be a scalar") do
SeverityConvertable.from_yaml(yaml)
end
end
it "raises if severity has a wrong type" do
yaml = {severity: [1, 2, 3]}.to_yaml
expect_raises(Exception, "Severity must be a scalar") do
SeverityConvertable.from_yaml(yaml)
end
end
2019-04-13 18:16:59 +00:00
end
describe ".to_yaml" do
it "converts Severity::Error to yaml" do
2019-04-13 19:38:37 +00:00
yaml = {severity: "error"}.to_yaml
2019-04-13 18:16:59 +00:00
converted = SeverityConvertable.from_yaml(yaml).to_yaml
converted.should eq "---\nseverity: Error\n"
end
it "converts Severity::Warning to yaml" do
2019-04-13 19:38:37 +00:00
yaml = {severity: "warning"}.to_yaml
2019-04-13 18:16:59 +00:00
converted = SeverityConvertable.from_yaml(yaml).to_yaml
converted.should eq "---\nseverity: Warning\n"
end
it "converts Severity::Refactoring to yaml" do
2019-04-13 19:38:37 +00:00
yaml = {severity: "refactoring"}.to_yaml
2019-04-13 18:16:59 +00:00
converted = SeverityConvertable.from_yaml(yaml).to_yaml
converted.should eq "---\nseverity: Refactoring\n"
end
end
end
end