diff --git a/script/check_contributors_md.rb b/script/check_contributors_md.rb index 3fca50489..4792abbb5 100755 --- a/script/check_contributors_md.rb +++ b/script/check_contributors_md.rb @@ -22,7 +22,6 @@ else abort %( Couldn't determine your GitHub username, and not in a Travis PR build Please set it using - git config --add github.user [username] ) end diff --git a/spec/controllers/account_types_controller_spec.rb b/spec/controllers/account_types_controller_spec.rb index 37dbfa706..010c8bf1f 100644 --- a/spec/controllers/account_types_controller_spec.rb +++ b/spec/controllers/account_types_controller_spec.rb @@ -21,6 +21,7 @@ describe AccountTypesController do describe '#index' do let!(:aaa) { FactoryBot.create :account_type, name: 'aaa' } let!(:zzz) { FactoryBot.create :account_type, name: 'zzz' } + before { get :index } it { is_expected.to be_success } it { expect(assigns[:account_types].first).to eql(aaa) } diff --git a/spec/controllers/comments_controller_spec.rb b/spec/controllers/comments_controller_spec.rb index 0e986cc93..2d265de5f 100644 --- a/spec/controllers/comments_controller_spec.rb +++ b/spec/controllers/comments_controller_spec.rb @@ -3,6 +3,7 @@ require 'rails_helper' describe CommentsController do subject { response } let(:member) { FactoryBot.create(:member) } + before(:each) do sign_in member controller.stub(:current_member) { member } @@ -16,6 +17,7 @@ describe CommentsController do describe "GET RSS feed" do let!(:first_comment) { FactoryBot.create :comment, created_at: 10.days.ago } let!(:last_comment) { FactoryBot.create :comment, created_at: 4.minutes.ago } + describe "returns an RSS feed" do before { get :index, format: "rss" } it { is_expected.to be_success } @@ -36,6 +38,7 @@ describe CommentsController do end let(:old_comment) { FactoryBot.create(:comment, post: post) } + it "assigns the old comments as @comments" do assigns(:comments).should eq [old_comment] end @@ -49,11 +52,13 @@ describe CommentsController do describe "GET edit" do let(:post) { FactoryBot.create(:post) } + before { get :edit, id: comment.to_param } describe "my comment" do let!(:comment) { FactoryBot.create :comment, author: member, post: post } let!(:old_comment) { FactoryBot.create(:comment, post: post, created_at: Time.zone.yesterday) } + it "assigns previous comments as @comments" do expect(assigns(:comments)).to eq([comment, old_comment]) end @@ -61,6 +66,7 @@ describe CommentsController do describe "not my comment" do let(:comment) { FactoryBot.create :comment, post: post } + it { expect(response).not_to be_success } end end @@ -70,12 +76,14 @@ describe CommentsController do describe "my comment" do let(:comment) { FactoryBot.create :comment, author: member } + it "redirects to the comment's post" do expect(response).to redirect_to(comment.post) end end describe "not my comment" do let(:comment) { FactoryBot.create :comment } + it { expect(response).not_to be_success } end describe "attempting to change post_id" do @@ -83,6 +91,7 @@ describe CommentsController do let(:other_post) { FactoryBot.create :post, subject: 'the other post' } let(:valid_attributes) { { post_id: other_post.id, body: "kōrero" } } let(:comment) { FactoryBot.create :comment, author: member, post: post } + it "does not change post_id" do comment.reload expect(comment.post_id).to eq(post.id) @@ -95,6 +104,7 @@ describe CommentsController do describe "my comment" do let(:comment) { FactoryBot.create :comment, author: member } + it "redirects to the post the comment was on" do expect(response).to redirect_to(comment.post) end @@ -102,6 +112,7 @@ describe CommentsController do describe "not my comment" do let(:comment) { FactoryBot.create :comment } + it { expect(response).not_to be_success } end end diff --git a/spec/controllers/gardens_controller_spec.rb b/spec/controllers/gardens_controller_spec.rb index b0ccae0b8..9253b5ddb 100644 --- a/spec/controllers/gardens_controller_spec.rb +++ b/spec/controllers/gardens_controller_spec.rb @@ -6,6 +6,7 @@ RSpec.describe GardensController, type: :controller do context "when not signed in" do let(:garden) { double('garden') } + describe 'GET new' do before { get :new, id: garden.to_param } it { expect(response).to redirect_to(new_member_session_path) } @@ -45,6 +46,7 @@ RSpec.describe GardensController, type: :controller do describe "for another member's garden" do let(:not_my_garden) { double('garden') } + before do expect(Garden).to receive(:find).and_return(:not_my_garden) expect(not_my_garden).not_to receive(:save) diff --git a/spec/controllers/harvests_controller_spec.rb b/spec/controllers/harvests_controller_spec.rb index 8a2edb56b..705f954b5 100644 --- a/spec/controllers/harvests_controller_spec.rb +++ b/spec/controllers/harvests_controller_spec.rb @@ -45,6 +45,7 @@ describe HarvestsController do describe "GET show" do let(:harvest) { Harvest.create! valid_attributes } + describe "assigns the requested harvest as @harvest" do before { get :show, id: harvest.to_param } it { expect(assigns(:harvest)).to eq(harvest) } @@ -65,6 +66,7 @@ describe HarvestsController do describe "GET edit" do let(:harvest) { Harvest.create! valid_attributes } + describe "assigns the requested harvest as @harvest" do before { get :edit, id: harvest.to_param } it { expect(assigns(:harvest)).to eq(harvest) } @@ -92,6 +94,7 @@ describe HarvestsController do describe "links to planting" do let(:planting) { FactoryBot.create(:planting, owner_id: member.id, garden: member.gardens.first) } + before { post :create, harvest: valid_attributes.merge(planting_id: planting.id) } it { expect(Harvest.last.planting.id).to eq(planting.id) } end @@ -170,6 +173,7 @@ describe HarvestsController do describe "not my planting" do let(:not_my_planting) { FactoryBot.create(:planting) } let(:harvest) { FactoryBot.create(:harvest) } + describe "does not save planting_id" do before do put :update, id: harvest.to_param, diff --git a/spec/controllers/likes_controller_spec.rb b/spec/controllers/likes_controller_spec.rb index 6f43760c1..a80fc0d56 100644 --- a/spec/controllers/likes_controller_spec.rb +++ b/spec/controllers/likes_controller_spec.rb @@ -35,6 +35,7 @@ describe LikesController do describe "Deleting someone else's like" do let(:like) { FactoryBot.create :like } + it { expect(response.code).to eq('403') } it { JSON.parse(response.body)["error"] == "Unable to like" } end diff --git a/spec/controllers/photo_associations_controller_spec.rb b/spec/controllers/photo_associations_controller_spec.rb index 42e0ccc37..75a04eedd 100644 --- a/spec/controllers/photo_associations_controller_spec.rb +++ b/spec/controllers/photo_associations_controller_spec.rb @@ -26,6 +26,7 @@ describe PhotoAssociationsController do describe "another member's harvest from another member's photo" do let(:harvest) { FactoryBot.create :harvest } let(:photo) { FactoryBot.create :photo } + it do expect do begin diff --git a/spec/controllers/photos_controller_spec.rb b/spec/controllers/photos_controller_spec.rb index 3c4f9dacb..76869ebf3 100644 --- a/spec/controllers/photos_controller_spec.rb +++ b/spec/controllers/photos_controller_spec.rb @@ -73,6 +73,7 @@ describe PhotosController do let(:planting) { FactoryBot.create(:planting, garden: garden, owner: member) } let(:harvest) { FactoryBot.create(:harvest, owner: member) } let(:photo) { FactoryBot.create(:photo, owner: member) } + describe "with valid params" do before { controller.stub(:current_member) { member } } it "attaches the photo to a planting" do @@ -113,6 +114,7 @@ describe PhotosController do describe "for the second time" do let(:planting) { FactoryBot.create :planting, owner: member } + it "does not add a photo twice" do expect do post :create, photo: { flickr_photo_id: 1 }, id: planting.id, type: 'planting' @@ -142,6 +144,7 @@ describe PhotosController do describe "with mismatched owners" do let(:photo) { FactoryBot.create(:photo) } + it "does not create the planting/photo link" do # members will be auto-created, and different another_planting = FactoryBot.create(:planting) diff --git a/spec/controllers/plantings_controller_spec.rb b/spec/controllers/plantings_controller_spec.rb index dd1340d44..abe5ea626 100644 --- a/spec/controllers/plantings_controller_spec.rb +++ b/spec/controllers/plantings_controller_spec.rb @@ -39,6 +39,7 @@ describe PlantingsController do describe "GET new" do describe "picks up crop from params" do let(:crop) { FactoryBot.create(:crop) } + before { get :new, crop_id: crop.id } it { expect(assigns(:crop)).to eq(crop) } end @@ -50,6 +51,7 @@ describe PlantingsController do describe "picks up member's garden from params" do let(:garden) { FactoryBot.create(:garden, owner: member) } + before { get :new, garden_id: garden.id } it { expect(assigns(:garden)).to eq(garden) } end @@ -57,6 +59,7 @@ describe PlantingsController do describe "Doesn't display another member's garden on planting form" do let(:another_member) { FactoryBot.create(:member) } # over-riding member from login_member() let(:garden) { FactoryBot.create(:garden, owner: another_member) } + before { get :new, garden_id: garden.id } it { expect(assigns(:garden)).not_to eq(garden) } end @@ -64,6 +67,7 @@ describe PlantingsController do describe "Doesn't display un-approved crops on planting form" do let(:crop) { FactoryBot.create(:crop, approval_status: 'pending') } let!(:garden) { FactoryBot.create(:garden, owner: member) } + before { get :new, crop_id: crop.id } it { expect(assigns(:crop)).not_to eq(crop) } end @@ -71,6 +75,7 @@ describe PlantingsController do describe "Doesn't display rejected crops on planting form" do let(:crop) { FactoryBot.create(:crop, approval_status: 'rejected', reason_for_rejection: 'nope') } let!(:garden) { FactoryBot.create(:garden, owner: member) } + before { get :new, crop_id: crop.id } it { expect(assigns(:crop)).not_to eq(crop) } end diff --git a/spec/controllers/shop_controller_spec.rb b/spec/controllers/shop_controller_spec.rb index c25039d2d..2fc6b77f7 100644 --- a/spec/controllers/shop_controller_spec.rb +++ b/spec/controllers/shop_controller_spec.rb @@ -24,6 +24,7 @@ describe ShopController do describe "assigns @order as current_order if there is one" do let(:member) { FactoryBot.create(:member) } let!(:order) { FactoryBot.create(:order, member: member) } + before do sign_in member get :index, {} diff --git a/spec/features/crops/crop_detail_page_spec.rb b/spec/features/crops/crop_detail_page_spec.rb index e21c5eb47..1ee9bae80 100644 --- a/spec/features/crops/crop_detail_page_spec.rb +++ b/spec/features/crops/crop_detail_page_spec.rb @@ -205,6 +205,7 @@ feature "crop detail page", js: true do planted_at: 100.days.ago, finished_at: 1.day.ago) end + context 'crop is an annual' do let(:crop) { FactoryBot.create(:annual_crop) } @@ -258,16 +259,19 @@ feature "crop detail page", js: true do before { visit crop_path(crop) } context 'crop is an annual' do let(:crop) { FactoryBot.create :annual_crop } + it { expect(page).to have_text 'annual crop (living and reproducing in a single year or less)' } it { expect(page).not_to have_text 'perennial crop (living more than two years)' } end context 'crop is perennial' do let(:crop) { FactoryBot.create :perennial_crop } + it { expect(page).to have_text 'perennial crop (living more than two years)' } it { expect(page).not_to have_text 'annual crop (living and reproducing in a single year or less)' } end context 'crop perennial value is null' do let(:crop) { FactoryBot.create :crop, perennial: nil } + it { expect(page).not_to have_text 'perennial crop (living more than two years)' } it { expect(page).not_to have_text 'annual crop (living and reproducing in a single year or less)' } end diff --git a/spec/features/crops/requested_crops_spec.rb b/spec/features/crops/requested_crops_spec.rb index 6bfb8220c..15226efe4 100644 --- a/spec/features/crops/requested_crops_spec.rb +++ b/spec/features/crops/requested_crops_spec.rb @@ -3,6 +3,7 @@ require 'rails_helper' feature "Crop - " do let(:member) { create :member } let!(:requested_crop) { create :crop, requester: member, approval_status: 'pending', name: 'puha for dinner' } + background do login_as member visit requested_crops_path diff --git a/spec/features/gardens_spec.rb b/spec/features/gardens_spec.rb index a299a0197..0954d35eb 100644 --- a/spec/features/gardens_spec.rb +++ b/spec/features/gardens_spec.rb @@ -88,6 +88,7 @@ feature "Planting a crop", js: true do describe "Making a planting inactive from garden show" do let(:path) { garden_path garden } let(:link_text) { "Mark as finished" } + it_behaves_like "append date" end diff --git a/spec/features/members/deletion_spec.rb b/spec/features/members/deletion_spec.rb index 3009f51be..793a6ada5 100644 --- a/spec/features/members/deletion_spec.rb +++ b/spec/features/members/deletion_spec.rb @@ -12,6 +12,7 @@ feature "member deletion" do let!(:secondgarden) { FactoryBot.create(:garden, owner: member) } let!(:order) { FactoryBot.create(:order, member: member, completed_at: Time.zone.now) } let(:admin) { FactoryBot.create(:admin_member) } + background do login_as(member) visit member_path(other_member) diff --git a/spec/features/plantings/planting_a_crop_spec.rb b/spec/features/plantings/planting_a_crop_spec.rb index 0c984837b..51ff69be2 100644 --- a/spec/features/plantings/planting_a_crop_spec.rb +++ b/spec/features/plantings/planting_a_crop_spec.rb @@ -270,6 +270,7 @@ feature "Planting a crop", :js, :elasticsearch do describe "Marking a planting as finished from the show page" do let(:path) { planting_path(planting) } let(:link_text) { "Mark as finished" } + it_behaves_like "append date" end diff --git a/spec/features/seeds/seed_photos.rb b/spec/features/seeds/seed_photos.rb index 635b4dc4d..3d57f2cfe 100644 --- a/spec/features/seeds/seed_photos.rb +++ b/spec/features/seeds/seed_photos.rb @@ -19,12 +19,14 @@ feature "Seeds", :js do context 'has one photo' do before { seed.photos = [photo] } let!(:photo) { FactoryBot.create :photo, title: 'hello photo' } + it { is_expected.to have_xpath("//img[contains(@src,'#{photo.thumbnail_url}')]") } it { is_expected.to have_xpath("//a[contains(@href,'#{photo_path(photo)}')]") } end context 'has 50 photos' do before { seed.photos = photos } let!(:photos) { FactoryBot.create_list :photo, 50 } + it "shows newest photo" do is_expected.to have_xpath("//img[contains(@src,'#{photos.last.thumbnail_url}')]") end diff --git a/spec/features/signout_spec.rb b/spec/features/signout_spec.rb index a6402df2c..35cd8af9b 100644 --- a/spec/features/signout_spec.rb +++ b/spec/features/signout_spec.rb @@ -30,6 +30,7 @@ feature "signout" do end let(:path) {} + describe 'after signout, redirect to signin page if page needs authentication' do include_examples "sign-in redirects", "/plantings/new" include_examples "sign-in redirects", "/harvests/new" diff --git a/spec/models/crop_spec.rb b/spec/models/crop_spec.rb index f89cc3377..515d0160c 100644 --- a/spec/models/crop_spec.rb +++ b/spec/models/crop_spec.rb @@ -82,36 +82,43 @@ describe Crop do context 'not a url' do let(:wikipedia_url) { 'this is not valid' } + it { expect(subject).not_to be_valid } end context 'http url' do let(:wikipedia_url) { 'http://en.wikipedia.org/wiki/SomePage' } + it { expect(subject).to be_valid } end context 'with ssl' do let(:wikipedia_url) { 'https://en.wikipedia.org/wiki/SomePage' } + it { expect(subject).to be_valid } end context 'with utf8 macrons' do let(:wikipedia_url) { 'https://en.wikipedia.org/wiki/Māori' } + it { expect(subject).to be_valid } end context 'urlencoded' do let(:wikipedia_url) { 'https://en.wikipedia.org/wiki/M%C4%81ori' } + it { expect(subject).to be_valid } end context 'with new lines in url' do let(:wikipedia_url) { 'http://en.wikipedia.org/wiki/SomePage\n\nBrendaRocks' } + it { expect(subject).not_to be_valid } end context "with script tags in url" do let(:wikipedia_url) { 'http://en.wikipedia.org/wiki/SomePage' } + it { expect(subject).not_to be_valid } end end @@ -330,6 +337,7 @@ describe Crop do let(:h2) { FactoryBot.create(:harvest, crop: maize, plant_part: pp2) } let!(:crop) { FactoryBot.create(:crop) } let!(:harvest) { FactoryBot.create(:harvest, crop: crop) } + it "has harvests" do expect(crop.harvests).to eq [harvest] end diff --git a/spec/models/member_spec.rb b/spec/models/member_spec.rb index 1911ae8da..cf7b81486 100644 --- a/spec/models/member_spec.rb +++ b/spec/models/member_spec.rb @@ -432,6 +432,7 @@ describe 'member' do context 'member deleted' do let(:member) { FactoryBot.create(:member) } + context 'queries a scope' do before { member.destroy } it { expect(Member.all).not_to include(member) } @@ -450,10 +451,12 @@ describe 'member' do context "deleted admin member" do let(:member) { FactoryBot.create(:admin_member) } + before { member.destroy } context 'crop creator' do let!(:crop) { FactoryBot.create(:crop, creator: member) } + it "leaves crops behind, reassigned to cropbot" do expect(Crop.all).to include(crop) end @@ -461,6 +464,7 @@ describe 'member' do context 'forum owners' do let!(:forum) { FactoryBot.create(:forum, owner: member) } + it "leaves forums behind, reassigned to ex_admin" do expect(forum.owner).to eq(member) end diff --git a/spec/models/photo_spec.rb b/spec/models/photo_spec.rb index e220bfe59..c971ce2fd 100644 --- a/spec/models/photo_spec.rb +++ b/spec/models/photo_spec.rb @@ -3,6 +3,7 @@ require 'rails_helper' describe Photo do let(:photo) { FactoryBot.create(:photo, owner: member) } let(:member) { FactoryBot.create(:member) } + describe 'add/delete functionality' do let(:planting) { FactoryBot.create(:planting) } let(:harvest) { FactoryBot.create(:harvest) } diff --git a/spec/models/planting_spec.rb b/spec/models/planting_spec.rb index 48a035bb4..60a95c245 100644 --- a/spec/models/planting_spec.rb +++ b/spec/models/planting_spec.rb @@ -13,6 +13,7 @@ describe Planting do context 'no predications data yet' do describe 'planting planted, not finished' do let(:planting) { FactoryBot.create :planting, planted_at: 30.days.ago, finished_at: nil, finished: false } + it { expect(planting.crop.median_lifespan).to eq(nil) } it { expect(planting.expected_lifespan).to eq(nil) } it { expect(planting.days_since_planted).to eq(30) } @@ -20,6 +21,7 @@ describe Planting do end describe 'planting not planted yet' do let(:planting) { FactoryBot.create :planting, planted_at: nil, finished_at: nil, finished: false } + it { expect(planting.crop.median_lifespan).to eq(nil) } it { expect(planting.expected_lifespan).to eq(nil) } it { expect(planting.days_since_planted).to eq(nil) } @@ -27,6 +29,7 @@ describe Planting do end describe 'planting finished, no planted_at' do let(:planting) { FactoryBot.create :planting, planted_at: nil, finished_at: 1.day.ago, finished: true } + it { expect(planting.crop.median_lifespan).to eq(nil) } it { expect(planting.expected_lifespan).to eq(nil) } it { expect(planting.days_since_planted).to eq(nil) } @@ -34,6 +37,7 @@ describe Planting do end describe 'planting all finished' do let(:planting) { FactoryBot.create :planting, planted_at: 30.days.ago, finished_at: 1.day.ago, finished: true } + it { expect(planting.crop.median_lifespan).to eq(nil) } it { expect(planting.expected_lifespan).to eq(29) } it { expect(planting.days_since_planted).to eq(30) } @@ -63,16 +67,19 @@ describe Planting do describe 'planting not planted yet' do let(:planting) { FactoryBot.create :planting, planted_at: nil, finished_at: nil } + it { expect(planting.percentage_grown).to eq nil } end describe 'planting finished 10 days, but was never planted' do let(:planting) { FactoryBot.create :planting, planted_at: nil, finished_at: 10.days.ago } + it { expect(planting.percentage_grown).to eq nil } end describe 'planted 30 days ago, finished 10 days ago' do let(:planting) { FactoryBot.create :planting, planted_at: 30.days.ago, finished_at: 10.days.ago } + it { expect(planting.days_since_planted).to eq 30 } it { expect(planting.percentage_grown).to eq 100 } end @@ -82,6 +89,7 @@ describe Planting do describe 'planting first harvest preductions' do context 'no data' do let(:planting) { FactoryBot.create :planting } + it { expect(planting.crop.median_days_to_first_harvest).to eq(nil) } it { expect(planting.crop.median_days_to_last_harvest).to eq(nil) } it { expect(planting.days_to_first_harvest).to eq(nil) } @@ -114,11 +122,13 @@ describe Planting do planting.crop.update_harvest_medians end let(:planting) { FactoryBot.create :planting } + it { expect(planting.days_to_first_harvest).to eq(nil) } it { expect(planting.days_to_last_harvest).to eq(nil) } end describe 'planting has first harvest' do let(:planting) { FactoryBot.create :planting, planted_at: 100.days.ago } + before do FactoryBot.create(:harvest, planting: planting, @@ -134,6 +144,7 @@ describe Planting do end describe 'planting has last harvest' do let(:planting) { FactoryBot.create :planting, planted_at: 100.days.ago, finished_at: 1.day.ago, finished: true } + before do FactoryBot.create :harvest, planting: planting, crop: planting.crop, harvested_at: 90.days.ago FactoryBot.create :harvest, planting: planting, crop: planting.crop, harvested_at: 10.days.ago diff --git a/spec/models/post_spec.rb b/spec/models/post_spec.rb index cb8cbcc91..062aba487 100644 --- a/spec/models/post_spec.rb +++ b/spec/models/post_spec.rb @@ -2,6 +2,7 @@ require 'rails_helper' describe Post do let(:member) { FactoryBot.create(:member) } + it_behaves_like "it is likeable" it "should have a slug" do diff --git a/spec/models/role_spec.rb b/spec/models/role_spec.rb index 3016591b7..a7cfbecd3 100644 --- a/spec/models/role_spec.rb +++ b/spec/models/role_spec.rb @@ -19,6 +19,7 @@ describe Role do describe '.crop_wranglers' do let!(:crop_wranglers) { FactoryBot.create_list(:crop_wrangling_member, 3) } + it 'return the crop wranglers that are members of that role' do expect(Role.crop_wranglers).to match_array(crop_wranglers) end @@ -26,6 +27,7 @@ describe Role do describe '.admins' do let!(:admins) { FactoryBot.create_list(:admin_member, 3) } + it 'return the members that have the role of admin' do expect(Role.admins).to match_array(admins) end diff --git a/spec/models/seed_spec.rb b/spec/models/seed_spec.rb index c1cd95cbd..e45d0e240 100644 --- a/spec/models/seed_spec.rb +++ b/spec/models/seed_spec.rb @@ -151,6 +151,7 @@ describe Seed do context 'photos' do let(:seed) { FactoryBot.create :seed } + before { seed.photos << FactoryBot.create(:photo) } it 'is found in has_photos scope' do Seed.has_photos.should include(seed) diff --git a/spec/views/crops/_planting_advice.html.haml_spec.rb b/spec/views/crops/_planting_advice.html.haml_spec.rb index c7a4719b5..38499e2d9 100644 --- a/spec/views/crops/_planting_advice.html.haml_spec.rb +++ b/spec/views/crops/_planting_advice.html.haml_spec.rb @@ -2,6 +2,7 @@ require 'rails_helper' describe "crops/_planting_advice" do let(:planting) { FactoryBot.create(:planting) } + subject { rendered } shared_examples "render planting_advice" do diff --git a/spec/views/home/_crops.html.haml_spec.rb b/spec/views/home/_crops.html.haml_spec.rb index 254fcb2f6..3ed655438 100644 --- a/spec/views/home/_crops.html.haml_spec.rb +++ b/spec/views/home/_crops.html.haml_spec.rb @@ -4,6 +4,7 @@ describe 'home/_crops.html.haml', type: "view" do let!(:crop) { FactoryBot.create(:crop, plantings: FactoryBot.create_list(:planting, 3)) } let!(:photo) { FactoryBot.create(:photo, plantings: [crop.plantings.first]) } let(:planting) { crop.plantings.first } + before(:each) { render } it 'shows crops section' do assert_select 'h2', text: 'Some of our crops' diff --git a/spec/views/members/index.html.haml_spec.rb b/spec/views/members/index.html.haml_spec.rb index 81e8a6670..87dd3a285 100644 --- a/spec/views/members/index.html.haml_spec.rb +++ b/spec/views/members/index.html.haml_spec.rb @@ -2,6 +2,7 @@ require 'rails_helper' describe "members/index" do let(:member) { FactoryBot.create(:london_member) } + before(:each) do controller.stub(:current_user) { nil } page = 1 diff --git a/spec/views/plantings/index.html.haml_spec.rb b/spec/views/plantings/index.html.haml_spec.rb index f682d62e9..a3a713100 100644 --- a/spec/views/plantings/index.html.haml_spec.rb +++ b/spec/views/plantings/index.html.haml_spec.rb @@ -5,6 +5,7 @@ describe "plantings/index" do let(:garden) { FactoryBot.create(:garden, owner: member) } let(:tomato) { FactoryBot.create(:tomato) } let(:maize) { FactoryBot.create(:maize) } + before(:each) do controller.stub(:current_user) { nil } page = 1 diff --git a/spec/views/plantings/show.html.haml_spec.rb b/spec/views/plantings/show.html.haml_spec.rb index 040a0f6b0..899724ac7 100644 --- a/spec/views/plantings/show.html.haml_spec.rb +++ b/spec/views/plantings/show.html.haml_spec.rb @@ -28,6 +28,7 @@ describe "plantings/show" do context 'planted from' do let(:planting) { FactoryBot.create(:cutting_planting) } + it "shows planted_from" do render rendered.should have_content 'Planted from:' diff --git a/spec/views/posts/show.html.haml_spec.rb b/spec/views/posts/show.html.haml_spec.rb index 169e90da0..273f400cc 100644 --- a/spec/views/posts/show.html.haml_spec.rb +++ b/spec/views/posts/show.html.haml_spec.rb @@ -25,25 +25,30 @@ describe "posts/show" do describe "should parse markdown into html" do let(:post) { FactoryBot.create(:markdown_post, author: author) } + it { assert_select "strong", "strong" } end describe "shouldn't let html through in body" do let(:post) { FactoryBot.create(:post, author: author, body: 'EVIL') } + it { is_expected.to have_content('EVIL') } it { is_expected.not_to have_link("http://evil.com") } end describe 'script tag in post body' do let(:post) { FactoryBot.create(:post, author: author, body: "") } + it { is_expected.not_to have_selector('script') } end describe 'script tag in post title' do let(:post) { FactoryBot.create(:post, author: author, subject: "") } + it { is_expected.not_to have_selector('script') } end describe 'has an anchor to the comments' do let(:post) { FactoryBot.create(:post, author: author) } + it { is_expected.to have_selector('a[name=comments]') } end end @@ -51,6 +56,7 @@ describe "posts/show" do context "when there is one comment" do let(:post) { FactoryBot.create(:html_post, author: author) } let!(:comment) { FactoryBot.create(:comment, post: post) } + before(:each) do @comments = post.comments render @@ -71,6 +77,7 @@ describe "posts/show" do context "when there is more than one comment" do let(:post) { FactoryBot.create(:html_post, author: author) } + before(:each) do @comment1 = FactoryBot.create(:comment, post: post, body: "F1rst!!!", created_at: Date.new(2010, 5, 17)) @@ -90,6 +97,7 @@ describe "posts/show" do context "forum post" do let(:post) { FactoryBot.create(:forum_post, author: author) } + before { render } it "shows forum name" do is_expected.to have_content "in #{post.forum.name}" @@ -98,6 +106,7 @@ describe "posts/show" do context "signed in" do let(:post) { FactoryBot.create(:post, author: author) } + before(:each) do sign_in author controller.stub(:current_user) { author }