We were testing the URL of the image changes to `missing.png`, but actually that's confusing because the image record is now invalid and so its changes can't be saved. That means that, when rendered in the browser, the image won't render the `missing.png` image but will try to render the destroyed one. If we want to render the `missing.png` image when the attachment has been destroyed, we need to remove the attachment presence validation or change the `url` method so it detects when an attachment is missing.
62 lines
1.5 KiB
Ruby
62 lines
1.5 KiB
Ruby
shared_examples "acts as imageable" do |imageable_factory|
|
|
let!(:image) { build(:image, imageable_factory.to_sym) }
|
|
|
|
it "is valid" do
|
|
expect(image).to be_valid
|
|
end
|
|
|
|
describe "file extension" do
|
|
it "is not valid with '.png' extension" do
|
|
image.attachment = File.new("spec/fixtures/files/clippy.png")
|
|
|
|
expect(image).not_to be_valid
|
|
expect(image.errors[:attachment].size).to eq(1)
|
|
end
|
|
|
|
it "is not valid with '.gif' extension" do
|
|
image.attachment = File.new("spec/fixtures/files/clippy.gif")
|
|
|
|
expect(image).not_to be_valid
|
|
expect(image.errors[:attachment].size).to eq(1)
|
|
end
|
|
|
|
it "is valid with '.jpg' extension" do
|
|
image.attachment = File.new("spec/fixtures/files/clippy.jpg")
|
|
|
|
expect(image).to be_valid
|
|
end
|
|
end
|
|
|
|
describe "image dimmessions" do
|
|
it "is valid when image dimmessions are 475X475 at least" do
|
|
expect(image).to be_valid
|
|
end
|
|
|
|
it "is not valid when image dimmensions are smaller than 475X475" do
|
|
image.attachment = File.new("spec/fixtures/files/logo_header.jpg")
|
|
|
|
expect(image).not_to be_valid
|
|
end
|
|
end
|
|
|
|
describe "title" do
|
|
it "is not valid when correct image attached but no image title provided" do
|
|
image.title = ""
|
|
|
|
expect(image).not_to be_valid
|
|
end
|
|
|
|
it "is not valid when image title is too short" do
|
|
image.title = "a" * 3
|
|
|
|
expect(image).not_to be_valid
|
|
end
|
|
|
|
it "is not valid when image title is too long" do
|
|
image.title = "a" * 81
|
|
|
|
expect(image).not_to be_valid
|
|
end
|
|
end
|
|
end
|