# frozen_string_literal: true

require "rails_helper"

describe Onebox::Engine::GithubCommitOnebox do
  describe "regular commit url" do
    before do
      @link = "https://github.com/discourse/discourse/commit/803d023e2307309f8b776ab3b8b7e38ba91c0919"
      @uri = "https://api.github.com/repos/discourse/discourse/commits/803d023e2307309f8b776ab3b8b7e38ba91c0919"

      stub_request(:get, @uri).to_return(status: 200, body: onebox_response("githubcommit"))
    end

    include_context "engines"
    it_behaves_like "an engine"

    describe "#to_html" do
      it "includes owner" do
        expect(html).to include("discourse")
      end

      it "includes repository name" do
        expect(html).to include("discourse")
      end

      it "includes commit sha" do
        expect(html).to include("803d023e2307309f8b776ab3b8b7e38ba91c0919")
      end

      it "includes commit author gravatar" do
        expect(html).to include("2F7d3010c11d08cf990b7614d2c2ca9098.png")
      end

      it "includes commit message" do
        expect(html).to include("Fixed GitHub auth")
      end

      it "includes commit author" do
        expect(html).to include("SamSaffron")
      end

      it "includes commit time and date" do
        expect(html).to include("02:03AM - 02 Aug 13")
      end

      it "includes number of files changed" do
        expect(html).to include("1 file")
      end

      it "includes number of additions" do
        expect(html).to include("18 additions")
      end

      it "includes number of deletions" do
        expect(html).to include("2 deletions")
      end
    end
  end

  describe "PR with commit URL" do
    before do
      @link = "https://github.com/discourse/discourse/pull/4662/commit/803d023e2307309f8b776ab3b8b7e38ba91c0919"
      @uri = "https://api.github.com/repos/discourse/discourse/commit/803d023e2307309f8b776ab3b8b7e38ba91c0919"

      stub_request(:get, "https://api.github.com/repos/discourse/discourse/commits/803d023e2307309f8b776ab3b8b7e38ba91c0919")
        .to_return(status: 200, body: onebox_response("githubcommit"))
    end

    include_context "engines"
    # TODO: fix test to make sure it's not failing when matching object
    # it_behaves_like "an engine"

    describe "#to_html" do
      it "includes owner" do
        expect(html).to include("discourse")
      end

      it "includes repository name" do
        expect(html).to include("discourse")
      end

      it "includes commit sha" do
        expect(html).to include("803d023e2307309f8b776ab3b8b7e38ba91c0919")
      end

      it "includes commit author gravatar" do
        expect(html).to include("2F7d3010c11d08cf990b7614d2c2ca9098.png")
      end

      it "includes commit message" do
        expect(html).to include("Fixed GitHub auth")
      end

      it "includes commit author" do
        expect(html).to include("SamSaffron")
      end

      it "includes commit time and date" do
        expect(html).to include("02:03AM - 02 Aug 13")
      end

      it "includes number of files changed" do
        expect(html).to include("1 file")
      end

      it "includes number of additions" do
        expect(html).to include("18 additions")
      end

      it "includes number of deletions" do
        expect(html).to include("2 deletions")
      end
    end
  end
end