require 'rails_helper' module IntegrationPal describe WorkersController, :type => :controller do routes { IntegrationPal::Engine.routes } context 'unauthorized' do describe '#index' do let!(:worker) { create(:integration_pal_worker) } 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!(:worker) { create(:integration_pal_worker) } it 'returns workers as @workers' do get :index expect(assigns(:workers)).to match_array([worker]) expect(response).to render_template(:index) end end describe "POST #create" do context "with valid params" do let(:valid_attributes) { build(:integration_pal_worker).attributes } it "creates a new Worker" do expect { post :create, params: {worker: valid_attributes} }.to change(Worker, :count).by(1) end it "assigns a newly created worker as @worker" do post :create, params: {worker: valid_attributes} expect(assigns(:worker)).to be_a(Worker) expect(assigns(:worker)).to be_persisted end end context "with invalid params" do let(:invalid_attributes) { build(:integration_pal_worker, job_type: nil).attributes } it "doesn't create the worker" do expect { post :create, params: {worker: invalid_attributes} }.to change(Worker, :count).by(0) end end end describe "PUT #update" do let(:worker) { create(:integration_pal_worker) } context "with valid params" do let(:new_attributes) { {name: 'New Name'} } it "updates the requested worker" do put :update, params: {id: worker.to_param, worker: new_attributes} worker.reload skip("Add assertions for updated state") end it "assigns the requested worker as @worker" do put :update, params: {id: worker.to_param, worker: new_attributes} expect(assigns(:worker)).to eq(worker) end it "redirects to the worker" do put :update, params: {id: worker.to_param, worker: new_attributes} expect(response).to redirect_to(worker) end end context "with invalid params" do let(:invalid_attributes) { {job_type: ''} } it "assigns the worker as @worker" do put :update, params: {id: worker.to_param, worker: invalid_attributes} expect(assigns(:worker)).to eq(worker) end it "re-renders the 'edit' template" do put :update, params: {id: worker.to_param, worker: invalid_attributes} expect(response).to render_template("edit") end end end end end end