From 38bec798117446603b304c0d14ca39bae5ee8be8 Mon Sep 17 00:00:00 2001 From: Chad Pytel Date: Fri, 7 Apr 2017 12:50:43 -0400 Subject: [PATCH] Add specs for media attachment validations There are currently not specs for the two media validations that are performed by `PostStatusService`. This adds specs for the validations that ensure that you cannot attach more than four files, and that a status cannot have both image and video attachments. --- .../media_attachment_fabricator.rb | 2 +- spec/services/post_status_service_spec.rb | 41 +++++++++++++++++++ 2 files changed, 42 insertions(+), 1 deletion(-) diff --git a/spec/fabricators/media_attachment_fabricator.rb b/spec/fabricators/media_attachment_fabricator.rb index 59db2440d6..dc91d708f3 100644 --- a/spec/fabricators/media_attachment_fabricator.rb +++ b/spec/fabricators/media_attachment_fabricator.rb @@ -1,3 +1,3 @@ Fabricator(:media_attachment) do - + account end diff --git a/spec/services/post_status_service_spec.rb b/spec/services/post_status_service_spec.rb index 9ee4daf6f5..acb922d641 100644 --- a/spec/services/post_status_service_spec.rb +++ b/spec/services/post_status_service_spec.rb @@ -7,4 +7,45 @@ RSpec.describe PostStatusService do it 'creates a new response status' it 'processes mentions' it 'pings PuSH hubs' + + it 'does not allow attaching more than 4 files' do + account = Fabricate(:account) + + expect do + PostStatusService.new.call( + account, + "test status update", + nil, + media_ids: [ + Fabricate(:media_attachment, account: account), + Fabricate(:media_attachment, account: account), + Fabricate(:media_attachment, account: account), + Fabricate(:media_attachment, account: account), + Fabricate(:media_attachment, account: account), + ].map(&:id), + ) + end.to raise_error( + Mastodon::ValidationError, + 'Cannot attach more than 4 files', + ) + end + + it 'does not allow attaching both videos and images' do + account = Fabricate(:account) + + expect do + PostStatusService.new.call( + account, + "test status update", + nil, + media_ids: [ + Fabricate(:media_attachment, type: :video, account: account), + Fabricate(:media_attachment, type: :image, account: account), + ].map(&:id), + ) + end.to raise_error( + Mastodon::ValidationError, + 'Cannot attach a video to a toot that already contains images', + ) + end end