shard-ameba/spec/ameba/formatter/json_formatter_spec.cr

100 lines
2.8 KiB
Crystal
Raw Normal View History

2018-05-11 18:09:15 +00:00
require "../../spec_helper"
module Ameba
def get_result(sources = [Source.new ""])
file = IO::Memory.new
formatter = Formatter::JSONFormatter.new file
formatter.started sources
sources.each { |source| formatter.source_finished source }
formatter.finished sources
JSON.parse file.to_s
end
describe Formatter::JSONFormatter do
context "metadata" do
it "shows ameba version" do
get_result["metadata"]["ameba_version"].should eq Ameba::VERSION
end
it "shows crystal version" do
get_result["metadata"]["crystal_version"].should eq Crystal::VERSION
end
end
context "sources" do
it "shows path to the source" do
result = get_result [Source.new "", "source.cr"]
result["sources"][0]["path"].should eq "source.cr"
2018-05-11 18:09:15 +00:00
end
it "shows rule name" do
s = Source.new ""
2018-06-10 21:15:12 +00:00
s.add_issue DummyRule.new, {1, 2}, "message1"
2018-05-11 18:09:15 +00:00
result = get_result [s]
result["sources"][0]["issues"][0]["rule_name"].should eq DummyRule.rule_name
2018-05-11 18:09:15 +00:00
end
2019-04-14 13:45:31 +00:00
it "shows severity" do
s = Source.new ""
s.add_issue DummyRule.new, {1, 2}, "message"
result = get_result [s]
result["sources"][0]["issues"][0]["severity"].should eq "Refactoring"
end
2018-05-11 18:09:15 +00:00
it "shows a message" do
s = Source.new ""
2018-06-10 21:15:12 +00:00
s.add_issue DummyRule.new, {1, 2}, "message"
2018-05-11 18:09:15 +00:00
result = get_result [s]
2018-06-10 21:15:12 +00:00
result["sources"][0]["issues"][0]["message"].should eq "message"
2018-05-11 18:09:15 +00:00
end
2018-06-10 21:15:12 +00:00
it "shows issue location" do
2018-05-11 18:09:15 +00:00
s = Source.new ""
2018-06-10 21:15:12 +00:00
s.add_issue DummyRule.new, {1, 2}, "message"
2018-05-11 18:09:15 +00:00
result = get_result [s]
2018-06-10 21:15:12 +00:00
location = result["sources"][0]["issues"][0]["location"]
2018-05-11 18:09:15 +00:00
location["line"].should eq 1
location["column"].should eq 2
end
2018-06-11 19:56:13 +00:00
it "shows issue end_location" do
s = Source.new ""
s.add_issue DummyRule.new,
2018-09-02 21:17:56 +00:00
Crystal::Location.new("path", 3, 3),
Crystal::Location.new("path", 5, 4),
"message"
2018-06-11 19:56:13 +00:00
result = get_result [s]
end_location = result["sources"][0]["issues"][0]["end_location"]
end_location["line"].should eq 5
end_location["column"].should eq 4
end
2018-05-11 18:09:15 +00:00
end
context "summary" do
it "shows a target sources count" do
result = get_result [Source.new(""), Source.new("")]
result["summary"]["target_sources_count"].should eq 2
end
2018-06-10 21:15:12 +00:00
it "shows issues count" do
2018-05-11 18:09:15 +00:00
s1 = Source.new ""
2018-06-10 21:15:12 +00:00
s1.add_issue DummyRule.new, {1, 2}, "message1"
s1.add_issue DummyRule.new, {1, 2}, "message2"
2018-05-11 18:09:15 +00:00
s2 = Source.new ""
2018-06-10 21:15:12 +00:00
s2.add_issue DummyRule.new, {1, 2}, "message3"
2018-05-11 18:09:15 +00:00
result = get_result [s1, s2]
2018-06-10 21:15:12 +00:00
result["summary"]["issues_count"].should eq 3
2018-05-11 18:09:15 +00:00
end
end
end
end