# frozen_string_literal: true

require "spec_helper"

module Doorkeeper::OAuth::Authorization
  describe URIBuilder do
    subject { URIBuilder }

    describe :uri_with_query do
      it "returns the uri with query" do
        uri = subject.uri_with_query "http://example.com/", parameter: "value"
        expect(uri).to eq("http://example.com/?parameter=value")
      end

      it "rejects nil values" do
        uri = subject.uri_with_query "http://example.com/", parameter: ""
        expect(uri).to eq("http://example.com/?")
      end

      it "preserves original query parameters" do
        uri = subject.uri_with_query "http://example.com/?query1=value", parameter: "value"
        expect(uri).to match(/query1=value/)
        expect(uri).to match(/parameter=value/)
      end
    end

    describe :uri_with_fragment do
      it "returns uri with parameters as fragments" do
        uri = subject.uri_with_fragment "http://example.com/", parameter: "value"
        expect(uri).to eq("http://example.com/#parameter=value")
      end

      it "preserves original query parameters" do
        uri = subject.uri_with_fragment "http://example.com/?query1=value1", parameter: "value"
        expect(uri).to eq("http://example.com/?query1=value1#parameter=value")
      end
    end
  end
end
