Sha256: fd41c715379b63ebefe42f1169454e507b3dff58398e17924ed9fecd3691bfe9

Contents?: true

Size: 1.82 KB

Versions: 1

Compression:

Stored size: 1.82 KB

Contents

require 'spec_helper'
require 'i18n/tasks/scanners/files/file_finder'

RSpec.describe 'FileFinder' do
  let(:test_files) {
    %w(a/a/a/a.txt a/a/a.txt a/a/b.txt a/b/a.txt a/b/b.txt a.txt)
  }
  around do |ex|
    TestCodebase.setup(test_files.inject({}) { |h, f| h[f] = ''; h })
    TestCodebase.in_test_app_dir { ex.call }
    TestCodebase.teardown
  end

  describe '#find_files' do
    it 'finds all the files in the current directory with default options' do
      finder = I18n::Tasks::Scanners::Files::FileFinder.new
      expect(finder.find_files).to eq test_files.map { |f| File.join('.', f) }
    end

    it 'finds only the files in paths' do
      finder = I18n::Tasks::Scanners::Files::FileFinder.new(paths: %w(a/a a/b/a.txt))
      expect(finder.find_files).to eq test_files.select { |f| f.start_with?('a/a/') || f == 'a/b/a.txt' }
    end

    it 'find only the files specified by the inclusion patterns' do
      finder = I18n::Tasks::Scanners::Files::FileFinder.new(
          paths: %w(a), include: %w(a/a/**))
      expect(finder.find_files).to eq test_files.select { |f| f.start_with?('a/a/') }
    end

    it 'finds only the files not specified by the exclusion patterns' do
      finder = I18n::Tasks::Scanners::Files::FileFinder.new(
          exclude: %w(./a/a/**))
      expect(finder.find_files).to eq test_files.select { |f| !f.start_with?('a/a/') }.map { |f| File.join('.', f) }
    end
  end

  describe '#traverse_files' do
    let(:finder) { I18n::Tasks::Scanners::Files::FileFinder.new }

    it 'yields all the files' do
      actual = []
      finder.traverse_files { |f| actual << f }
      expect(actual).to eq(test_files.map { |f| File.join('.', f) })
    end

    it 'returns the results from the block' do
      i = 0
      expect(finder.traverse_files { |_f| i += 1 }).to eq((1..test_files.length).to_a)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
i18n-tasks-0.9.0.rc1 spec/scanners/files/file_finder_spec.rb