require 'spec_helper' describe CampaignsController do before (:each) do @user = FactoryGirl.create(:user) sign_in @user end let(:campaign){ attributes_for :campaign } let(:videolisting){ attributes_for :videolisting } it 'should show the index page' do get :index expect(response.status).to eq 200 end it 'should show the campaign page' do post :create, campaign: campaign get :show, campaign expect(response.status).to eq 200 end it 'raises routing error when campaign not found' do expect(lambda { get :show, { :listingcode => "x" } }).to raise_error(ActionController::RoutingError) end it 'creates a campaign from json post' do post :create, campaign: campaign expect(response.status).to eq 302 flash = response.request.env["action_dispatch.request.flash_hash"][:alert] expect(flash).not_to eq("You need to sign in or sign up before continuing.") expect(Campaign.last.listingcode).to eq campaign[:listingcode] end it 'creates a campaign with a nested videolisting' do campaign[:videolistings_attributes] = [videolisting,] post :create, campaign: campaign flash = response.request.env["action_dispatch.request.flash_hash"][:alert] expect(flash).not_to eq("You need to sign in or sign up before continuing.") expect(Campaign.last.videolistings.last.videocode).to eq videolisting[:videocode] expect(Campaign.last.videolistings.count).to eq 1 end end