Move tests related with attached documents from documentable shared specs to nested documentable file
Note that we moved some system tests to component tests, since they don't involve user interaction and can be fully covered at the component level.
This commit is contained in:
@@ -1,74 +0,0 @@
|
||||
shared_examples "documentable" do |documentable_factory_name, documentable_path, documentable_path_arguments|
|
||||
let(:user) { create(:user) }
|
||||
let(:arguments) { {} }
|
||||
let(:documentable) { create(documentable_factory_name, author: user) }
|
||||
let!(:document) { create(:document, documentable: documentable, user: documentable.author) }
|
||||
|
||||
before do
|
||||
documentable_path_arguments.each do |argument_name, path_to_value|
|
||||
arguments.merge!("#{argument_name}": documentable.send(path_to_value))
|
||||
end
|
||||
end
|
||||
|
||||
context "Show documents" do
|
||||
describe "Destroy action" do
|
||||
scenario "Should not be able when no user logged in" do
|
||||
visit send(documentable_path, arguments)
|
||||
|
||||
expect(page).not_to have_button "Delete document"
|
||||
end
|
||||
|
||||
scenario "Should be able when documentable author is logged in" do
|
||||
login_as documentable.author
|
||||
visit send(documentable_path, arguments)
|
||||
|
||||
expect(page).to have_button "Delete document"
|
||||
end
|
||||
|
||||
scenario "Administrators cannot destroy documentables they have not authored", :admin do
|
||||
visit send(documentable_path, arguments)
|
||||
|
||||
expect(page).not_to have_button "Delete document"
|
||||
end
|
||||
|
||||
scenario "Users cannot destroy documentables they have not authored" do
|
||||
login_as(create(:user))
|
||||
visit send(documentable_path, arguments)
|
||||
|
||||
expect(page).not_to have_button "Delete document"
|
||||
end
|
||||
end
|
||||
|
||||
describe "When allow attached documents setting is disabled" do
|
||||
before do
|
||||
Setting["feature.allow_attached_documents"] = false
|
||||
end
|
||||
|
||||
scenario "Documents list should not be available" do
|
||||
login_as(create(:user))
|
||||
visit send(documentable_path, arguments)
|
||||
|
||||
expect(page).not_to have_css("#documents")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context "Destroy" do
|
||||
scenario "Should show success notice after successful document upload" do
|
||||
login_as documentable.author
|
||||
|
||||
visit send(documentable_path, arguments)
|
||||
|
||||
within "#document_#{document.id}" do
|
||||
accept_confirm { click_button "Delete document" }
|
||||
end
|
||||
|
||||
expect(page).to have_content "Document was deleted successfully."
|
||||
expect(page).not_to have_content "Documents (0)"
|
||||
|
||||
within "##{ActionView::RecordIdentifier.dom_id(documentable)}" do
|
||||
expect(page).to have_css "h1", text: documentable.title
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user