Files
nairobi/spec/shared/models/document_validations.rb
Javi Martín d14f6691dc Return document max file size in megabytes
The same way it's done for images.

We were converting the number of megabytes to bytes and then converting
it to megabytes again. Instead, we can leave it as it is and only
convert it to bytes when necessary (only one place).
2021-09-11 17:05:00 +02:00

61 lines
1.7 KiB
Ruby

shared_examples "document validations" do |documentable_factory|
include DocumentablesHelper
let!(:document) { build(:document, documentable_factory.to_sym) }
let!(:maxfilesize) { document.documentable.class.max_file_size }
let!(:acceptedcontenttypes) { accepted_content_types(document.documentable.class) }
it "is valid" do
expect(document).to be_valid
end
it "is not valid without a title" do
document.title = nil
expect(document).not_to be_valid
end
it "is not valid without an attachment" do
document.attachment = nil
expect(document).not_to be_valid
end
it "is valid for all accepted content types" do
acceptedcontenttypes.each do |content_type|
extension = content_type.split("/").last
document.attachment = File.new("spec/fixtures/files/empty.#{extension}")
expect(document).to be_valid
end
end
it "is not valid for attachments larger than documentable max_file_size definition" do
allow(document).to receive(:attachment_file_size).and_return(maxfilesize.megabytes + 1.byte)
max_size_error_message = "must be in between 0 Bytes and #{maxfilesize} MB"
expect(document).not_to be_valid
expect(document.errors[:attachment]).to include max_size_error_message
end
it "is not valid without a user_id" do
document.user_id = nil
expect(document).not_to be_valid
end
it "is not valid without a documentable_id" do
document.save!
document.documentable_id = nil
expect(document).not_to be_valid
end
it "is not valid without a documentable_type" do
document.save!
document.documentable_type = nil
expect(document).not_to be_valid
end
end