jazzarati/csv_piper

View on GitHub
spec/support/csv_import_test_utils.rb

Summary

Maintainability
A
0 mins
Test Coverage
module CsvImportTestUtils
  module PreProcessors
    class UpCase
      def process(source, errors)
        transformed = source.each_with_object({}) { |(key, value), memo| memo[key] = value.upcase }
        [transformed, errors]
      end
    end
  end

  module Processors
    class PassThrough
      def process(source, transformed, errors)
        [transformed.merge(source), errors]
      end
    end

    class DownCase
      def process(_source, transformed, errors)
        new_transformed = transformed.each_with_object({}) { |(key, value), memo| memo[key] = value.downcase }
        [new_transformed, errors]
      end
    end
  end

  module FlexiProcessors # Handle both processors and pre-processors
    class SkipRows
      def initialize(rows)
        @rows = rows
      end

      def process(*args)
        return nil if @rows.include? args[-1].row_index
        args[-2..2]
      end
    end

    class Error
      def initialize(error_msg)
        @error_msg = error_msg
      end

      def process(*args)
        args[-1].add(:phony_error, @error_msg)
        args[-2..2]
      end
    end
  end
end