Files
nairobi/spec/shared/models/document_validations.rb
Javi Martín 95a90b1895 Simplify method to calculate document max size
Since we're only doing the convertion from bytes to megabytes in one
place, IMHO adding an extra method makes the code harder to read.

This way we don't have do include the DocumentsHelper in the specs
anymore, reducing the risk of possible method naming collisions.
2020-04-16 12:08:09 +02:00

62 lines
1.7 KiB
Ruby

shared_examples "document validations" do |documentable_factory|
include DocumentablesHelper
let!(:document) { build(:document, documentable_factory.to_sym) }
let!(:documentable) { document.documentable }
let!(:maxfilesize) { max_file_size(document.documentable.class) }
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