# frozen_string_literal: true

require 'spec_helper'

describe 'archive::parse_artifactory_url' do
  it { is_expected.not_to be_nil }
  it { is_expected.to run.with_params.and_raise_error(ArgumentError) }
  it { is_expected.to run.with_params('not_a_url').and_raise_error(ArgumentError) }

  context 'releases' do
    it do
      expect(subject).to run.with_params('https://repo.jfrog.org/artifactory/repo1-cache/maven-proxy/maven-proxy-webapp/0.2/maven-proxy-webapp-0.2.war').and_return(
        'base_url' => 'https://repo.jfrog.org/artifactory',
        'repository' => 'repo1-cache',
        'org_path' => 'maven-proxy',
        'module' => 'maven-proxy-webapp',
        'base_rev' => '0.2',
        'folder_iteg_rev' => nil,
        'file_iteg_rev' => nil,
        'classifier' => nil,
        'ext' => 'war'
      )
    end

    context 'with classifier' do
      it do
        expect(subject).to run.with_params('https://repo.jfrog.org/artifactory/repo1-cache/maven-proxy/maven-proxy-standalone/0.2/maven-proxy-standalone-0.2-app.jar').and_return(
          'base_url' => 'https://repo.jfrog.org/artifactory',
          'repository' => 'repo1-cache',
          'org_path' => 'maven-proxy',
          'module' => 'maven-proxy-standalone',
          'base_rev' => '0.2',
          'folder_iteg_rev' => nil,
          'file_iteg_rev' => nil,
          'classifier' => 'app',
          'ext' => 'jar'
        )
      end
    end
  end

  context 'SNAPSHOTs' do
    it do
      expect(subject).to run.with_params('https://repo.jfrog.org/artifactory/java.net-cache/com/sun/grizzly/grizzly-framework/2.0.0-SNAPSHOT/grizzly-framework-2.0.0-SNAPSHOT.jar').and_return(
        'base_url' => 'https://repo.jfrog.org/artifactory',
        'repository' => 'java.net-cache',
        'org_path' => 'com/sun/grizzly',
        'module' => 'grizzly-framework',
        'base_rev' => '2.0.0',
        'folder_iteg_rev' => 'SNAPSHOT',
        'file_iteg_rev' => 'SNAPSHOT',
        'classifier' => nil,
        'ext' => 'jar'
      )
    end

    context 'with classifiers' do
      it do
        expect(subject).to run.with_params('https://repo.jfrog.org/artifactory/java.net-cache/com/sun/grizzly/grizzly-framework/2.0.0-SNAPSHOT/grizzly-framework-2.0.0-SNAPSHOT-javadoc.jar').and_return(
          'base_url' => 'https://repo.jfrog.org/artifactory',
          'repository' => 'java.net-cache',
          'org_path' => 'com/sun/grizzly',
          'module' => 'grizzly-framework',
          'base_rev' => '2.0.0',
          'folder_iteg_rev' => 'SNAPSHOT',
          'file_iteg_rev' => 'SNAPSHOT',
          'classifier' => 'javadoc',
          'ext' => 'jar'
        )
      end

      it do
        expect(subject).to run.with_params('https://repo.jfrog.org/artifactory/java.net-cache/com/sun/grizzly/grizzly-framework/2.0.0-SNAPSHOT/grizzly-framework-2.0.0-SNAPSHOT-tests.jar').and_return(
          'base_url' => 'https://repo.jfrog.org/artifactory',
          'repository' => 'java.net-cache',
          'org_path' => 'com/sun/grizzly',
          'module' => 'grizzly-framework',
          'base_rev' => '2.0.0',
          'folder_iteg_rev' => 'SNAPSHOT',
          'file_iteg_rev' => 'SNAPSHOT',
          'classifier' => 'tests',
          'ext' => 'jar'
        )
      end
    end
  end
end
