From 051bbc9485efee6509d6b1eeab17530133b66ec3 Mon Sep 17 00:00:00 2001 From: Tyrel Souza Date: Thu, 24 Apr 2014 18:07:23 -0400 Subject: [PATCH] 93.94% coverage: --- app/controllers/campaigns_controller.rb | 2 +- spec/controllers/campaigns_controller_spec.rb | 51 ++++++++++++++++--- 2 files changed, 46 insertions(+), 7 deletions(-) diff --git a/app/controllers/campaigns_controller.rb b/app/controllers/campaigns_controller.rb index 589b055..6178115 100644 --- a/app/controllers/campaigns_controller.rb +++ b/app/controllers/campaigns_controller.rb @@ -60,7 +60,7 @@ class CampaignsController < ApplicationController def set_campaign listingcode = params[:listingcode] if params[:campaign] - @campaign = Campaign.find_by_listingcode(params[:campaign][:listingcode]) || not_found + @campaign = Campaign.find_by_listingcode(params[:campaign][:listingcode]) || not_found else @campaign = Campaign.find_by_listingcode(listingcode) || not_found end diff --git a/spec/controllers/campaigns_controller_spec.rb b/spec/controllers/campaigns_controller_spec.rb index a534b13..d6975b7 100644 --- a/spec/controllers/campaigns_controller_spec.rb +++ b/spec/controllers/campaigns_controller_spec.rb @@ -9,6 +9,11 @@ describe CampaignsController do 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 @@ -41,6 +46,19 @@ describe CampaignsController do 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,] post :create, campaign: campaign @@ -62,16 +80,37 @@ describe CampaignsController do end it "doesn't allow edits on an already published campaign" do + camp = FactoryGirl.create(:campaign) + camp.processed = true + camp.save + get :edit, listingcode: camp.listingcode + expect(response.status).to eq 302 end - it "shows errors when creating and a campaign is invalid" do + 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 - it "it updates correctly." do - end - it "shows errors on failed updates" do - - end end