# frozen_string_literal: true

require_relative 'test_helper'
require 'review/makerhelper'
require 'tmpdir'
require 'fileutils'

class MakerHelperTest < Test::Unit::TestCase
  include ReVIEW

  def setup
    @tmpdir1 = Dir.mktmpdir
    @tmpdir2 = Dir.mktmpdir
  end

  def teardown
    FileUtils.rm_rf(@tmpdir1)
    FileUtils.rm_rf(@tmpdir2)
  end

  def test_copy_images_to_dir
    types = %w[png gif jpg jpeg svg pdf eps]
    types.each { |type| touch_file(File.join(@tmpdir1, "foo.#{type}")) }
    FileUtils.mkdir(File.join(@tmpdir1, 'subdir'))
    touch_file(File.join(@tmpdir1, 'subdir/foo.png'))

    image_files = MakerHelper.copy_images_to_dir(@tmpdir1, @tmpdir2)

    types.each do |type|
      assert File.exist?(File.join(@tmpdir2, "foo.#{type}")), "Copying #{type} file failed"
      assert image_files.include?(File.join(@tmpdir1, "foo.#{type}"))
    end
    assert File.exist?(File.join(@tmpdir2, 'subdir/foo.png')), 'Copying a image file in a subdirectory'
    assert image_files.include?(File.join(@tmpdir1, 'subdir/foo.png'))
  end

  def test_copy_images_to_dir_with_exts
    types = %w[png gif jpg jpeg svg pdf eps]
    types4epub = %w[png gif jpg jpeg svg]
    types.each { |type| touch_file(File.join(@tmpdir1, "foo.#{type}")) }
    image_files = MakerHelper.copy_images_to_dir(@tmpdir1, @tmpdir2, exts: types4epub)

    types4epub.each { |type| assert image_files.include?(File.join(@tmpdir1, "foo.#{type}")), "foo.#{type} is not included" }
    (types - types4epub).each { |type| assert !image_files.include?(File.join(@tmpdir1, "foo.#{type}")), "foo.#{type} is included" }
  end
end
