diff --git a/spec/views/photos/show.html.haml_spec.rb b/spec/views/photos/show.html.haml_spec.rb index 5edfc03a5..3e1e4936a 100644 --- a/spec/views/photos/show.html.haml_spec.rb +++ b/spec/views/photos/show.html.haml_spec.rb @@ -13,26 +13,17 @@ require 'rails_helper' describe "photos/show" do - before(:each) do - @member = FactoryGirl.create(:member) - controller.stub(:current_user) { @member } - end + let(:photo) { FactoryGirl.create :photo, owner: member } + before { @photo = photo } - let(:harvest) { FactoryGirl.create :harvest, owner: @member } - let(:planting) { FactoryGirl.create :planting, owner: @member } - let(:seed) { FactoryGirl.create :seed, owner: @member } - let(:garden) { FactoryGirl.create :garden, owner: @member } + let(:member) { FactoryGirl.create :member } - context "CC-licensed photo" do - before(:each) do - @photo = assign(:photo, FactoryGirl.create(:photo, owner: @member)) - @photo.harvests << harvest - @photo.plantings << planting - @photo.seeds << seed - @photo.gardens << garden - render - end + let(:harvest) { FactoryGirl.create :harvest, owner: member } + let(:planting) { FactoryGirl.create :planting, owner: member } + let(:seed) { FactoryGirl.create :seed, owner: member } + let(:garden) { FactoryGirl.create :garden, owner: member } + shared_examples "photo data renders" do it "shows the image" do assert_select "img[src='#{@photo.fullsize_url}']" end @@ -41,19 +32,10 @@ describe "photos/show" do assert_select "a", href: @photo.owner end - it "links to the CC license" do - assert_select "a", href: @photo.license_url, - text: @photo.license_name - end - it "shows a link to the original image" do assert_select "a", href: @photo.link_url, text: "View on Flickr" end - it "has a delete button" do - assert_select "a[href='#{photo_path(@photo)}']" - end - it "links to harvest" do assert_select "a", href: harvest_path(harvest) end @@ -68,8 +50,61 @@ describe "photos/show" do end end + shared_examples "No links to change data" do + it "does not have a delete button" do + assert_select "a[href='#{photo_path(@photo)}']", false + end + end + + context "signed in as owner" do + before(:each) do + controller.stub(:current_user) { member } + render + end + include_examples "photo data renders" + + it "has a delete button" do + assert_select "a[href='#{photo_path(@photo)}']" + end + end + + context "signed in as another member" do + before(:each) do + controller.stub(:current_user) { FactoryGirl.create :member } + render + end + include_examples "photo data renders" + include_examples "No links to change data" + end + + context "not signed in" do + before(:each) do + controller.stub(:current_user) { nil } + render + end + include_examples "photo data renders" + include_examples "No links to change data" + end + + context "CC-licensed photo" do + before(:each) do + controller.stub(:current_user) { nil } + # @photo = assign(:photo, FactoryGirl.create(:photo, owner: @member)) + @photo.harvests << harvest + @photo.plantings << planting + @photo.seeds << seed + @photo.gardens << garden + render + end + it "links to the CC license" do + assert_select "a", href: @photo.license_url, + text: @photo.license_name + end + end + context "unlicensed photo" do before(:each) do + controller.stub(:current_user) { nil } @photo = assign(:photo, FactoryGirl.create(:unlicensed_photo)) render end