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.