neocities/tests/workers/screenshot_worker_tests.rb

29 lines
1.1 KiB
Ruby

require_relative '../environment.rb'
describe ScreenshotWorker do
it 'saves a screenshot for a root html file' do
['index.html', 'derpie/derp/index.html'].each do |path|
uri = Addressable::URI.parse $config['screenshot_urls'].sample
site = Fabricate :site
base_host = "#{uri.scheme}://#{uri.host}"
if uri.port != 80 && uri.port != 443
base_host += ":#{uri.port}"
end
stub_request(:get, "#{base_host}/?url=#{site.uri}/#{path}&wait_time=#{ScreenshotWorker::PAGE_WAIT_TIME}").
with(basic_auth: [uri.user, uri.password]).
to_return(status: 200, headers: {}, body: File.read('tests/files/img/screenshot.png'))
ScreenshotWorker.new.perform site.username, path
Site::SCREENSHOT_RESOLUTIONS.each do |r|
_(File.exists?(File.join(Site::SCREENSHOTS_ROOT, Site.sharding_dir(site.username), site.username, "#{path}.#{r}.webp"))).must_equal true
_(site.screenshot_url(path, r)).must_equal(
File.join(Site::SCREENSHOTS_URL_ROOT, Site.sharding_dir(site.username), site.username, "#{path}.#{r}.webp")
)
end
end
end
end