require File.join(File.dirname(__FILE__), './test_helper')

describe 'tailoring file' do
  describe 'create' do
    before do
      @cmd = %w(tailoring-file create)
    end

    it 'should print error on missing --scap-file' do
      params = ['--name=test']

      expected_result = CommandExpectation.new
      expected_result.expected_err =
        "Failed to create Tailoring file:\n  Missing arguments for '--scap-file'.\n"
      expected_result.expected_exit_code = HammerCLI::EX_USAGE

      api_expects_no_call
      result = run_cmd(@cmd + params)
      assert_cmd(expected_result, result)
    end

    it "should detect original name from uploaded scap file" do
      file_path = File.join(fixtures_path, 'tailoring.xml')
      params = ["--name=test", "--scap-file=#{file_path}"]

      api_expects(:tailoring_files, :create, 'Create Tailoring file').with_params({
        'tailoring_file' => { 'name' => 'test', 'original_filename' => 'tailoring.xml', 'scap_file' => File.read(file_path) }
      })

      result = run_cmd(@cmd + params)
      assert_cmd(success_result("Tailoring file successfully created\n"), result)
    end
  end

  describe 'download' do
    before do
      @cmd = %w(tailoring-file download)
    end

    it "should require --path for download" do
      params = ["--id=42"]

      expected_result = CommandExpectation.new
      expected_result.expected_err =
        ['Could not download the Tailoring file:',
         '  Error: Option --path is required.',
         '  ',
         "  See: 'hammer tailoring-file download --help'.",
         ''].join("\n")

      expected_result.expected_exit_code = HammerCLI::EX_USAGE

      api_expects_no_call
      result = run_cmd(@cmd + params)
      assert_cmd(expected_result, result)
    end
  end
end