118 lines
3.2 KiB
Ruby
118 lines
3.2 KiB
Ruby
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 "allows you to create a campaign" do
|
|
get :new, campaign
|
|
expect(response.status).to eq 200
|
|
end
|
|
|
|
it 'should show the index page' do
|
|
get :index
|
|
expect(response.status).to eq 200
|
|
end
|
|
|
|
it 'should show the campaign page' do
|
|
campaign[:videolistings_attributes] = []
|
|
campaign[:videolistings_attributes] << videolisting
|
|
|
|
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
|
|
campaign[:videolistings_attributes] = []
|
|
campaign[:videolistings_attributes] << videolisting
|
|
|
|
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 from json post and fails' do
|
|
camp = FactoryGirl.create(:campaign)
|
|
campaign[:videolistings_attributes] = []
|
|
campaign[:videolistings_attributes] << videolisting
|
|
campaign[:listingcode] = camp.listingcode
|
|
|
|
post :create, campaign: campaign
|
|
|
|
expect(response.status).to eq 200
|
|
|
|
expect(Campaign.last.id).to_not eq campaign[:id]
|
|
end
|
|
|
|
it 'creates a campaign with a nested videolisting' do
|
|
campaign[:videolistings_attributes] = [videolisting,]
|
|
|
|
expect do
|
|
post :create, campaign: campaign
|
|
end.to change(Campaign, :count).by(1)
|
|
|
|
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.")
|
|
|
|
end
|
|
|
|
it "expects the clientid to be correct" do
|
|
camp = FactoryGirl.build(:campaign)
|
|
expect(camp.clientid).to eq 720
|
|
end
|
|
|
|
it "allows you to set a campaign from a campaign that is a hash" do
|
|
#line 63 camp_controller
|
|
end
|
|
|
|
it "doesn't allow edits on an already sent campaign" do
|
|
camp = FactoryGirl.create(:campaign)
|
|
camp.sent = true
|
|
camp.save
|
|
get :edit, listingcode: camp.listingcode
|
|
expect(response.status).to eq 302
|
|
end
|
|
|
|
it "allows updates" do
|
|
camp = FactoryGirl.create(:campaign)
|
|
c = Campaign.find(camp.id)
|
|
patch :update, listingcode: c.listingcode, campaign: c.attributes
|
|
expect(response.status).to eq 302
|
|
end
|
|
|
|
it "doesn't allow you to edit a listingcode to a prior existing one" do
|
|
camp = FactoryGirl.create(:campaign)
|
|
camp2 = FactoryGirl.create(:campaign)
|
|
|
|
c = Campaign.find(camp.id)
|
|
c.listingcode = camp2.listingcode
|
|
patch :update, listingcode: c.listingcode, campaign: c.attributes
|
|
expect(response.status).to eq 200
|
|
end
|
|
|
|
it "can be deleted" do
|
|
camp = FactoryGirl.create(:campaign)
|
|
c = Campaign.find(camp.id)
|
|
|
|
expect{ delete :destroy, listingcode: c.listingcode}.to change(Campaign, :count).by(-1)
|
|
|
|
end
|
|
|
|
|
|
end
|