0

Im testing a rails application that has an import method on its model,

def self.import_from_file(file, options = {})
allowed_attributes = ["id","filter_name","caller_phonenumber_prefix","caller_phonenumber_prefix","caller_carrier_id","caller_circle_number","priority","dial_routing_action_id"]
case File.extname(file.original_filename)

when ".csv"


  header=""
  CSV.foreach(file.tempfile.to_path) do |row|
    if header.blank?
      # first line copy to header variable
      header = row
      next
    end
    hashed_row = Hash[[header, row].transpose]
    logger.debug("hashed_row: #{hashed_row.inspect}")

    target_row = find_by_id(hashed_row["id"]) || new
    target_row.attributes = hashed_row.select { |k,v| allowed_attributes.include? k }
    target_row.save!
  end


when ".xls"
  spreadsheet = Spreadsheet.open(file.tempfile)
  last_row_index = spreadsheet.worksheet(0).last_row_index

  header = spreadsheet.worksheet(0).row(0)
  for index in 1..last_row_index # 0 is header
    hashed_row = Hash[[header, spreadsheet.worksheet(0).row(index)].transpose]
    logger.debug("hashed_row: #{hashed_row.inspect}")

    target_row = find_by_id(hashed_row["id"]) || new
    target_row.attributes = hashed_row.select { |k,v| allowed_attributes.include? k }
    target_row.save!
  end

Im at a lost on how to proceed, how can i create a test that determines if the file is uploaded and it successfully add in the database.

Rain
  • 1

0 Answers0