mirror of https://github.com/docusealco/docuseal
parent
87265e2f22
commit
2dca7d8a8e
@ -0,0 +1,37 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module RequestHelper
|
||||||
|
module_function
|
||||||
|
|
||||||
|
def wait_for_fetch
|
||||||
|
page.execute_script(
|
||||||
|
<<~JS
|
||||||
|
if (!window.fetchInitialized) {
|
||||||
|
window.pendingFetchCount = 0;
|
||||||
|
|
||||||
|
const originalFetch = window.fetch;
|
||||||
|
|
||||||
|
window.fetch = function(...args) {
|
||||||
|
window.pendingFetchCount++;
|
||||||
|
|
||||||
|
return originalFetch.apply(this, args).finally(() => {
|
||||||
|
window.pendingFetchCount--;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
window.fetchInitialized = true;
|
||||||
|
}
|
||||||
|
JS
|
||||||
|
)
|
||||||
|
|
||||||
|
yield
|
||||||
|
|
||||||
|
Timeout.timeout(Capybara.default_max_wait_time) do
|
||||||
|
loop do
|
||||||
|
break if page.evaluate_script('window.pendingFetchCount') == 0
|
||||||
|
|
||||||
|
sleep 0.1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
@ -0,0 +1,34 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
RSpec.describe 'Template Builder' do
|
||||||
|
let(:account) { create(:account) }
|
||||||
|
let(:author) { create(:user, account:) }
|
||||||
|
let(:template) { create(:template, account:, author:, attachment_count: 3, except_field_types: %w[phone payment]) }
|
||||||
|
|
||||||
|
before do
|
||||||
|
sign_in(author)
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when manage template documents' do
|
||||||
|
before do
|
||||||
|
visit edit_template_path(template)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'replaces the document' do
|
||||||
|
doc = find("div[id='documents_container'] div[data-document-uuid='#{template.schema[1]['attachment_uuid']}'")
|
||||||
|
doc.click
|
||||||
|
|
||||||
|
expect do
|
||||||
|
wait_for_fetch do
|
||||||
|
doc.find('.replace-document-button').click
|
||||||
|
doc.find('.replace-document-button input[type="file"]', visible: false)
|
||||||
|
.attach_file(Rails.root.join('spec/fixtures/sample-image.png'))
|
||||||
|
end
|
||||||
|
end.to change { template.documents.count }.by(1)
|
||||||
|
|
||||||
|
expect(template.reload['schema'][1]['name']).to eq('sample-image')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
Loading…
Reference in new issue