spec/cc/analyzer/formatters/html_formatter_spec.rb (61 lines of code) (raw):

require "spec_helper" module CC module Analyzer module Formatters RSpec.describe HTMLFormatter do # rubocop: disable Metrics/BlockLength let(:formatter) do HTMLFormatter.new( CC::Analyzer::Filesystem.new( CC::Analyzer::MountedPath.code.container_path, ), ) end describe "#finished" do let(:engine) { double(name: "cool_engine") } it "outputs an HTML report" do stdout, = capture_io do issue = sample_issue( "content" => { "body" => "### Sample Issue\n\n*Sample*", }, ) write_from_engine(formatter, engine, issue) formatter.finished end expect(stdout).to include("spec/fixtures/source2.rb") expect(stdout).to include("<h3>Sample Issue</h3>") expect(stdout).to include("cool_engine") end it "outputs an HTML report with other_locations" do stdout, = capture_io do issue = sample_issue( "other_locations" => [{ "path" => "lib/cc/analyzer/engine.rb", "positions" => { "begin" => { "line" => 1, "column" => 2, }, "end" => { "line" => 3, "column" => 4, }, }, }], ) write_from_engine(formatter, engine, issue) formatter.finished end expect(stdout).to include("<summary>Other instances</summary>") expect(stdout).to include("lib/cc/analyzer/engine.rb") end end def write_from_engine(formatter, engine, issue) formatter.engine_running(engine) do formatter.write(issue.to_json) end end end end end end