Initial commit
This commit is contained in:
85
spec/controllers/photos_controller_spec.rb
Normal file
85
spec/controllers/photos_controller_spec.rb
Normal file
@@ -0,0 +1,85 @@
|
||||
require "rails_helper"
|
||||
|
||||
RSpec.describe PhotosController, type: :controller do
|
||||
render_views
|
||||
|
||||
let(:current_user) { create(:user) }
|
||||
let(:project) { create(:project, account: current_user.primary_account) }
|
||||
let(:location_release) { create(:location_release, project: project) }
|
||||
|
||||
before do
|
||||
sign_in(current_user)
|
||||
end
|
||||
|
||||
shared_examples "a photoable releases controller" do
|
||||
describe "#edit" do
|
||||
it "responds successfully" do
|
||||
get :edit, params: { "#{subject.model_name.param_key}_id" => subject }
|
||||
|
||||
expect(response).to be_successful
|
||||
end
|
||||
end
|
||||
|
||||
describe "#update" do
|
||||
context "when releasable updated successfully" do
|
||||
it "responds with a redirect" do
|
||||
patch :update, params: { "#{subject.model_name.param_key}_id": subject, subject.model_name.param_key => release_params }
|
||||
|
||||
expect(response).to be_redirect
|
||||
expect(response).to redirect_to [project, subject.model_name.plural]
|
||||
expect(flash.notice).to eq(t("photos.update.notice"))
|
||||
end
|
||||
|
||||
it "enqueues tagging job" do
|
||||
expect {
|
||||
patch :update, params: { "#{subject.model_name.param_key}_id": subject, subject.model_name.param_key => {} }
|
||||
}.to have_enqueued_job(SetTagsForReleasableJob).with(subject.class.last)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context "when releasable NOT updated successfully" do
|
||||
before do
|
||||
allow_any_instance_of(subject.class).to receive(:update).and_return(false)
|
||||
end
|
||||
|
||||
it "renders edit with flash message" do
|
||||
patch :update, params: { "#{subject.model_name.param_key}_id": subject, subject.model_name.param_key => release_params }
|
||||
|
||||
expect(controller).to have_rendered(:edit)
|
||||
end
|
||||
|
||||
it "does not enqueue tagging job" do
|
||||
expect {
|
||||
patch :update, params: { "#{subject.model_name.param_key}_id": subject, subject.model_name.param_key => release_params }
|
||||
}.not_to have_enqueued_job(SetTagsForReleasableJob)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context "for talent releases" do
|
||||
subject { create(:talent_release, project: project) }
|
||||
|
||||
it_behaves_like "a photoable releases controller"
|
||||
end
|
||||
|
||||
context "for location releases" do
|
||||
subject { create(:location_release, project: project) }
|
||||
|
||||
it_behaves_like "a photoable releases controller"
|
||||
end
|
||||
|
||||
context "for material releases" do
|
||||
subject { create(:material_release, project: project) }
|
||||
|
||||
it_behaves_like "a photoable releases controller"
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def release_params
|
||||
files = 2.times.map { Rack::Test::UploadedFile.new(file_fixture("location_photo.png"), "image/png") }
|
||||
|
||||
{ photos: files }
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user