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 }