require 'rails_helper' module IntegrationPal describe JobsController, :type => :controller do routes { IntegrationPal::Engine.routes } context 'unauthorized' do describe '#index' do let!(:job) { create(:integration_pal_job) } it 'restricts access to authorized users' do get :index expect(response.status).to eq(401) end end end context 'authorized' do before(:each) do controller.class.skip_before_action :authenticate! rescue nil end describe '#index' do let!(:job) { create(:integration_pal_job) } it 'returns jobs as @jobs' do get :index expect(assigns(:jobs)).to match_array([job]) expect(response).to render_template(:index) end end describe "POST #create" do context "with valid params" do let(:valid_attributes) { build(:integration_pal_job).attributes } it "creates a new Job" do expect { post :create, params: {job: valid_attributes} }.to change(Job, :count).by(1) end it "assigns a newly created job as @job" do post :create, params: {job: valid_attributes} expect(assigns(:job)).to be_a(Job) expect(assigns(:job)).to be_persisted end end context "with invalid params" do let(:invalid_attributes) { build(:integration_pal_job, worker_id: nil).attributes } it "doesn't create the job" do expect { post :create, params: {job: invalid_attributes} }.to change(Job, :count).by(0) end end end describe "PUT #update" do let(:job) { create(:integration_pal_job) } context "with valid params" do let(:new_attributes) { {name: 'New Name'} } it "updates the requested job" do put :update, params: {id: job.to_param, job: new_attributes} job.reload skip("Add assertions for updated state") end it "assigns the requested job as @job" do put :update, params: {id: job.to_param, job: new_attributes} expect(assigns(:job)).to eq(job) end it "redirects to the job" do put :update, params: {id: job.to_param, job: new_attributes} expect(response).to redirect_to(job) end end context "with invalid params" do let(:invalid_attributes) { {worker_id: ''} } it "assigns the job as @job" do put :update, params: {id: job.to_param, job: invalid_attributes} expect(assigns(:job)).to eq(job) end it "re-renders the 'edit' template" do put :update, params: {id: job.to_param, job: invalid_attributes} expect(response).to render_template("edit") end end end end end end