# frozen_string_literal: true

require "global_path"

class GlobalPathInstance
  extend GlobalPath
end

RSpec.describe GlobalPath do
  describe ".cdn_relative_path" do
    def cdn_relative_path(p)
      GlobalPathInstance.cdn_relative_path(p)
    end

    it "just returns path for no cdn" do
      expect(cdn_relative_path("/test")).to eq("/test")
    end

    it "returns path when a cdn is defined with a path" do
      GlobalSetting.expects(:cdn_url).returns("//something.com/foo")
      expect(cdn_relative_path("/test")).to eq("/foo/test")
    end

    it "returns path when a cdn is defined with a path" do
      GlobalSetting.expects(:cdn_url).returns("https://something.com:221/foo")
      expect(cdn_relative_path("/test")).to eq("/foo/test")
    end
  end

  describe ".upload_cdn_path" do
    it "generates correctly when S3 bucket has a folder" do
      global_setting :s3_access_key_id, "s3_access_key_id"
      global_setting :s3_secret_access_key, "s3_secret_access_key"
      global_setting :s3_bucket, "file-uploads/folder"
      global_setting :s3_region, "us-west-2"
      global_setting :s3_cdn_url, "https://cdn-aws.com/folder"

      expect(
        GlobalPathInstance.upload_cdn_path(
          "#{Discourse.store.absolute_base_url}/folder/upload.jpg",
        ),
      ).to eq("https://cdn-aws.com/folder/upload.jpg")
    end
  end
end