demarches-normaliennes/spec/components/attachment/pending_poll_component_spec.rb

77 lines
2 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
require "rails_helper"
RSpec.describe Attachment::PendingPollComponent, type: :component do
let(:procedure) { create(:procedure, :published, types_de_champ_public:) }
let(:types_de_champ_public) { [{ type: :titre_identite }] }
let(:dossier) { create(:dossier, :with_populated_champs, procedure:) }
let(:champ) { dossier.champs.first }
let(:attachment) { champ.piece_justificative_file.attachments.first }
let(:component) { described_class.new(poll_url: "poll-here", attachment:) }
subject { render_inline(component).to_html }
context "when watermark is pending" do
it "renders turbo poll attributes" do
expect(subject).to have_selector("[data-controller='turbo-poll'][data-turbo-poll-url-value='poll-here']")
end
it "renders" do
expect(component).to be_render
end
it "does not render manual reload" do
expect(component).not_to have_content("Recharger")
end
context "when watermark is pending for a long time" do
before do
attachment.created_at = 5.minutes.ago
end
it "renders manual reload" do
expect(subject).to have_content("Recharger")
end
end
end
context "when waterkmark is done" do
before do
attachment.blob.touch(:watermarked_at)
end
it "does not render" do
expect(component).not_to be_render
end
end
context "when antivirus is in progress on pj" do
let(:types_de_champ_public) { [{ type: :piece_justificative }] }
before do
attachment.blob.virus_scan_result = ActiveStorage::VirusScanner::PENDING
end
it "does not render" do
expect(component).not_to be_render
end
end
context "when it's a dossier context" do
before do
attachment.created_at = 5.minutes.ago
end
let(:component) {
described_class.new(poll_url: "poll-here", attachment:, context: :dossier)
}
it "indicates it's not blocker to submit" do
expect(subject).to have_content("déposer votre dossier")
end
end
end