Sha256: 75023999000b7aa8728722ec11ced3bf51987dca6a8b8f3ffe7d7a6e8de2bfc7

Contents?: true

Size: 1.12 KB

Versions: 12

Compression:

Stored size: 1.12 KB

Contents

module Marty
  module RSpec
    module DownloadHelper
      TIMEOUT = 10
      PATH    = Rails.root.join('spec/tmp/downloads')

      ACCEPTED_EXTS = ['.xlsx', '.csv']

      extend self

      def downloads
        Dir[PATH.join('*')]
      end

      def download
        downloads.first
      end

      def download_content
        wait_for_download
        # doesn't work for excel files...
        File.read(download)
      end

      def download_content_acceptable?
        wait_for_download
        downloads.each do |f|
          return false unless ACCEPTED_EXTS.include? File.extname(f)
        end
        true
      end

      def wait_for_download
        Timeout.timeout(TIMEOUT) do
          sleep 0.1 until downloaded?
        end
      end

      def downloaded?
        downloads.any? && !downloading?
      end

      def downloading?
        downloads.grep(/\.part$/).any? ||
          downloads.select { |f| File.size(f).zero? }.any?
      end

      def clear_downloads
        FileUtils.rm_f(downloads)
        Timeout.timeout(TIMEOUT) do
          sleep 0.1 until !downloads.any?
        end
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
marty-14.3.0 spec/support/download_helper.rb
marty-14.0.0 spec/support/download_helper.rb
marty-13.0.2 spec/support/download_helper.rb
marty-11.0.0 spec/support/download_helper.rb
marty-10.0.3 spec/support/download_helper.rb
marty-10.0.2 spec/support/download_helper.rb
marty-10.0.0 spec/support/download_helper.rb
marty-9.5.1 spec/support/download_helper.rb
marty-9.5.0 spec/support/download_helper.rb
marty-9.3.3 spec/support/download_helper.rb
marty-9.3.2 spec/support/download_helper.rb
marty-9.3.0 spec/support/download_helper.rb