0
0
Fork 0
mirror of https://github.com/discourse/discourse.git synced 2026-08-14 13:58:53 +08:00
discourse/spec/system/page_objects/pages/csv_export_pm.rb
2026-06-03 17:57:59 +02:00

51 lines
1.2 KiB
Ruby
Vendored

# frozen_string_literal: true
module PageObjects
module Pages
class CSVExportPM < PageObjects::Pages::Base
def initialize
super
@downloaded_files = []
end
def download_and_extract
original_save_path = Capybara.save_path
Capybara.save_path = Downloads::FOLDER.join("_unused")
zip_path =
page.driver.with_playwright_page do |pw_page|
pw_page.expect_download { click_link ".zip" }.path
end
csv_path = unzip(zip_path).first
@downloaded_files << csv_path
CSV.read(csv_path)
ensure
Capybara.save_path = original_save_path
end
def clear_downloads
@downloaded_files.each { |file| FileUtils.rm_f(file) }
@downloaded_files = []
end
def has_download_link?
find(:link, ".zip").present?
end
private
def unzip(file)
paths = []
Zip::File.open(file) do |zip_file|
zip_file.each do |f|
f.extract(f.name, destination_directory: Downloads::FOLDER)
paths << File.join(Downloads::FOLDER, f.name)
end
end
paths
end
end
end
end