# frozen_string_literal: true

require "discourse_sourcemapping_url_processor"

RSpec.describe DiscourseSourcemappingUrlProcessor do
  def process(input)
    env = Sprockets::Environment.new
    env.context_class.class_eval do
      def resolve(path, **kargs)
        "/assets/mapped.js.map"
      end

      def asset_path(path, options = {})
        "/assets/mapped-HEXGOESHERE.js.map"
      end
    end

    input = { environment: env, data: input, name: "mapped", filename: "mapped.js", metadata: {} }
    DiscourseSourcemappingUrlProcessor.call(input)[:data]
  end

  it "maintains relative paths" do
    output = process "var mapped;\n//# sourceMappingURL=mapped.js.map"
    expect(output).to eq("var mapped;\n//# sourceMappingURL=mapped-HEXGOESHERE.js.map\n//!\n")
  end

  it "uses default behaviour for non-adjacent relative paths" do
    output = process "var mapped;\n//# sourceMappingURL=/assets/mapped.js.map"
    expect(output).to eq(
      "var mapped;\n//# sourceMappingURL=/assets/mapped-HEXGOESHERE.js.map\n//!\n",
    )
  end
end