This commit is contained in:
Daniel O'Connor
2022-11-08 00:23:38 +10:30
parent 2db3d1bacc
commit d1f754a288
92 changed files with 505 additions and 536 deletions

View File

@@ -226,13 +226,6 @@ RSpec/ExpectInHook:
- 'spec/features/plantings/planting_a_crop_spec.rb'
- 'spec/features/shared_examples/append_date.rb'
# Offense count: 447
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: EnforcedStyle.
# SupportedStyles: require_parentheses, omit_parentheses
RSpec/FactoryBot/ConsistentParenthesesStyle:
Enabled: false
# Offense count: 1135
# This cop supports unsafe autocorrection (--autocorrect-all).
RSpec/FactoryBot/SyntaxMethods:
@@ -266,19 +259,6 @@ RSpec/HooksBeforeExamples:
RSpec/InstanceVariable:
Enabled: false
# Offense count: 9
# This cop supports safe autocorrection (--autocorrect).
RSpec/LeadingSubject:
Exclude:
- 'spec/controllers/crops_controller_spec.rb'
- 'spec/features/crops/crop_detail_page_spec.rb'
- 'spec/features/members/list_spec.rb'
- 'spec/features/seeds/seed_photos.rb'
- 'spec/helpers/event_helper_spec.rb'
- 'spec/models/planting_spec.rb'
- 'spec/models/seed_spec.rb'
- 'spec/services/timeline_service_spec.rb'
# Offense count: 40
RSpec/LetSetup:
Enabled: false
@@ -356,14 +336,6 @@ RSpec/RepeatedExampleGroupBody:
Exclude:
- 'spec/controllers/crops_controller_spec.rb'
# Offense count: 9
# This cop supports safe autocorrection (--autocorrect).
RSpec/ScatteredLet:
Exclude:
- 'spec/features/members/deletion_spec.rb'
- 'spec/features/members/profile_spec.rb'
- 'spec/views/photos/show.html.haml_spec.rb'
# Offense count: 6
RSpec/ScatteredSetup:
Exclude:

View File

@@ -5,7 +5,7 @@ require 'rails_helper'
RSpec.describe Api::V1::PlantingsController, type: :controller do
subject { JSON.parse response.body }
let!(:member) { FactoryBot.create :member }
let!(:member) { FactoryBot.create(:member) }
describe '#index' do
let(:matching_planting) { subject['data'].select { |planting| planting['id'] == my_planting.id.to_s }.first }

View File

@@ -4,7 +4,7 @@ require 'rails_helper'
describe Charts::CropsController do
describe 'GET charts' do
let(:crop) { FactoryBot.create :crop }
let(:crop) { FactoryBot.create(:crop) }
describe 'sunniness' do
before { get :sunniness, params: { crop_slug: crop.to_param } }

View File

@@ -5,7 +5,7 @@ require 'rails_helper'
describe Charts::GardensController do
include Devise::Test::ControllerHelpers
let(:garden) { FactoryBot.create :garden }
let(:garden) { FactoryBot.create(:garden) }
context "when not signed in" do
describe 'GET timeline' do

View File

@@ -18,8 +18,8 @@ describe CommentsController do
end
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 }
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" }
@@ -60,7 +60,7 @@ describe CommentsController do
before { get :edit, params: { id: comment.to_param } }
describe "my comment" do
let!(:comment) { FactoryBot.create :comment, author: member, post: }
let!(:comment) { FactoryBot.create(:comment, author: member, post:) }
let!(:old_comment) { FactoryBot.create(:comment, post:, created_at: Time.zone.yesterday) }
it "assigns previous comments as @comments" do
@@ -69,7 +69,7 @@ describe CommentsController do
end
describe "not my comment" do
let(:comment) { FactoryBot.create :comment, post: }
let(:comment) { FactoryBot.create(:comment, post:) }
it { expect(response).not_to be_successful }
end
@@ -79,7 +79,7 @@ describe CommentsController do
before { put :update, params: { id: comment.to_param, comment: valid_attributes } }
describe "my comment" do
let(:comment) { FactoryBot.create :comment, author: member }
let(:comment) { FactoryBot.create(:comment, author: member) }
it "redirects to the comment's post" do
expect(response).to redirect_to(comment.post)
@@ -87,16 +87,16 @@ describe CommentsController do
end
describe "not my comment" do
let(:comment) { FactoryBot.create :comment }
let(:comment) { FactoryBot.create(:comment) }
it { expect(response).not_to be_successful }
end
describe "attempting to change post_id" do
let(:post) { FactoryBot.create :post, subject: 'our post' }
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: }
let(:post) { FactoryBot.create(:post, subject: 'our post') }
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:) }
it "does not change post_id" do
comment.reload
@@ -109,7 +109,7 @@ describe CommentsController do
before { delete :destroy, params: { id: comment.to_param } }
describe "my comment" do
let(:comment) { FactoryBot.create :comment, author: member }
let(:comment) { FactoryBot.create(:comment, author: member) }
it "redirects to the post the comment was on" do
expect(response).to redirect_to(comment.post)
@@ -117,7 +117,7 @@ describe CommentsController do
end
describe "not my comment" do
let(:comment) { FactoryBot.create :comment }
let(:comment) { FactoryBot.create(:comment) }
it { expect(response).not_to be_successful }
end

View File

@@ -3,12 +3,12 @@
require 'rails_helper'
describe CropsController do
subject { response }
shared_context 'login as wrangler' do
login_member(:crop_wrangling_member)
end
subject { response }
describe "GET crop wrangler homepage" do
describe 'fetches the crop wrangler homepage' do
context 'anonymous' do
@@ -42,8 +42,8 @@ describe CropsController do
describe "GET crop search" do
describe 'fetches the crop search page' do
let!(:tomato) { FactoryBot.create :tomato }
let!(:maize) { FactoryBot.create :maize }
let!(:tomato) { FactoryBot.create(:tomato) }
let!(:maize) { FactoryBot.create(:maize) }
before { Crop.reindex }
@@ -74,6 +74,8 @@ describe CropsController do
end
describe 'CREATE' do
subject { put :create, params: crop_params }
let(:crop_params) do
{
crop: {
@@ -85,8 +87,6 @@ describe CropsController do
}
end
subject { put :create, params: crop_params }
context 'not logged in' do
it { expect { subject }.not_to change(Crop, :count) }
end
@@ -106,7 +106,7 @@ describe CropsController do
describe 'DELETE destroy' do
subject { delete :destroy, params: { slug: crop.to_param } }
let!(:crop) { FactoryBot.create :crop }
let!(:crop) { FactoryBot.create(:crop) }
context 'not logged in' do
it { expect { subject }.not_to change(Crop, :count) }

View File

@@ -5,7 +5,7 @@ require 'rails_helper'
RSpec.describe GardenTypesController, type: :controller do
include Devise::Test::ControllerHelpers
let(:valid_params) { { name: 'My second GardenType' } }
let(:garden_type) { FactoryBot.create :garden_type }
let(:garden_type) { FactoryBot.create(:garden_type) }
context "when not signed in" do
describe 'GET new' do

View File

@@ -6,7 +6,7 @@ RSpec.describe GardensController, type: :controller do
include Devise::Test::ControllerHelpers
let(:valid_params) { { name: 'My second Garden' } }
let(:garden) { FactoryBot.create :garden }
let(:garden) { FactoryBot.create(:garden) }
context "when not signed in" do
describe 'GET new' do

View File

@@ -153,7 +153,7 @@ describe HarvestsController, :search do
let(:harvest) { Harvest.create! valid_attributes }
it "updates the requested harvest" do
new_crop = FactoryBot.create :crop
new_crop = FactoryBot.create(:crop)
expect do
put :update, params: { slug: harvest.to_param, harvest: { crop_id: new_crop.id } }
harvest.reload

View File

@@ -3,7 +3,7 @@
require 'rails_helper'
describe LikesController do
let(:like) { FactoryBot.create :like, member: }
let(:like) { FactoryBot.create(:like, member:) }
let(:member) { FactoryBot.create(:member) }
let(:blogpost) { FactoryBot.create(:post) }
@@ -37,7 +37,7 @@ describe LikesController do
end
describe "Deleting someone else's like" do
let(:like) { FactoryBot.create :like }
let(:like) { FactoryBot.create(:like) }
it { expect(response.code).to eq('403') }
it { JSON.parse(response.body)["error"] == "Unable to like" }

View File

@@ -17,8 +17,8 @@ describe PhotoAssociationsController do
before { photo.harvests << harvest }
describe "my harvest my photo" do
let(:harvest) { FactoryBot.create :harvest, owner: member }
let(:photo) { FactoryBot.create :photo, owner: member }
let(:harvest) { FactoryBot.create(:harvest, owner: member) }
let(:photo) { FactoryBot.create(:photo, owner: member) }
it "removes link" do
expect { delete :destroy, params: valid_params }.to change { photo.harvests.count }.by(-1)
@@ -26,8 +26,8 @@ describe PhotoAssociationsController do
end
describe "another member's harvest from another member's photo" do
let(:harvest) { FactoryBot.create :harvest, owner: photo.owner }
let(:photo) { FactoryBot.create :photo }
let(:harvest) { FactoryBot.create(:harvest, owner: photo.owner) }
let(:photo) { FactoryBot.create(:photo) }
it do
expect do

View File

@@ -7,7 +7,7 @@ describe PhotosController, :search do
describe 'GET index' do
describe 'all photos' do
let!(:photo) { FactoryBot.create :photo, :reindex }
let!(:photo) { FactoryBot.create(:photo, :reindex) }
before do
Photo.reindex
@@ -21,10 +21,10 @@ describe PhotosController, :search do
end
describe '#index crop photos' do
let!(:photo) { FactoryBot.create :photo, :reindex, owner: member, title: 'no assocations photo' }
let!(:crop_photo) { FactoryBot.create :photo, :reindex, owner: member, title: 'photos of planting' }
let!(:planting) { FactoryBot.create :planting, :reindex, crop:, owner: member }
let!(:crop) { FactoryBot.create :crop, :reindex }
let!(:photo) { FactoryBot.create(:photo, :reindex, owner: member, title: 'no assocations photo') }
let!(:crop_photo) { FactoryBot.create(:photo, :reindex, owner: member, title: 'photos of planting') }
let!(:planting) { FactoryBot.create(:planting, :reindex, crop:, owner: member) }
let!(:crop) { FactoryBot.create(:crop, :reindex) }
before do
planting.photos << crop_photo
@@ -163,7 +163,7 @@ describe PhotosController, :search do
end
describe "for the second time" do
let(:planting) { FactoryBot.create :planting, owner: member }
let(:planting) { FactoryBot.create(:planting, owner: member) }
let(:valid_params) { { photo: { source_id: 1 }, id: planting.id, type: 'planting' } }
it "does not add a photo twice" do

View File

@@ -17,8 +17,8 @@ describe PlantingsController, :search do
let!(:member2) { FactoryBot.create(:member) }
let!(:tomato) { FactoryBot.create(:tomato) }
let!(:maize) { FactoryBot.create(:maize) }
let!(:planting1) { FactoryBot.create :planting, crop: tomato, owner: member1, created_at: 1.day.ago }
let!(:planting2) { FactoryBot.create :planting, crop: maize, owner: member2, created_at: 5.days.ago }
let!(:planting1) { FactoryBot.create(:planting, crop: tomato, owner: member1, created_at: 1.day.ago) }
let!(:planting2) { FactoryBot.create(:planting, crop: maize, owner: member2, created_at: 5.days.ago) }
before do
Planting.reindex
@@ -111,7 +111,7 @@ describe PlantingsController, :search do
end
context 'with parent seed' do
let(:seed) { FactoryBot.create :seed, owner: member }
let(:seed) { FactoryBot.create(:seed, owner: member) }
before { get :new, params: { seed_id: seed.to_param } }
@@ -128,8 +128,8 @@ describe PlantingsController, :search do
end
describe 'GET :edit' do
let(:my_planting) { FactoryBot.create :planting, owner: member }
let(:not_my_planting) { FactoryBot.create :planting }
let(:my_planting) { FactoryBot.create(:planting, owner: member) }
let(:not_my_planting) { FactoryBot.create(:planting) }
context 'my planting' do
before { get :edit, params: { slug: my_planting } }

View File

@@ -12,8 +12,8 @@ describe PostsController do
describe '#index' do
before do
FactoryBot.create_list :post, 100
FactoryBot.create_list :post, 5, author: member
FactoryBot.create_list(:post, 100)
FactoryBot.create_list(:post, 5, author: member)
end
describe "everyone's posts" do

View File

@@ -26,7 +26,7 @@ describe SeedsController, :search do
end
context 'with parent planting' do
let!(:planting) { FactoryBot.create :planting, owner: }
let!(:planting) { FactoryBot.create(:planting, owner:) }
before do
Seed.reindex

View File

@@ -55,7 +55,7 @@ FactoryBot.define do
factory :crop_with_photo do
name { 'marshmallow' }
photos { FactoryBot.create_list :photo, 1 }
photos { FactoryBot.create_list(:photo, 1) }
end
# This should have a name that is alphabetically earlier than :uppercase

View File

@@ -5,7 +5,7 @@
FactoryBot.define do
factory :harvest do
crop { planting.present? ? planting.crop : FactoryBot.create(:crop) }
plant_part { FactoryBot.create :plant_part }
plant_part { FactoryBot.create(:plant_part) }
planting { nil }
owner { planting.present? ? planting.owner : FactoryBot.create(:member) }
harvested_at { Time.zone.local(2015, 9, 17) }

View File

@@ -4,8 +4,8 @@
FactoryBot.define do
factory :notification, aliases: [:message] do
sender { FactoryBot.create :member }
recipient { FactoryBot.create :member }
sender { FactoryBot.create(:member) }
recipient { FactoryBot.create(:member) }
subject { "MyString" }
body { "MyText" }

View File

@@ -3,7 +3,7 @@
FactoryBot.define do
factory :planting do
owner
garden { FactoryBot.create :garden, owner: }
garden { FactoryBot.create(:garden, owner:) }
crop
planted_at { Time.zone.local(2014, 7, 30) }
quantity { 33 }
@@ -42,21 +42,21 @@ FactoryBot.define do
end
factory :annual_planting do
crop { FactoryBot.create :annual_crop }
crop { FactoryBot.create(:annual_crop) }
end
factory :perennial_planting do
crop { FactoryBot.create :perennial_crop }
crop { FactoryBot.create(:perennial_crop) }
end
factory :predicatable_planting do
crop do
crop = FactoryBot.create :annual_crop
FactoryBot.create :planting, crop: crop, planted_at: 10.days.ago
FactoryBot.create :planting, crop: crop, planted_at: 100.days.ago, finished_at: 50.days.ago
FactoryBot.create :planting, crop: crop, planted_at: 100.days.ago, finished_at: 51.days.ago
FactoryBot.create :planting, crop: crop, planted_at: 2.years.ago, finished_at: 50.days.ago
FactoryBot.create :planting, crop: crop, planted_at: 150.days.ago, finished_at: 100.days.ago
crop = FactoryBot.create(:annual_crop)
FactoryBot.create(:planting, crop:, planted_at: 10.days.ago)
FactoryBot.create(:planting, crop:, planted_at: 100.days.ago, finished_at: 50.days.ago)
FactoryBot.create(:planting, crop:, planted_at: 100.days.ago, finished_at: 51.days.ago)
FactoryBot.create(:planting, crop:, planted_at: 2.years.ago, finished_at: 50.days.ago)
FactoryBot.create(:planting, crop:, planted_at: 150.days.ago, finished_at: 100.days.ago)
crop.update_lifespan_medians
crop
end

View File

@@ -4,7 +4,7 @@ require 'rails_helper'
describe "forums", js: true do
include_context 'signed in admin'
let(:forum) { create :forum }
let(:forum) { create(:forum) }
describe "navigating to forum admin with js" do
before do

View File

@@ -4,8 +4,8 @@ require 'rails_helper'
describe 'Commenting on a post' do
include_context 'signed in member'
let(:member) { create :member }
let(:post) { create :post, author: member }
let(:member) { create(:member) }
let(:post) { create(:post, author: member) }
before { visit new_comment_path post_id: post.id }
@@ -18,7 +18,7 @@ describe 'Commenting on a post' do
end
context "editing a comment" do
let(:existing_comment) { create :comment, post:, author: member }
let(:existing_comment) { create(:comment, post:, author: member) }
before do
visit edit_comment_path existing_comment

View File

@@ -3,8 +3,8 @@
require 'rails_helper'
describe "Conversations", :js do
let(:sender) { create :member }
let(:recipient) { create :member, login_name: 'beyonce' }
let(:sender) { create(:member) }
let(:recipient) { create(:member, login_name: 'beyonce') }
before do
sender.send_message(recipient, "this is the body", "something i want to say")

View File

@@ -3,8 +3,8 @@
require 'rails_helper'
describe "Conversations", :js do
let(:sender) { create :member }
let(:recipient) { create :member, login_name: 'beyonce' }
let(:sender) { create(:member) }
let(:recipient) { create(:member, login_name: 'beyonce') }
before do
sender.send_message(recipient, "this is the body", "something i want to say")

View File

@@ -3,8 +3,8 @@
require 'rails_helper'
describe "Alternate names", js: true do
let!(:alternate_eggplant) { create :alternate_eggplant }
let(:crop) { alternate_eggplant.crop }
let!(:alternate_eggplant) { create(:alternate_eggplant) }
let(:crop) { alternate_eggplant.crop }
shared_examples 'show alt names' do
it "can see alternate names on crop page" do
@@ -20,7 +20,7 @@ describe "Alternate names", js: true do
end
shared_examples 'edit alt names' do
let!(:crop_wranglers) { create_list :crop_wrangling_member, 3 }
let!(:crop_wranglers) { create_list(:crop_wrangling_member, 3) }
it "can edit alternate names" do
visit crop_path(crop)
@@ -71,8 +71,8 @@ describe "Alternate names", js: true do
end
context "When alternate name is rejected" do
let(:rejected_crop) { create :rejected_crop }
let(:pending_alt_name) { create :alternate_name, crop: rejected_crop }
let(:rejected_crop) { create(:rejected_crop) }
let(:pending_alt_name) { create(:alternate_name, crop: rejected_crop) }
it "Displays crop rejection message" do
visit alternate_name_path(pending_alt_name)

View File

@@ -3,10 +3,10 @@
require 'rails_helper'
describe "browse crops", :search do
let!(:tomato) { FactoryBot.create :tomato, :reindex }
let!(:maize) { FactoryBot.create :maize, :reindex }
let!(:pending_crop) { FactoryBot.create :crop_request, :reindex }
let!(:rejected_crop) { FactoryBot.create :rejected_crop, :reindex }
let!(:tomato) { FactoryBot.create(:tomato, :reindex) }
let!(:maize) { FactoryBot.create(:maize, :reindex) }
let!(:pending_crop) { FactoryBot.create(:crop_request, :reindex) }
let!(:rejected_crop) { FactoryBot.create(:rejected_crop, :reindex) }
shared_examples 'shows crops' do
before do

View File

@@ -3,10 +3,6 @@
require 'rails_helper'
describe "crop detail page", js: true do
before do
FactoryBot.create :plant_part, name: 'leaf'
end
subject do
# Update the medians after all the
# data has been loaded
@@ -17,7 +13,11 @@ describe "crop detail page", js: true do
page
end
let(:crop) { create :crop }
before do
FactoryBot.create(:plant_part, name: 'leaf')
end
let(:crop) { create(:crop) }
context "varieties" do
it "The crop DOES NOT have varieties" do
@@ -88,7 +88,7 @@ describe "crop detail page", js: true do
end
context "seed quantity for a crop" do
let(:seed) { create :seed, crop:, quantity: 20 }
let(:seed) { create(:seed, crop:, quantity: 20) }
it "User not signed in" do
visit crop_path(seed.crop)
@@ -159,7 +159,7 @@ describe "crop detail page", js: true do
end
context 'crop is Perennial' do
let(:crop) { FactoryBot.create :perennial_crop }
let(:crop) { FactoryBot.create(:perennial_crop) }
describe 'with no harvests' do
end
@@ -175,7 +175,7 @@ describe "crop detail page", js: true do
end
context 'crop Perennial value is null' do
let(:crop) { FactoryBot.create :crop, perennial: nil }
let(:crop) { FactoryBot.create(:crop, perennial: nil) }
describe 'with no harvests' do
end
@@ -190,7 +190,7 @@ describe "crop detail page", js: true do
before { visit crop_path(crop) }
context 'crop is an Annual' do
let(:crop) { FactoryBot.create :annual_crop }
let(:crop) { FactoryBot.create(:annual_crop) }
it { expect(page).to have_text 'Annual' }
it { expect(page).to have_text 'living and reproducing in a single year or less' }
@@ -198,7 +198,7 @@ describe "crop detail page", js: true do
end
context 'crop is Perennial' do
let(:crop) { FactoryBot.create :perennial_crop }
let(:crop) { FactoryBot.create(:perennial_crop) }
it { expect(page).to have_text 'Perennial' }
it { expect(page).to have_text 'living more than two years' }
@@ -206,7 +206,7 @@ describe "crop detail page", js: true do
end
context 'crop Perennial value is null' do
let(:crop) { FactoryBot.create :crop, perennial: nil }
let(:crop) { FactoryBot.create(:crop, perennial: nil) }
it { expect(page).not_to have_text 'Perennial' }
it { expect(page).not_to have_text 'Annual' }

View File

@@ -5,15 +5,15 @@ require 'rails_helper'
describe "crop detail page", :js, :search do
subject { page }
let!(:owner_member) { FactoryBot.create :member }
let!(:owner_member) { FactoryBot.create(:member) }
let!(:crop) { FactoryBot.create :crop, :reindex }
let!(:crop) { FactoryBot.create(:crop, :reindex) }
let(:plant_part) { FactoryBot.create :plant_part, name: 'fruit' }
let(:plant_part) { FactoryBot.create(:plant_part, name: 'fruit') }
let!(:harvest) { FactoryBot.create :harvest, crop:, owner: owner_member, plant_part: }
let!(:planting) { FactoryBot.create :planting, crop:, owner: owner_member }
let!(:seed) { FactoryBot.create :seed, crop:, owner: owner_member }
let!(:harvest) { FactoryBot.create(:harvest, crop:, owner: owner_member, plant_part:) }
let!(:planting) { FactoryBot.create(:planting, crop:, owner: owner_member) }
let!(:seed) { FactoryBot.create(:seed, crop:, owner: owner_member) }
let!(:photo1) { FactoryBot.create(:photo, owner: owner_member) }
let!(:photo2) { FactoryBot.create(:photo, owner: owner_member) }

View File

@@ -5,10 +5,10 @@ require 'rails_helper'
describe "crop wranglers", js: true do
context "signed in wrangler" do
include_context 'signed in crop wrangler'
let!(:crop_wranglers) { create_list :crop_wrangling_member, 3 }
let!(:crops) { create_list :crop, 2 }
let!(:requested_crop) { create :crop_request }
let!(:rejected_crop) { create :rejected_crop }
let!(:crop_wranglers) { create_list(:crop_wrangling_member, 3) }
let!(:crops) { create_list(:crop, 2) }
let!(:requested_crop) { create(:crop_request) }
let!(:rejected_crop) { create(:rejected_crop) }
it "sees crop wranglers listed on the crop wrangler page" do
visit root_path
@@ -71,7 +71,7 @@ end
context "signed in non-wrangler" do
include_context 'signed in member'
let!(:crop_wranglers) { create_list :crop_wrangling_member, 3 }
let!(:crop_wranglers) { create_list(:crop_wrangling_member, 3) }
it "can't see wrangling page without js", js: false do
visit root_path

View File

@@ -4,8 +4,8 @@ require 'rails_helper'
describe "Delete crop spec" do
shared_examples 'delete crop' do
let!(:pending_crop) { FactoryBot.create :crop_request }
let!(:approved_crop) { FactoryBot.create :crop }
let!(:pending_crop) { FactoryBot.create(:crop_request) }
let!(:approved_crop) { FactoryBot.create(:crop) }
it "deletes approved crop" do
visit crop_path(approved_crop)
click_link 'Actions'

View File

@@ -17,8 +17,8 @@ describe "Requesting a new crop" do
context "As a crop wrangler" do
include_context 'signed in crop wrangler'
let!(:crop) { create :crop_request }
let!(:already_approved) { create :crop }
let!(:crop) { create(:crop_request) }
let!(:already_approved) { create(:crop) }
it "Approve a request" do
visit edit_crop_path(crop)

View File

@@ -3,7 +3,7 @@
require 'rails_helper'
describe "Requesting Crops" do
let!(:requested_crop) { create :crop, requester: member, approval_status: 'pending', name: 'puha for dinner' }
let!(:requested_crop) { create(:crop, requester: member, approval_status: 'pending', name: 'puha for dinner') }
context 'signed in' do
include_context 'signed in member'

View File

@@ -3,8 +3,8 @@
require 'rails_helper'
describe "Scientific names", js: true do
let!(:zea_mays) { create :zea_mays }
let(:crop) { zea_mays.crop }
let!(:zea_mays) { create(:zea_mays) }
let(:crop) { zea_mays.crop }
it "Display scientific names on crop page" do
visit crop_path(zea_mays.crop)
@@ -19,7 +19,7 @@ describe "Scientific names", js: true do
end
context "User is a crop wrangler" do
let!(:crop_wranglers) { create_list :crop_wrangling_member, 3 }
let!(:crop_wranglers) { create_list(:crop_wrangling_member, 3) }
include_context 'signed in crop wrangler'
it "Crop wranglers can edit scientific names" do
@@ -75,8 +75,8 @@ describe "Scientific names", js: true do
end
context "When scientific name is pending" do
let(:pending_crop) { create :crop_request }
let(:pending_sci_name) { create :scientific_name, crop: pending_crop }
let(:pending_crop) { create(:crop_request) }
let(:pending_sci_name) { create(:scientific_name, crop: pending_crop) }
it "Displays crop pending message" do
visit scientific_name_path(pending_sci_name)

View File

@@ -3,7 +3,7 @@
require 'rails_helper'
describe "browse crops" do
let(:tomato) { FactoryBot.create :tomato }
let(:tomato) { FactoryBot.create(:tomato) }
it "Show crop info" do
visit crop_path(tomato)
@@ -11,9 +11,9 @@ describe "browse crops" do
end
describe "shows varieties" do
let!(:cherry) { FactoryBot.create :crop, name: 'cherry tomato', parent: tomato }
let!(:heirloom) { FactoryBot.create :crop, name: 'heirloom tomato', parent: tomato }
let!(:striped) { FactoryBot.create :crop, name: 'striped tomato', parent: heirloom }
let!(:cherry) { FactoryBot.create(:crop, name: 'cherry tomato', parent: tomato) }
let!(:heirloom) { FactoryBot.create(:crop, name: 'heirloom tomato', parent: tomato) }
let!(:striped) { FactoryBot.create(:crop, name: 'striped tomato', parent: heirloom) }
before { visit crop_path(tomato) }
@@ -23,10 +23,10 @@ describe "browse crops" do
end
context "when the most recently created harvest is not the most recently harvested" do
before { FactoryBot.create_list :harvest, 20, crop: tomato, harvested_at: 1.year.ago, created_at: 1.minute.ago }
before { FactoryBot.create_list(:harvest, 20, crop: tomato, harvested_at: 1.year.ago, created_at: 1.minute.ago) }
let!(:most_recent_harvest) do
FactoryBot.create :harvest, crop: tomato, harvested_at: 60.minutes.ago, created_at: 10.minutes.ago
FactoryBot.create(:harvest, crop: tomato, harvested_at: 60.minutes.ago, created_at: 10.minutes.ago)
end
it "Shows most recently harvested harvest" do
@@ -36,10 +36,10 @@ describe "browse crops" do
end
context "when the most recently created planting is not the most recently planted" do
before { FactoryBot.create_list :planting, 20, crop: tomato, planted_at: 1.year.ago, created_at: 1.minute.ago }
before { FactoryBot.create_list(:planting, 20, crop: tomato, planted_at: 1.year.ago, created_at: 1.minute.ago) }
let!(:most_recent_planting) do
FactoryBot.create :planting, crop: tomato, planted_at: 60.minutes.ago, created_at: 10.minutes.ago
FactoryBot.create(:planting, crop: tomato, planted_at: 60.minutes.ago, created_at: 10.minutes.ago)
end
it "Shows most recently planted planting" do

View File

@@ -9,7 +9,7 @@ describe "Gardens" do
include_context 'signed in member'
let(:garden) { member.gardens.first }
let(:other_member_garden) { FactoryBot.create :garden }
let(:other_member_garden) { FactoryBot.create(:garden) }
describe '#index' do
shared_examples "has buttons bar at top" do

View File

@@ -6,10 +6,10 @@ describe "Planting a crop", js: true do
context 'signed in' do
include_context 'signed in member'
# name is aaa to ensure it is ordered first
let!(:garden) { create :garden, name: 'aaa', owner: member }
let!(:planting) { create :planting, garden:, owner: garden.owner, planted_at: Date.parse("2013-3-10") }
let!(:tomato) { create :tomato }
let!(:finished_planting) { create :finished_planting, owner: garden.owner, garden:, crop: tomato }
let!(:garden) { create(:garden, name: 'aaa', owner: member) }
let!(:planting) { create(:planting, garden:, owner: garden.owner, planted_at: Date.parse("2013-3-10")) }
let!(:tomato) { create(:tomato) }
let!(:finished_planting) { create(:finished_planting, owner: garden.owner, garden:, crop: tomato) }
it "View gardens" do
visit gardens_path
@@ -74,8 +74,8 @@ describe "Planting a crop", js: true do
end
context 'When a garden has a garden type' do
let(:garden_type) { create :garden_type }
let(:garden_with_type) { create :garden, garden_type: }
let(:garden_type) { create(:garden_type) }
let(:garden_with_type) { create(:garden, garden_type:) }
it "Shows a garden type for a garden" do
visit garden_path(garden_with_type)

View File

@@ -6,11 +6,11 @@ require 'custom_matchers'
describe "Gardens#index", :js do
context "Logged in as member" do
include_context 'signed in member'
let(:member) { FactoryBot.create :member, login_name: 'shadow' }
let(:member) { FactoryBot.create(:member, login_name: 'shadow') }
context "with 10 gardens" do
before do
FactoryBot.create_list :garden, 10, owner: member
FactoryBot.create_list(:garden, 10, owner: member)
visit member_gardens_path(member_slug: member.slug)
end
@@ -28,8 +28,8 @@ describe "Gardens#index", :js do
end
context "with inactive gardens" do
let!(:active_garden) { FactoryBot.create :garden, name: "My active garden", owner: member }
let!(:inactive_garden) { FactoryBot.create :inactive_garden, name: "retired garden", owner: member }
let!(:active_garden) { FactoryBot.create(:garden, name: "My active garden", owner: member) }
let!(:inactive_garden) { FactoryBot.create(:inactive_garden, name: "retired garden", owner: member) }
before { visit member_gardens_path(member_slug: member.slug) }
@@ -55,10 +55,10 @@ describe "Gardens#index", :js do
let(:tomato) { FactoryBot.create(:tomato) }
let!(:planting) do
FactoryBot.create :planting, owner: member, crop: maize, garden: member.gardens.first
FactoryBot.create(:planting, owner: member, crop: maize, garden: member.gardens.first)
end
let!(:finished_planting) do
FactoryBot.create :finished_planting, owner: member, crop: tomato, garden: member.gardens.first
FactoryBot.create(:finished_planting, owner: member, crop: tomato, garden: member.gardens.first)
end
before do
@@ -77,8 +77,8 @@ describe "Gardens#index", :js do
describe 'badges' do
let(:garden) { member.gardens.first }
let(:member) { FactoryBot.create :member, login_name: 'robbieburns' }
let(:crop) { FactoryBot.create :crop }
let(:member) { FactoryBot.create(:member, login_name: 'robbieburns') }
let(:crop) { FactoryBot.create(:crop) }
before do
# time to harvest = 50 day
@@ -101,11 +101,11 @@ describe "Gardens#index", :js do
describe 'harvest still growing' do
let!(:planting) do
FactoryBot.create :planting,
FactoryBot.create(:planting,
crop:,
owner: member,
garden:,
planted_at: Time.zone.today
planted_at: Time.zone.today)
end
it { expect(page).to have_link href: planting_path(planting) }
@@ -116,10 +116,10 @@ describe "Gardens#index", :js do
describe 'harvesting now' do
let!(:planting) do
FactoryBot.create :planting,
FactoryBot.create(:planting,
crop:,
owner: member, garden:,
planted_at: 51.days.ago
planted_at: 51.days.ago)
end
it { expect(crop.median_days_to_first_harvest).to eq 50 }
@@ -131,9 +131,9 @@ describe "Gardens#index", :js do
describe 'super late' do
let!(:planting) do
FactoryBot.create :planting,
FactoryBot.create(:planting,
crop:, owner: member,
garden:, planted_at: 260.days.ago
garden:, planted_at: 260.days.ago)
end
it { expect(page).to have_text 'super late' }

View File

@@ -5,13 +5,13 @@ require 'rails_helper'
describe "browse harvests", :search do
subject { page }
let!(:harvest) { create :harvest, owner: member }
let!(:harvest) { create(:harvest, owner: member) }
context 'signed in' do
include_context 'signed in member'
describe 'blank optional fields' do
let!(:harvest) { create :harvest, :no_description, :reindex }
let!(:harvest) { create(:harvest, :no_description, :reindex) }
before do
Harvest.reindex
@@ -24,7 +24,7 @@ describe "browse harvests", :search do
end
describe "filled in optional fields" do
let!(:harvest) { create :harvest, :long_description, :reindex }
let!(:harvest) { create(:harvest, :long_description, :reindex) }
before do
Harvest.reindex

View File

@@ -6,8 +6,8 @@ require 'custom_matchers'
describe "Harvesting a crop", :js, :search do
context 'signed in' do
include_context 'signed in member'
let!(:maize) { create :maize }
let!(:plant_part) { create :plant_part }
let!(:maize) { create(:maize) }
let!(:plant_part) { create(:plant_part) }
before { visit new_harvest_path }
@@ -65,7 +65,7 @@ describe "Harvesting a crop", :js, :search do
end
describe "Harvesting from planting page" do
let!(:planting) { create :planting, crop: maize, owner: member, garden: member.gardens.first }
let!(:planting) { create(:planting, crop: maize, owner: member, garden: member.gardens.first) }
before do
visit planting_path(planting)
@@ -79,8 +79,8 @@ describe "Harvesting a crop", :js, :search do
end
context "Editing a harvest" do
let(:existing_harvest) { create :harvest, crop: maize, owner: member }
let!(:other_plant_part) { create :plant_part, name: 'chocolate' }
let(:existing_harvest) { create(:harvest, crop: maize, owner: member) }
let!(:other_plant_part) { create(:plant_part, name: 'chocolate') }
before do
visit harvest_path(existing_harvest)
@@ -106,12 +106,12 @@ describe "Harvesting a crop", :js, :search do
context "Viewing a harvest" do
let(:existing_harvest) do
create :harvest, crop: maize, owner: member,
harvested_at: Time.zone.today
create(:harvest, crop: maize, owner: member,
harvested_at: Time.zone.today)
end
let!(:existing_planting) do
create :planting, crop: maize, owner: member,
planted_at: Time.zone.yesterday
create(:planting, crop: maize, owner: member,
planted_at: Time.zone.yesterday)
end
before do

View File

@@ -5,18 +5,18 @@ require 'rails_helper'
describe "home page", :search do
subject { page }
let(:member) { FactoryBot.create :member }
let(:member) { FactoryBot.create(:member) }
let(:photo) { FactoryBot.create :photo, owner: member }
let(:crop) { FactoryBot.create :crop, created_at: 1.day.ago }
let(:photo) { FactoryBot.create(:photo, owner: member) }
let(:crop) { FactoryBot.create(:crop, created_at: 1.day.ago) }
let(:planting) { FactoryBot.create :planting, owner: member, crop: }
let(:seed) { FactoryBot.create :tradable_seed, owner: member, crop: }
let(:harvest) { FactoryBot.create :harvest, owner: member, crop: }
let(:planting) { FactoryBot.create(:planting, owner: member, crop:) }
let(:seed) { FactoryBot.create(:tradable_seed, owner: member, crop:) }
let(:harvest) { FactoryBot.create(:harvest, owner: member, crop:) }
let!(:tradable_seed) { FactoryBot.create :tradable_seed, :reindex, finished: false }
let!(:finished_seed) { FactoryBot.create :tradable_seed, :reindex, finished: true }
let!(:untradable_seed) { FactoryBot.create :untradable_seed, :reindex }
let!(:tradable_seed) { FactoryBot.create(:tradable_seed, :reindex, finished: false) }
let!(:finished_seed) { FactoryBot.create(:tradable_seed, :reindex, finished: true) }
let!(:untradable_seed) { FactoryBot.create(:untradable_seed, :reindex) }
before do
# Add photos, so they can appear on home page

View File

@@ -64,8 +64,8 @@ describe 'Likeable', :js, search: true do
end
describe 'crops#show' do
let(:crop) { FactoryBot.create :crop }
let(:planting) { FactoryBot.create :planting, owner: member, crop: }
let(:crop) { FactoryBot.create(:crop) }
let(:planting) { FactoryBot.create(:planting, owner: member, crop:) }
let(:path) { crop_path(crop) }
before { planting.photos << photo }

View File

@@ -5,7 +5,7 @@ require 'rails_helper'
describe "Changing locales", js: true do
after { I18n.locale = :en }
let(:member) { FactoryBot.create :member }
let(:member) { FactoryBot.create(:member) }
it "Locale can be set with a query param" do
# Login then log out, to ensure we're now logged out

View File

@@ -3,8 +3,8 @@
require 'rails_helper'
describe "members list" do
let!(:spammer) { FactoryBot.create :member }
let!(:admin) { FactoryBot.create :admin_member }
let!(:spammer) { FactoryBot.create(:member) }
let!(:admin) { FactoryBot.create(:admin_member) }
context 'logged in as admin' do
include_context 'signed in admin'

View File

@@ -128,7 +128,7 @@ describe "member deletion" do
end
it "replaces comments on others' posts with deletion note, leaving post intact" do
FactoryBot.create :comment, post: othermemberpost, author: member, body: 'i am deleting my account'
FactoryBot.create(:comment, post: othermemberpost, author: member, body: 'i am deleting my account')
visit post_path(othermemberpost)
expect(page).not_to have_content member.login_name
@@ -156,11 +156,11 @@ describe "member deletion" do
context "for a crop wrangler" do
let(:member) { FactoryBot.create(:crop_wrangling_member) }
let!(:ex_wrangler) { FactoryBot.create(:crop_wrangling_member, login_name: "ex_wrangler") }
let(:otherwrangler) { FactoryBot.create(:crop_wrangling_member) }
let(:crop) { FactoryBot.create(:crop, creator: member) }
before { FactoryBot.create(:cropbot) }
let!(:ex_wrangler) { FactoryBot.create(:crop_wrangling_member, login_name: "ex_wrangler") }
before { FactoryBot.create(:cropbot) }
it "leaves crops behind" do
login_as(otherwrangler)

View File

@@ -4,7 +4,7 @@ require 'rails_helper'
describe "follows", :js do
context "when signed out" do
let(:member) { create :member }
let(:member) { create(:member) }
it "follow buttons on member profile page" do
visit member_path(member)
@@ -15,7 +15,7 @@ describe "follows", :js do
context "when signed in" do
include_context 'signed in member'
let(:other_member) { create :member }
let(:other_member) { create(:member) }
it "your profile doesn't have a follow button" do
visit member_path(member)

View File

@@ -4,12 +4,12 @@ require 'rails_helper'
describe "members list" do
context "list all members" do
let!(:member1) { create :member, login_name: "Archaeopteryx", confirmed_at: Time.zone.parse('2013-02-10') }
let!(:member2) { create :member, login_name: "Zephyrosaurus", confirmed_at: Time.zone.parse('2014-01-11') }
let!(:member3) { create :member, login_name: "Testingname", confirmed_at: Time.zone.parse('2014-05-09') }
subject { page.all("#maincontainer h4.login-name") }
let!(:member1) { create(:member, login_name: "Archaeopteryx", confirmed_at: Time.zone.parse('2013-02-10')) }
let!(:member2) { create(:member, login_name: "Zephyrosaurus", confirmed_at: Time.zone.parse('2014-01-11')) }
let!(:member3) { create(:member, login_name: "Testingname", confirmed_at: Time.zone.parse('2014-05-09')) }
before do
visit members_path
expect(page).to have_css "#sort"

View File

@@ -3,10 +3,10 @@
require 'rails_helper'
describe "member profile", js: true do
let(:member) { create :member }
let(:other_member) { create :member }
let(:admin_member) { create :admin_member }
let(:crop_wrangler) { create :crop_wrangling_member }
let(:member) { create(:member) }
let(:other_member) { create(:member) }
let(:admin_member) { create(:admin_member) }
let(:crop_wrangler) { create(:crop_wrangling_member) }
shared_examples 'member details' do
it "basic details on member profile page" do
@@ -23,7 +23,7 @@ describe "member profile", js: true do
context "location" do
it "member has set location" do
london_member = create :london_member
london_member = create(:london_member)
visit member_path(london_member)
expect(page).to have_content(london_member.location)
expect(page).to have_css("#membermap")
@@ -40,7 +40,7 @@ describe "member profile", js: true do
context "email privacy" do
it "public email address" do
public_member = create :public_member
public_member = create(:public_member)
visit member_path(public_member)
expect(page).to have_content public_member.email
end
@@ -62,10 +62,10 @@ describe "member profile", js: true do
end
context "with some activity" do
let!(:planting) { FactoryBot.create :planting, owner: member }
let!(:harvest) { FactoryBot.create :harvest, owner: member }
let!(:seed) { FactoryBot.create :seed, owner: member }
let!(:post) { FactoryBot.create :post, author: member }
let!(:planting) { FactoryBot.create(:planting, owner: member) }
let!(:harvest) { FactoryBot.create(:harvest, owner: member) }
let!(:seed) { FactoryBot.create(:seed, owner: member) }
let!(:post) { FactoryBot.create(:post, author: member) }
before { visit member_path(member) }
@@ -77,13 +77,13 @@ describe "member profile", js: true do
end
it "twitter link" do
twitter_auth = create :authentication, member: member
twitter_auth = create(:authentication, member:)
visit member_path(member)
expect(page).to have_link twitter_auth.name, href: "https://twitter.com/#{twitter_auth.name}"
end
it "flickr link" do
flickr_auth = create :flickr_authentication, member: member
flickr_auth = create(:flickr_authentication, member:)
visit member_path(member)
expect(page).to have_link flickr_auth.name, href: "https://flickr.com/photos/#{flickr_auth.uid}"
end
@@ -110,10 +110,10 @@ describe "member profile", js: true do
shared_examples 'member activity' do
context 'member has plantings' do
let!(:new_planting) { FactoryBot.create :planting, owner: member, planted_at: Time.zone.now }
let!(:old_planting) { FactoryBot.create :planting, owner: member, planted_at: 3.years.ago }
let!(:finished_planting) { FactoryBot.create :finished_planting, owner: member }
let!(:no_planted_at_planting) { FactoryBot.create :planting, owner: member, planted_at: nil }
let!(:new_planting) { FactoryBot.create(:planting, owner: member, planted_at: Time.zone.now) }
let!(:old_planting) { FactoryBot.create(:planting, owner: member, planted_at: 3.years.ago) }
let!(:finished_planting) { FactoryBot.create(:finished_planting, owner: member) }
let!(:no_planted_at_planting) { FactoryBot.create(:planting, owner: member, planted_at: nil) }
before { visit member_path(member) }
@@ -124,7 +124,7 @@ describe "member profile", js: true do
end
context 'member has seeds' do
let!(:seed) { FactoryBot.create :seed, owner: member }
let!(:seed) { FactoryBot.create(:seed, owner: member) }
before { visit member_path(member) }
@@ -132,7 +132,7 @@ describe "member profile", js: true do
end
context 'member has harvests' do
let!(:harvest) { FactoryBot.create :harvest, owner: member }
let!(:harvest) { FactoryBot.create(:harvest, owner: member) }
before { visit member_path(member) }
@@ -140,7 +140,7 @@ describe "member profile", js: true do
end
context 'member has posts' do
let!(:post) { FactoryBot.create :post, author: member }
let!(:post) { FactoryBot.create(:post, author: member) }
before { visit member_path(member) }
@@ -148,8 +148,8 @@ describe "member profile", js: true do
end
context 'member has comments' do
let(:post) { FactoryBot.create :post }
let!(:comment) { FactoryBot.create :comment, post:, author: member }
let(:post) { FactoryBot.create(:post) }
let!(:comment) { FactoryBot.create(:comment, post:, author: member) }
before { visit member_path(member) }
@@ -158,8 +158,8 @@ describe "member profile", js: true do
end
context 'photos' do
let(:planting) { FactoryBot.create :planting, owner: member }
let!(:photo) { FactoryBot.create :photo, owner: member, plantings: [planting] }
let(:planting) { FactoryBot.create(:planting, owner: member) }
let!(:photo) { FactoryBot.create(:photo, owner: member, plantings: [planting]) }
before { visit member_path(member) }
@@ -168,7 +168,25 @@ describe "member profile", js: true do
end
context 'plantings' do
let(:crop) { FactoryBot.create :crop }
let(:crop) { FactoryBot.create(:crop) }
let(:growing_planting) do
FactoryBot.create(:planting,
crop:,
owner: member,
planted_at: Time.zone.today)
end
let(:harvesting_planting) do
FactoryBot.create(:planting,
crop:,
owner: member,
planted_at: 51.days.ago)
end
let(:super_late_planting) do
FactoryBot.create(:planting,
crop:, owner: member,
planted_at: 260.days.ago)
end
before do
# time to harvest = 50 day
# time to finished = 90 days
@@ -190,26 +208,6 @@ describe "member profile", js: true do
visit member_path(member)
end
let(:growing_planting) do
FactoryBot.create :planting,
crop:,
owner: member,
planted_at: Time.zone.today
end
let(:harvesting_planting) do
FactoryBot.create :planting,
crop:,
owner: member,
planted_at: 51.days.ago
end
let(:super_late_planting) do
FactoryBot.create :planting,
crop:, owner: member,
planted_at: 260.days.ago
end
it { expect(page).to have_link(href: planting_path(growing_planting)) }
it { expect(page).to have_link(href: planting_path(harvesting_planting)) }
it { expect(page).to have_link(href: planting_path(super_late_planting)) }

View File

@@ -7,25 +7,25 @@ describe 'Test with visual testing', js: true, type: :feature do
# on every run, so doesn't trigger percy to see changes
before { Faker::Config.random = Random.new(42) }
let!(:member) { FactoryBot.create :member, login_name: 'percy', preferred_avatar_uri: gravatar }
let!(:crop_wrangler) { FactoryBot.create :crop_wrangling_member, login_name: 'croppy', preferred_avatar_uri: gravatar2 }
let!(:admin_user) { FactoryBot.create :admin_member, login_name: 'janitor', preferred_avatar_uri: gravatar3 }
let!(:someone_else) { FactoryBot.create :edinburgh_member, login_name: 'ruby', preferred_avatar_uri: gravatar4 }
let!(:member) { FactoryBot.create(:member, login_name: 'percy', preferred_avatar_uri: gravatar) }
let!(:crop_wrangler) { FactoryBot.create(:crop_wrangling_member, login_name: 'croppy', preferred_avatar_uri: gravatar2) }
let!(:admin_user) { FactoryBot.create(:admin_member, login_name: 'janitor', preferred_avatar_uri: gravatar3) }
let!(:someone_else) { FactoryBot.create(:edinburgh_member, login_name: 'ruby', preferred_avatar_uri: gravatar4) }
let(:gravatar) { 'https://secure.gravatar.com/avatar/d021434aac03a7f7c7c0de60d07dad1c?size=150&default=identicon' }
let(:gravatar2) { 'https://secure.gravatar.com/avatar/353d83d3677b142520987e1936fd093c?size=150&default=identicon' }
let(:gravatar3) { 'https://secure.gravatar.com/avatar/622db62c7beab8d5d8b7a80aa6385b2f?size=150&default=identicon' }
let(:gravatar4) { 'https://secure.gravatar.com/avatar/7fd767571ff5ceefc7a687a543b2c402?size=150&default=identicon' }
let!(:tomato) { FactoryBot.create :tomato, creator: someone_else }
let(:plant_part) { FactoryBot.create :plant_part, name: 'fruit' }
let!(:tomato) { FactoryBot.create(:tomato, creator: someone_else) }
let(:plant_part) { FactoryBot.create(:plant_part, name: 'fruit') }
let(:tomato_photo) do
FactoryBot.create :photo,
FactoryBot.create(:photo,
title: 'look at my tomatoes',
owner: member,
fullsize_url: 'https://farm1.staticflickr.com/177/432250619_2fe19d067d_z.jpg',
thumbnail_url: 'https://farm1.staticflickr.com/177/432250619_2fe19d067d_q.jpg'
thumbnail_url: 'https://farm1.staticflickr.com/177/432250619_2fe19d067d_q.jpg')
end
let(:post_body) do
"So, um, watering's important. Yep. Very important.
@@ -66,7 +66,7 @@ rest of the garden.
[apple](crop)
"
end
let(:post) { FactoryBot.create :post, author: member, subject: "Watering", body: post_body }
let(:post) { FactoryBot.create(:post, author: member, subject: "Watering", body: post_body) }
before do
# Freeze time, so we don't have variations in timestamps on the page
@@ -80,23 +80,23 @@ rest of the garden.
eggplant: 'https://farm8.staticflickr.com/7856/47068736892_1af9b8a4ba_q.jpg',
maize: 'https://farm66.staticflickr.com/65535/46739264475_7cb55b2cbb_q.jpg'
}.each do |crop_type, photo_url|
crop = FactoryBot.create crop_type, creator: someone_else
crop = FactoryBot.create(crop_type, creator: someone_else)
crop.reindex
owner = FactoryBot.create :interesting_member, login_name: crop_type.to_s.reverse, email: "#{crop.name}@example.com"
planting = FactoryBot.create :planting, crop: crop, owner: owner, garden: owner.gardens.first
owner = FactoryBot.create(:interesting_member, login_name: crop_type.to_s.reverse, email: "#{crop.name}@example.com")
planting = FactoryBot.create(:planting, crop:, owner:, garden: owner.gardens.first)
photo = FactoryBot.create(:photo, owner:,
thumbnail_url: "#{photo_url}_q.jpg", fullsize_url: "#{photo_url}_z.jpg")
planting.photos << photo
harvest = FactoryBot.create :harvest, crop: crop, owner: owner, plant_part: plant_part
harvest = FactoryBot.create(:harvest, crop:, owner:, plant_part:)
harvest.photos << photo
FactoryBot.create :planting, crop: tomato,
FactoryBot.create(:planting, crop: tomato,
planted_at: 1.year.ago, finished_at: 2.months.ago,
sunniness: 'sun', planted_from: 'seed'
sunniness: 'sun', planted_from: 'seed')
end
FactoryBot.create :seed, owner: member, tradable_to: 'nationally'
FactoryBot.create :seed, owner: someone_else, tradable_to: 'nationally'
FactoryBot.create(:seed, owner: member, tradable_to: 'nationally')
FactoryBot.create(:seed, owner: someone_else, tradable_to: 'nationally')
end
after { Timecop.return }
@@ -111,16 +111,16 @@ rest of the garden.
describe 'crops' do
it 'loads crops#show' do
FactoryBot.create :planting, planted_at: 2.months.ago, sunniness: 'shade', planted_from: 'seedling'
FactoryBot.create(:planting, planted_at: 2.months.ago, sunniness: 'shade', planted_from: 'seedling')
planting = FactoryBot.create :planting, planted_at: 1.year.ago, sunniness: 'sun', planted_from: 'seed', crop: tomato
planting = FactoryBot.create(:planting, planted_at: 1.year.ago, sunniness: 'sun', planted_from: 'seed', crop: tomato)
FactoryBot.create(:harvest,
crop: tomato,
plant_part: FactoryBot.create(:plant_part, name: 'berry'),
planting:,
harvested_at: 1.day.ago)
post = FactoryBot.create :post, subject: 'tomatoes are delicious'
post = FactoryBot.create(:post, subject: 'tomatoes are delicious')
tomato.posts << post
visit crop_path(tomato)
@@ -141,7 +141,7 @@ rest of the garden.
end
it 'load another member plantings#show' do
planting = FactoryBot.create :planting, crop: tomato, owner: someone_else, garden: someone_else.gardens.first
planting = FactoryBot.create(:planting, crop: tomato, owner: someone_else, garden: someone_else.gardens.first)
visit planting_path(planting)
page.percy_snapshot(page, name: "#{prefix}/plantings#show")
end
@@ -155,14 +155,14 @@ rest of the garden.
it 'gardens#show' do
# a garden
garden = FactoryBot.create :garden, name: 'paradise', owner: member
garden = FactoryBot.create(:garden, name: 'paradise', owner: member)
# with some lettuce (finished)
FactoryBot.create(
:planting, crop: FactoryBot.create(:crop, name: 'lettuce'),
garden:, owner: member, finished_at: 2.weeks.ago
)
# tomato still growing
tomato_planting = FactoryBot.create :planting, garden: garden, owner: member, crop: tomato
tomato_planting = FactoryBot.create(:planting, garden:, owner: member, crop: tomato)
tomato_photo.plantings << tomato_planting
visit garden_path(garden)
page.percy_snapshot(page, name: "#{prefix}/gardens#show")
@@ -176,10 +176,10 @@ rest of the garden.
end
it 'loads another members#show' do
FactoryBot.create :planting, owner: someone_else, created_at: 30.days.ago, crop: tomato
FactoryBot.create :planting, owner: someone_else, created_at: 24.days.ago, crop: tomato
FactoryBot.create :post, author: someone_else, created_at: 4.days.ago, subject: 'waiting for my tomatoes'
FactoryBot.create :harvest, owner: someone_else, created_at: 1.day.ago, crop: tomato
FactoryBot.create(:planting, owner: someone_else, created_at: 30.days.ago, crop: tomato)
FactoryBot.create(:planting, owner: someone_else, created_at: 24.days.ago, crop: tomato)
FactoryBot.create(:post, author: someone_else, created_at: 4.days.ago, subject: 'waiting for my tomatoes')
FactoryBot.create(:harvest, owner: someone_else, created_at: 1.day.ago, crop: tomato)
visit member_path(someone_else)
page.percy_snapshot(page, name: "#{prefix}/members#show")
@@ -188,18 +188,18 @@ rest of the garden.
describe 'posts' do
it 'loads posts#show' do
FactoryBot.create :comment, post: post
FactoryBot.create :comment, post: post
FactoryBot.create(:comment, post:)
FactoryBot.create(:comment, post:)
visit post_path(post)
page.percy_snapshot(page, name: "#{prefix}/posts#show")
end
it 'loads posts#index' do
Member.all.limit(5).each do |member|
FactoryBot.create_list :post, 12, author: member
FactoryBot.create_list(:post, 12, author: member)
end
Post.all.order(id: :desc).limit(4) do |post|
FactoryBot.create_list :comment, rand(1..5), post:
FactoryBot.create_list(:comment, rand(1..5), post:)
end
visit posts_path
page.percy_snapshot(page, name: "#{prefix}/posts#index")
@@ -250,7 +250,7 @@ rest of the garden.
include_examples 'visit pages'
it 'load my plantings#show' do
planting = FactoryBot.create :planting, crop: tomato, owner: member, garden: member.gardens.first
planting = FactoryBot.create(:planting, crop: tomato, owner: member, garden: member.gardens.first)
visit planting_path(planting)
page.percy_snapshot(page, name: "#{prefix}/self/plantings#show")
end
@@ -261,7 +261,7 @@ rest of the garden.
end
it 'load my gardens#show' do
garden = FactoryBot.create :garden, name: 'paradise', owner: member
garden = FactoryBot.create(:garden, name: 'paradise', owner: member)
visit garden_path(garden)
page.percy_snapshot(page, name: "#{prefix}/self/gardens#show")
end
@@ -306,19 +306,19 @@ rest of the garden.
describe '#edit' do
it 'loads gardens#edit' do
garden = FactoryBot.create :garden, owner: member
garden = FactoryBot.create(:garden, owner: member)
visit edit_garden_path(garden)
page.percy_snapshot(page, name: "#{prefix}/gardens#edit")
end
it 'loads harvests#edit' do
harvest = FactoryBot.create :harvest, owner: member
harvest = FactoryBot.create(:harvest, owner: member)
visit edit_harvest_path(harvest)
page.percy_snapshot(page, name: "#{prefix}/harvests#edit")
end
it 'loads planting#edit' do
planting = FactoryBot.create :planting, owner: member
planting = FactoryBot.create(:planting, owner: member)
visit edit_planting_path(planting)
page.percy_snapshot(page, name: "#{prefix}/plantings#edit")
end
@@ -350,7 +350,7 @@ rest of the garden.
context 'wrangling crops' do
include_context 'signed in crop wrangler'
let!(:candy) { FactoryBot.create :crop_request, name: 'candy' }
let!(:candy) { FactoryBot.create(:crop_request, name: 'candy') }
it 'crop wrangling page' do
visit wrangle_crops_path

View File

@@ -6,7 +6,7 @@ describe "new photo page" do
context "signed in member" do
include_context 'signed in member'
context "viewing a planting" do
let(:planting) { FactoryBot.create :planting, owner: member }
let(:planting) { FactoryBot.create(:planting, owner: member) }
it "add photo" do
visit planting_path(planting)
@@ -20,7 +20,7 @@ describe "new photo page" do
end
context "viewing a harvest" do
let(:harvest) { FactoryBot.create :harvest, owner: member }
let(:harvest) { FactoryBot.create(:harvest, owner: member) }
it "add photo" do
visit harvest_path(harvest)
@@ -33,7 +33,7 @@ describe "new photo page" do
end
context "viewing a garden" do
let(:garden) { FactoryBot.create :garden, owner: member }
let(:garden) { FactoryBot.create(:garden, owner: member) }
it "add photo" do
visit garden_path(garden)
@@ -46,7 +46,7 @@ describe "new photo page" do
end
describe "viewing a seed" do
let(:seed) { FactoryBot.create :seed, owner: member }
let(:seed) { FactoryBot.create(:seed, owner: member) }
it "add photo" do
visit seed_path(seed)

View File

@@ -6,8 +6,8 @@ describe "show photo page" do
context "signed in member" do
include_context 'signed in member'
context "linked to planting" do
let(:planting) { create :planting }
let(:photo) { create :photo, owner: planting.owner }
let(:planting) { create(:planting) }
let(:photo) { create(:photo, owner: planting.owner) }
context "shows linkback to planting" do
before do
@@ -25,8 +25,8 @@ describe "show photo page" do
end
context "linked to harvest" do
let(:photo) { create :photo, owner: harvest.owner }
let(:harvest) { create :harvest }
let(:photo) { create(:photo, owner: harvest.owner) }
let(:harvest) { create(:harvest) }
context "shows linkback to harvest" do
before do
@@ -40,8 +40,8 @@ describe "show photo page" do
end
context "linked to garden" do
let(:photo) { create :photo, owner: garden.owner }
let(:garden) { create :garden }
let(:photo) { create(:photo, owner: garden.owner) }
let(:garden) { create(:garden) }
context "shows linkback to garden" do
before do
@@ -55,8 +55,8 @@ describe "show photo page" do
end
context "linked to seed" do
let(:photo) { create :photo, owner: seed.owner }
let(:seed) { create :seed }
let(:photo) { create(:photo, owner: seed.owner) }
let(:seed) { create(:seed) }
context "shows linkback to seed" do
before do

View File

@@ -3,11 +3,11 @@
require "rails_helper"
describe "User searches" do
let!(:located_member) { create :member, location: "Philippines" }
let!(:maize) { create :maize }
let(:garden) { create :garden, owner: located_member }
let!(:seed1) { create :seed, owner: located_member }
let!(:planting) { create :planting, garden:, owner: located_member, planted_at: Date.parse("2013-3-10") }
let!(:located_member) { create(:member, location: "Philippines") }
let!(:maize) { create(:maize) }
let(:garden) { create(:garden, owner: located_member) }
let!(:seed1) { create(:seed, owner: located_member) }
let!(:planting) { create(:planting, garden:, owner: located_member, planted_at: Date.parse("2013-3-10")) }
describe "with a valid place" do
before do

View File

@@ -4,7 +4,7 @@ require 'rails_helper'
require 'capybara/email/rspec'
describe "Planting reminder email", :js do
let(:member) { create :member }
let(:member) { create(:member) }
let(:mail) { NotifierMailer.planting_reminder(member) }
# Unfortunately, we can't use the default url options for ActionMailer as configured in
@@ -30,8 +30,8 @@ describe "Planting reminder email", :js do
context "when member has some plantings" do
# Bangs are used on the following 2 let blocks in order to ensure that the plantings are present
# in the database before the email is generated: otherwise, they won't be present in the email.
let!(:p1) { FactoryBot.create :predicatable_planting, planted_at: 10.days.ago, garden: member.gardens.first, owner: member }
let!(:p2) { FactoryBot.create :predicatable_planting, planted_at: 30.days.ago, garden: member.gardens.first, owner: member }
let!(:p1) { FactoryBot.create(:predicatable_planting, planted_at: 10.days.ago, garden: member.gardens.first, owner: member) }
let!(:p2) { FactoryBot.create(:predicatable_planting, planted_at: 30.days.ago, garden: member.gardens.first, owner: member) }
describe "lists plantings" do
it { expect(mail).to have_content "Progress report" }
@@ -50,10 +50,10 @@ describe "Planting reminder email", :js do
context "when member has some harvests" do
# Bangs are used on the following 2 let blocks in order to ensure that the plantings are present
# in the database before the spec is run.
let!(:p1) { FactoryBot.create :predicatable_planting, garden: member.gardens.first, owner: member, planted_at: 20.days.ago }
let!(:p2) { FactoryBot.create :predicatable_planting, garden: member.gardens.first, owner: member }
let!(:h1) { FactoryBot.create :harvest, owner: member, planting: p1, harvested_at: 1.day.ago }
let!(:h2) { FactoryBot.create :harvest, owner: member, planting: p2, harvested_at: 3.days.ago }
let!(:p1) { FactoryBot.create(:predicatable_planting, garden: member.gardens.first, owner: member, planted_at: 20.days.ago) }
let!(:p2) { FactoryBot.create(:predicatable_planting, garden: member.gardens.first, owner: member) }
let!(:h1) { FactoryBot.create(:harvest, owner: member, planting: p1, harvested_at: 1.day.ago) }
let!(:h2) { FactoryBot.create(:harvest, owner: member, planting: p2, harvested_at: 3.days.ago) }
describe "lists planting that are ready for harvest" do
it { expect(mail).to have_content "Ready to harvest" }

View File

@@ -4,10 +4,10 @@ require "rails_helper"
require 'custom_matchers'
describe "Planting a crop", :js, :search do
let!(:maize) { FactoryBot.create :maize }
let(:garden) { FactoryBot.create :garden, owner: member, name: 'Orchard' }
let!(:maize) { FactoryBot.create(:maize) }
let(:garden) { FactoryBot.create(:garden, owner: member, name: 'Orchard') }
let!(:planting) do
FactoryBot.create :planting, garden:, owner: member, planted_at: Date.parse("2013-03-10")
FactoryBot.create(:planting, garden:, owner: member, planted_at: Date.parse("2013-03-10"))
end
before { Planting.reindex }

View File

@@ -4,9 +4,9 @@ require "rails_helper"
require 'custom_matchers'
describe "Display a planting", :js do
describe 'planting perennial' do
let(:garden) { FactoryBot.create :garden, location: 'Edinburgh' }
let(:garden) { FactoryBot.create(:garden, location: 'Edinburgh') }
let(:crop) { FactoryBot.create(:crop, name: 'feijoa', perennial: true) }
let(:planting) { FactoryBot.create :planting, crop:, garden:, owner: garden.owner }
let(:planting) { FactoryBot.create(:planting, crop:, garden:, owner: garden.owner) }
describe 'no harvest to predict from' do
before { visit planting_path(planting) }
@@ -17,9 +17,9 @@ describe "Display a planting", :js do
describe 'harvests used to predict' do
before do
FactoryBot.create :harvest, planting: planting, crop: crop, harvested_at: '1 May 2019'
FactoryBot.create :harvest, planting: planting, crop: crop, harvested_at: '18 June 2019'
FactoryBot.create_list :harvest, 4, planting:, crop:, harvested_at: '18 August 2019'
FactoryBot.create(:harvest, planting:, crop:, harvested_at: '1 May 2019')
FactoryBot.create(:harvest, planting:, crop:, harvested_at: '18 June 2019')
FactoryBot.create_list(:harvest, 4, planting:, crop:, harvested_at: '18 August 2019')
end
before { visit planting_path(planting) }
@@ -36,23 +36,23 @@ describe "Display a planting", :js do
before do
# Near by planting with harvests
nearby_garden = FactoryBot.create :garden, location: 'Greenwich, UK'
nearby_planting = FactoryBot.create :planting, crop: crop,
garden: nearby_garden, owner: nearby_garden.owner, planted_at: '1 January 2000'
FactoryBot.create :harvest, planting: nearby_planting, crop: crop,
harvested_at: '1 May 2019'
FactoryBot.create :harvest, planting: nearby_planting, crop: crop,
harvested_at: '18 June 2019'
FactoryBot.create_list :harvest, 4, planting: nearby_planting, crop: crop,
harvested_at: '18 August 2008'
nearby_garden = FactoryBot.create(:garden, location: 'Greenwich, UK')
nearby_planting = FactoryBot.create(:planting, crop:,
garden: nearby_garden, owner: nearby_garden.owner, planted_at: '1 January 2000')
FactoryBot.create(:harvest, planting: nearby_planting, crop:,
harvested_at: '1 May 2019')
FactoryBot.create(:harvest, planting: nearby_planting, crop:,
harvested_at: '18 June 2019')
FactoryBot.create_list(:harvest, 4, planting: nearby_planting, crop:,
harvested_at: '18 August 2008')
# far away planting harvests
faraway_garden = FactoryBot.create :garden, location: 'Amundsen-Scott Base, Antarctica'
faraway_planting = FactoryBot.create :planting, garden: faraway_garden, crop: crop,
owner: faraway_garden.owner, planted_at: '16 May 2001'
faraway_garden = FactoryBot.create(:garden, location: 'Amundsen-Scott Base, Antarctica')
faraway_planting = FactoryBot.create(:planting, garden: faraway_garden, crop:,
owner: faraway_garden.owner, planted_at: '16 May 2001')
FactoryBot.create_list :harvest, 4, planting: faraway_planting, crop:,
harvested_at: '18 December 2006'
FactoryBot.create_list(:harvest, 4, planting: faraway_planting, crop:,
harvested_at: '18 December 2006')
end
before { visit planting_path(planting) }

View File

@@ -8,25 +8,25 @@ describe "Display a planting", :js do
before { visit planting_path(planting) }
context 'Perennial planted long ago' do
let(:planting) { FactoryBot.create :perennial_planting }
let(:planting) { FactoryBot.create(:perennial_planting) }
it { expect(page).to have_text 'Perennial' }
end
context 'Perennial finished' do
let(:planting) { FactoryBot.create :perennial_planting, planted_at: 6.years.ago, finished: true, finished_at: 1.year.ago }
let(:planting) { FactoryBot.create(:perennial_planting, planted_at: 6.years.ago, finished: true, finished_at: 1.year.ago) }
it { expect(page).to have_text 'Perennial' }
end
context 'Annual no predictions' do
let(:planting) { FactoryBot.create :annual_planting }
let(:planting) { FactoryBot.create(:annual_planting) }
it { expect(page).not_to have_text 'Finish expected' }
end
context 'Annual with predicted finish' do
let(:planting) { FactoryBot.create :predicatable_planting, planted_at: 2.weeks.ago }
let(:planting) { FactoryBot.create(:predicatable_planting, planted_at: 2.weeks.ago) }
it { expect(page).to have_text '28%' }
it { expect(page).to have_text '14/50 days' }
@@ -35,7 +35,7 @@ describe "Display a planting", :js do
end
context 'Annual finished' do
let(:planting) { FactoryBot.create :annual_planting, planted_at: 100.days.ago, finished: true, finished_at: 1.day.ago }
let(:planting) { FactoryBot.create(:annual_planting, planted_at: 100.days.ago, finished: true, finished_at: 1.day.ago) }
it { expect(page).to have_text "Planted #{I18n.l(planting.planted_at)}" }
end
@@ -48,7 +48,7 @@ describe "Display a planting", :js do
context 'Planting with harvest predictable' do
let(:planting) do
crop = FactoryBot.create :annual_crop
crop = FactoryBot.create(:annual_crop)
# 50 days to harvest
FactoryBot.create(:harvest, harvested_at: 150.days.ago, crop:,
planting: FactoryBot.create(:planting, planted_at: 200.days.ago, crop:))
@@ -60,14 +60,14 @@ describe "Display a planting", :js do
planting: FactoryBot.create(:planting, planted_at: 200.days.ago, crop:))
crop.update_medians
FactoryBot.create :annual_planting, planted_at: 200.days.ago, crop:
FactoryBot.create(:annual_planting, planted_at: 200.days.ago, crop:)
end
it { expect(page).to have_text 'First harvest expected' }
end
context 'with quantity' do
let(:planting) { FactoryBot.create :planting, quantity: 100 }
let(:planting) { FactoryBot.create(:planting, quantity: 100) }
it { expect(find('.plantingfact--quantity')).to have_text '100' }
end
@@ -78,8 +78,8 @@ describe "Display a planting", :js do
before { visit planting_path(planting) }
context 'with matching seeds' do
let(:seed) { FactoryBot.create :seed, saved_at: 1.month.ago, owner: member }
let(:planting) { FactoryBot.create :planting, planted_at: 1.day.ago, crop: seed.crop, owner: member }
let(:seed) { FactoryBot.create(:seed, saved_at: 1.month.ago, owner: member) }
let(:planting) { FactoryBot.create(:planting, planted_at: 1.day.ago, crop: seed.crop, owner: member) }
it { expect(page).to have_text 'Is this from one of these plantings? ' }

View File

@@ -16,7 +16,7 @@ describe 'Post a post' do
end
context "editing a post" do
let(:existing_post) { create :post, author: member }
let(:existing_post) { create(:post, author: member) }
before do
visit edit_post_path(existing_post)

View File

@@ -3,7 +3,7 @@
require 'rails_helper'
describe 'Members RSS feed' do
let(:member) { create :member }
let(:member) { create(:member) }
before { visit member_path(member, format: 'rss') }

View File

@@ -6,7 +6,7 @@ require 'custom_matchers'
describe "Seeds", :js, :search do
context 'signed in' do
include_context 'signed in member'
let!(:maize) { create :maize }
let!(:maize) { create(:maize) }
before { visit new_seed_path }

View File

@@ -6,7 +6,7 @@ describe "seeds", js: true do
context "signed in user" do
include_context 'signed in member'
xit "button on index to edit seed" do
let!(:seed) { create :seed, owner: member }
let!(:seed) { create(:seed, owner: member) }
before do
visit seeds_path
@@ -43,7 +43,7 @@ describe "seeds", js: true do
# actually adding seeds is in spec/features/seeds_new_spec.rb
it "edit seeds" do
seed = create :seed, owner: member
seed = create(:seed, owner: member)
visit seed_path(seed)
click_link 'Actions'
click_link 'Edit'
@@ -54,7 +54,7 @@ describe "seeds", js: true do
end
describe "delete seeds" do
let(:seed) { FactoryBot.create :seed, owner: member }
let(:seed) { FactoryBot.create(:seed, owner: member) }
before do
visit seed_path(seed)
@@ -71,25 +71,25 @@ describe "seeds", js: true do
before { visit seed_path(seed) }
describe "view seeds with max and min days until maturity" do
let(:seed) { FactoryBot.create :seed, days_until_maturity_min: 5, days_until_maturity_max: 7 }
let(:seed) { FactoryBot.create(:seed, days_until_maturity_min: 5, days_until_maturity_max: 7) }
it { expect(find('.seedfacts--maturity')).to have_content("57") }
end
describe "view seeds with only max days until maturity" do
let(:seed) { FactoryBot.create :seed, days_until_maturity_max: 7 }
let(:seed) { FactoryBot.create(:seed, days_until_maturity_max: 7) }
it { expect(find('.seedfacts--maturity')).to have_content("7") }
end
describe "view seeds with only min days until maturity" do
let(:seed) { FactoryBot.create :seed, days_until_maturity_min: 5 }
let(:seed) { FactoryBot.create(:seed, days_until_maturity_min: 5) }
it { expect(find('.seedfacts--maturity')).to have_content("5") }
end
describe "view seeds with neither max nor min days until maturity" do
let(:seed) { FactoryBot.create :seed }
let(:seed) { FactoryBot.create(:seed) }
it { expect(find('.seedfacts--maturity')).to have_content "unknown" }
end

View File

@@ -5,13 +5,13 @@ require 'custom_matchers'
describe "Seeds", :js do
context 'signed in' do
subject { page }
include_context 'signed in member'
before { visit seed_path(seed) }
subject { page }
let(:member) { FactoryBot.create :member }
let!(:seed) { FactoryBot.create :seed, owner: member }
let(:member) { FactoryBot.create(:member) }
let!(:seed) { FactoryBot.create(:seed, owner: member) }
it { is_expected.to have_content 'Add photo' }
@@ -21,7 +21,7 @@ describe "Seeds", :js do
context 'has one photo' do
before { seed.photos = [photo] }
let!(:photo) { FactoryBot.create :photo, title: 'hello 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)}')]") }
@@ -30,7 +30,7 @@ describe "Seeds", :js do
context 'has 50 photos' do
before { seed.photos = photos }
let!(:photos) { FactoryBot.create_list :photo, 50 }
let!(:photos) { FactoryBot.create_list(:photo, 50) }
it "shows newest photo" do
expect(subject).to have_xpath("//img[contains(@src,'#{photos.last.thumbnail_url}')]")

View File

@@ -3,10 +3,10 @@
require 'rails_helper'
shared_examples "crop suggest" do |resource|
let!(:pea) { create :crop, name: 'pea' }
let!(:pear) { create :pear }
let!(:tomato) { create :tomato }
let!(:roma) { create :roma }
let!(:pea) { create(:crop, name: 'pea') }
let!(:pear) { create(:pear) }
let!(:tomato) { create(:tomato) }
let!(:roma) { create(:roma) }
it "placeholder text in crop auto suggest field" do
expect(page).to have_selector("input[placeholder='e.g. lettuce']")

View File

@@ -3,12 +3,12 @@
require 'rails_helper'
describe "signin", js: true do
let(:member) { FactoryBot.create :member }
let(:recipient) { FactoryBot.create :member }
let(:wrangler) { FactoryBot.create :crop_wrangling_member }
let(:member) { FactoryBot.create(:member) }
let(:recipient) { FactoryBot.create(:member) }
let(:wrangler) { FactoryBot.create(:crop_wrangling_member) }
before do
crop = FactoryBot.create :tomato
crop = FactoryBot.create(:tomato)
crop.reindex
end
@@ -74,7 +74,7 @@ describe "signin", js: true do
end
it "after crop wrangler signs in and crops await wrangling, show alert" do
create :crop_request
create(:crop_request)
visit crops_path # some random page
click_link 'Sign in'
fill_in 'Login', with: wrangler.login_name
@@ -88,7 +88,7 @@ describe "signin", js: true do
# Ordinarily done by database_cleaner
Member.where(login_name: 'tdawg').delete_all
create :member, login_name: 'tdawg', email: 'example.oauth.facebook@example.com'
create(:member, login_name: 'tdawg', email: 'example.oauth.facebook@example.com')
# Start the test
visit root_path

View File

@@ -3,7 +3,7 @@
require 'rails_helper'
describe "signout" do
let(:member) { create :member }
let(:member) { create(:member) }
it "redirect to previous page after signout" do
visit crops_path # some random page
@@ -42,7 +42,7 @@ describe "signout" do
end
it 'photos' do
garden = FactoryBot.create :garden, owner: member
garden = FactoryBot.create(:garden, owner: member)
visit "/photos/new?id=#{garden.id}&type=garden"
expect(page).to have_current_path new_member_session_path, ignore_query: true
# expect(page).to have_http_status(200)

View File

@@ -3,9 +3,9 @@
require 'rails_helper'
describe "timeline", js: true do
let(:member) { FactoryBot.create :member }
let(:friend1) { FactoryBot.create :member }
let(:friend2) { FactoryBot.create :member }
let(:member) { FactoryBot.create(:member) }
let(:friend1) { FactoryBot.create(:member) }
let(:friend2) { FactoryBot.create(:member) }
before do
member.followed << friend1
@@ -13,10 +13,10 @@ describe "timeline", js: true do
end
describe 'visit timeline' do
let!(:friend_planting) { FactoryBot.create :planting, owner: friend1, planted_at: 1.day.ago }
let!(:friend_harvest) { FactoryBot.create :planting, owner: friend2, planted_at: 3.years.ago }
let!(:finished_planting) { FactoryBot.create :finished_planting, owner: friend1 }
let!(:no_planted_at_planting) { FactoryBot.create :planting, owner: friend2, planted_at: nil }
let!(:friend_planting) { FactoryBot.create(:planting, owner: friend1, planted_at: 1.day.ago) }
let!(:friend_harvest) { FactoryBot.create(:planting, owner: friend2, planted_at: 3.years.ago) }
let!(:finished_planting) { FactoryBot.create(:finished_planting, owner: friend1) }
let!(:no_planted_at_planting) { FactoryBot.create(:planting, owner: friend2, planted_at: nil) }
before do
login_as(member)

View File

@@ -4,8 +4,8 @@ require 'rails_helper'
require 'capybara/email/rspec'
describe "unsubscribe" do
let(:member) { create :member }
let(:notification) { create :notification }
let(:member) { create(:member) }
let(:notification) { create(:notification) }
before { clear_emails }

View File

@@ -15,10 +15,10 @@ require 'rails_helper'
RSpec.describe ButtonsHelper, type: :helper do
before { allow(self).to receive(:can?).and_return(true) }
let(:garden) { FactoryBot.create :garden }
let(:planting) { FactoryBot.create :planting }
let(:harvest) { FactoryBot.create :harvest }
let(:seed) { FactoryBot.create :seed }
let(:garden) { FactoryBot.create(:garden) }
let(:planting) { FactoryBot.create(:planting) }
let(:harvest) { FactoryBot.create(:harvest) }
let(:seed) { FactoryBot.create(:seed) }
describe 'add_photo_button' do
it { expect(add_photo_button(garden)).to include "/photos/new?id=#{garden.id}&amp;type=garden" }

View File

@@ -5,8 +5,8 @@ require 'rails_helper'
describe CropsHelper do
describe "display_seed_availability" do
before do
@member = create :member
@crop = create :tomato
@member = create(:member)
@crop = create(:tomato)
end
context "with no seeds" do
@@ -17,7 +17,7 @@ describe CropsHelper do
context "with an unknown quantity of seeds" do
before do
create :seed, crop: @crop, quantity: nil, owner: @member
create(:seed, crop: @crop, quantity: nil, owner: @member)
end
it 'renders' do
@@ -29,12 +29,12 @@ describe CropsHelper do
context "with an quantity of seeds" do
before do
a_different_crop = create :apple
a_different_crop = create(:apple)
create :seed, crop: @crop, quantity: 20, owner: @member
create :seed, crop: @crop, quantity: 13, owner: @member
create(:seed, crop: @crop, quantity: 20, owner: @member)
create(:seed, crop: @crop, quantity: 13, owner: @member)
create :seed, crop: a_different_crop, quantity: 3, owner: @member
create(:seed, crop: a_different_crop, quantity: 3, owner: @member)
end
it 'renders' do

View File

@@ -3,15 +3,15 @@
require 'rails_helper'
RSpec.describe EventHelper, type: :helper do
let(:planting) { FactoryBot.create :planting }
let(:harvest) { FactoryBot.create :harvest }
let(:seed) { FactoryBot.create :seed }
let(:post) { FactoryBot.create :post }
let(:comment) { FactoryBot.create :comment }
let(:photo) { FactoryBot.create :photo }
subject { resolve_model(event) }
let(:planting) { FactoryBot.create(:planting) }
let(:harvest) { FactoryBot.create(:harvest) }
let(:seed) { FactoryBot.create(:seed) }
let(:post) { FactoryBot.create(:post) }
let(:comment) { FactoryBot.create(:comment) }
let(:photo) { FactoryBot.create(:photo) }
describe 'plantings' do
let(:event) { OpenStruct.new(id: planting.id, event_type: 'planting') }

View File

@@ -3,16 +3,16 @@
require 'rails_helper'
describe PhotosHelper do
let(:crop) { FactoryBot.create :crop }
let(:crop) { FactoryBot.create(:crop) }
let(:crop_photo_of) { FactoryBot.create(:photo, source: 'openfarm') }
let(:crop_photo_flickr) { FactoryBot.create(:photo, source: 'flickr') }
let(:garden) { FactoryBot.create :garden }
let(:planting) { FactoryBot.create :planting, crop:, owner: garden.owner }
let(:garden) { FactoryBot.create(:garden) }
let(:planting) { FactoryBot.create(:planting, crop:, owner: garden.owner) }
let(:planting_photo) { FactoryBot.create(:photo, owner: garden.owner) }
let(:harvest) { FactoryBot.create :harvest, crop:, owner: garden.owner }
let(:harvest) { FactoryBot.create(:harvest, crop:, owner: garden.owner) }
let(:harvest_photo) { FactoryBot.create(:photo, owner: garden.owner) }
let(:seed) { FactoryBot.create :seed, crop:, owner: garden.owner }
let(:seed) { FactoryBot.create(:seed, crop:, owner: garden.owner) }
let(:seed_photo) { FactoryBot.create(:photo, owner: garden.owner) }
describe "crops" do

View File

@@ -76,9 +76,9 @@ describe 'Growstuff::OauthSignupAction' do
@auth['info']['email'] = 'never.used.oauth@yahoo.com'
Member.where(email: @auth['info']['email']).delete_all
@existing_member = create :member, email: @auth['info']['email'],
@existing_member = create(:member, email: @auth['info']['email'],
login_name: 'existing',
preferred_avatar_uri: 'http://cl.jroo.me/z3/W/H/K/e/a.baa-very-cool-hat-you-.jpg'
preferred_avatar_uri: 'http://cl.jroo.me/z3/W/H/K/e/a.baa-very-cool-hat-you-.jpg')
@member = @action.find_or_create_from_authorization(@auth)
@authentication = @action.establish_authentication(@auth, @member)
@@ -120,9 +120,9 @@ describe 'Growstuff::OauthSignupAction' do
Member.where(email: @auth['info']['email']).delete_all
Authentication.delete_all
@existing_member = create :member, email: @auth['info']['email'],
@existing_member = create(:member, email: @auth['info']['email'],
login_name: 'schrodingerscat',
preferred_avatar_uri: 'http://cl.jroo.me/z3/W/H/K/e/a.baa-very-cool-hat-you-.jpg'
preferred_avatar_uri: 'http://cl.jroo.me/z3/W/H/K/e/a.baa-very-cool-hat-you-.jpg')
@existing_authentication = @existing_member.authentications.create(provider: 'facebook',
uid: '123545',

View File

@@ -22,9 +22,9 @@ describe AlternateName do
end
describe 'relationships' do
let(:alternate_name) { FactoryBot.create :alternate_name, crop:, creator: member }
let(:crop) { FactoryBot.create :crop }
let(:member) { FactoryBot.create :member }
let(:alternate_name) { FactoryBot.create(:alternate_name, crop:, creator: member) }
let(:crop) { FactoryBot.create(:crop) }
let(:member) { FactoryBot.create(:member) }
it { expect(alternate_name.crop).to eq crop }
it { expect(alternate_name.creator).to eq member }

View File

@@ -143,7 +143,7 @@ describe Crop do
shared_examples 'has default photo' do
it { expect(described_class.has_photos).to include(crop) }
end
let!(:crop) { FactoryBot.create :tomato }
let!(:crop) { FactoryBot.create(:tomato) }
context 'with a planting photo' do
let!(:photo) { FactoryBot.create(:photo, owner: planting.owner) }
@@ -190,9 +190,9 @@ describe Crop do
end
describe 'finding all photos' do
let(:planting) { FactoryBot.create :planting, crop: }
let(:harvest) { FactoryBot.create :harvest, crop: }
let(:seed) { FactoryBot.create :seed, crop: }
let(:planting) { FactoryBot.create(:planting, crop:) }
let(:harvest) { FactoryBot.create(:harvest, crop:) }
let(:seed) { FactoryBot.create(:seed, crop:) }
before do
# Add photos to all
@@ -302,7 +302,7 @@ describe Crop do
let(:crop1_planting) { crop1.plantings.first }
let(:crop2_planting) { crop2.plantings.first }
let(:member) { FactoryBot.create :member, login_name: 'pikachu' }
let(:member) { FactoryBot.create(:member, login_name: 'pikachu') }
describe 'lists interesting crops' do
before do

View File

@@ -30,7 +30,7 @@ describe GardenType do
end
describe "does not delete gardens when deleted" do
before { FactoryBot.create :garden, garden_type: }
before { FactoryBot.create(:garden, garden_type:) }
let(:garden_type) { FactoryBot.create(:garden_type, name: "Massive Flower Pot") }

View File

@@ -298,8 +298,8 @@ describe Harvest do
end
it 'excludes deleted members' do
member = FactoryBot.create :member
harvest = FactoryBot.create :harvest, owner: member
member = FactoryBot.create(:member)
harvest = FactoryBot.create(:harvest, owner: member)
expect(described_class.joins(:owner).all).to include(harvest)
member.destroy
expect(described_class.joins(:owner).all).not_to include(harvest)

View File

@@ -5,7 +5,7 @@ require 'rails_helper'
describe Like do
let(:member) { FactoryBot.create(:member) }
let(:post) { FactoryBot.create(:post) }
let(:photo) { FactoryBot.create :photo }
let(:photo) { FactoryBot.create(:photo) }
context 'existing like' do
before do

View File

@@ -35,7 +35,7 @@ describe Photo do
it { expect(planting.crop.default_photo).to eq photo }
describe 'and someone likes the old photo' do
before { FactoryBot.create :like, likeable: old_photo }
before { FactoryBot.create(:like, likeable: old_photo) }
it { expect(planting.default_photo).to eq old_photo }
it { expect(planting.crop.default_photo).to eq old_photo }
@@ -185,17 +185,17 @@ describe Photo do
end
describe 'assocations' do
let(:harvest_crop) { FactoryBot.create :crop, name: 'harvest_crop' }
let!(:harvest) { FactoryBot.create :harvest, owner: member, crop: harvest_crop }
let!(:harvest_photo) { FactoryBot.create :photo, owner: member }
let(:harvest_crop) { FactoryBot.create(:crop, name: 'harvest_crop') }
let!(:harvest) { FactoryBot.create(:harvest, owner: member, crop: harvest_crop) }
let!(:harvest_photo) { FactoryBot.create(:photo, owner: member) }
let(:planting_crop) { FactoryBot.create :crop, name: 'planting_crop' }
let!(:planting) { FactoryBot.create :planting, owner: member, crop: planting_crop }
let!(:planting_photo) { FactoryBot.create :photo, owner: member }
let(:planting_crop) { FactoryBot.create(:crop, name: 'planting_crop') }
let!(:planting) { FactoryBot.create(:planting, owner: member, crop: planting_crop) }
let!(:planting_photo) { FactoryBot.create(:photo, owner: member) }
let(:seed_crop) { FactoryBot.create :crop, name: 'seed_crop' }
let!(:seed) { FactoryBot.create :seed, owner: member, crop: seed_crop }
let!(:seed_photo) { FactoryBot.create :photo, owner: member }
let(:seed_crop) { FactoryBot.create(:crop, name: 'seed_crop') }
let!(:seed) { FactoryBot.create(:seed, owner: member, crop: seed_crop) }
let!(:seed_photo) { FactoryBot.create(:photo, owner: member) }
before do
harvest.photos << harvest_photo
@@ -239,7 +239,7 @@ describe Photo do
describe 'Elastic search indexing', search: true do
let!(:planting) { FactoryBot.create(:planting, :reindex, owner: photo.owner) }
let!(:crop) { FactoryBot.create :crop, :reindex }
let!(:crop) { FactoryBot.create(:crop, :reindex) }
before do
planting.photos << photo

View File

@@ -11,7 +11,7 @@ describe Planting do
describe 'planting lifespan predictions' 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 }
let(:planting) { FactoryBot.create(:planting, planted_at: 30.days.ago, finished_at: nil, finished: false) }
it { expect(planting.crop.median_lifespan).to be_nil }
it { expect(planting.expected_lifespan).to be_nil }
@@ -20,7 +20,7 @@ describe Planting do
end
describe 'planting not planted yet' do
let(:planting) { FactoryBot.create :planting, planted_at: nil, finished_at: nil, finished: false }
let(:planting) { FactoryBot.create(:planting, planted_at: nil, finished_at: nil, finished: false) }
it { expect(planting.crop.median_lifespan).to be_nil }
it { expect(planting.expected_lifespan).to be_nil }
@@ -29,7 +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 }
let(:planting) { FactoryBot.create(:planting, planted_at: nil, finished_at: 1.day.ago, finished: true) }
it { expect(planting.crop.median_lifespan).to be_nil }
it { expect(planting.expected_lifespan).to be_nil }
@@ -38,7 +38,7 @@ describe Planting do
end
describe 'planting all finished' do
let(:planting) { FactoryBot.create :planting, planted_at: 30.days.ago, finished_at: 10.days.ago, finished: true }
let(:planting) { FactoryBot.create(:planting, planted_at: 30.days.ago, finished_at: 10.days.ago, finished: true) }
it { expect(planting.crop.median_lifespan).to be_nil }
it { expect(planting.expected_lifespan).to eq(20) }
@@ -49,18 +49,18 @@ describe Planting do
context 'lots of data' do
before do
FactoryBot.create :planting, crop: planting.crop, planted_at: 10.days.ago
FactoryBot.create :planting, crop: planting.crop, planted_at: 100.days.ago, finished_at: 50.days.ago
FactoryBot.create :planting, crop: planting.crop, planted_at: 100.days.ago, finished_at: 51.days.ago
FactoryBot.create :planting, crop: planting.crop, planted_at: 2.years.ago, finished_at: 50.days.ago
FactoryBot.create :planting, crop: planting.crop, planted_at: 150.days.ago, finished_at: 100.days.ago
FactoryBot.create(:planting, crop: planting.crop, planted_at: 10.days.ago)
FactoryBot.create(:planting, crop: planting.crop, planted_at: 100.days.ago, finished_at: 50.days.ago)
FactoryBot.create(:planting, crop: planting.crop, planted_at: 100.days.ago, finished_at: 51.days.ago)
FactoryBot.create(:planting, crop: planting.crop, planted_at: 2.years.ago, finished_at: 50.days.ago)
FactoryBot.create(:planting, crop: planting.crop, planted_at: 150.days.ago, finished_at: 100.days.ago)
planting.crop.update_lifespan_medians
end
it { expect(planting.crop.median_lifespan).to eq 50 }
describe 'planting 30 days ago, not finished' do
let(:planting) { FactoryBot.create :planting, planted_at: 30.days.ago }
let(:planting) { FactoryBot.create(:planting, planted_at: 30.days.ago) }
# 30 / 50 = 60%
it { expect(planting.percentage_grown).to eq 60.0 }
@@ -71,8 +71,8 @@ describe Planting do
end
describe 'child crop uses parent data' do
let(:child_crop) { FactoryBot.create :crop, parent: crop, name: 'child' }
let(:child_planting) { FactoryBot.create :planting, crop: child_crop, planted_at: 30.days.ago }
let(:child_crop) { FactoryBot.create(:crop, parent: crop, name: 'child') }
let(:child_planting) { FactoryBot.create(:planting, crop: child_crop, planted_at: 30.days.ago) }
# not data for this crop
it { expect(child_crop.median_lifespan).to be_nil }
@@ -85,19 +85,19 @@ describe Planting do
end
describe 'planting not planted yet' do
let(:planting) { FactoryBot.create :planting, planted_at: nil, finished_at: nil }
let(:planting) { FactoryBot.create(:planting, planted_at: nil, finished_at: nil) }
it { expect(planting.percentage_grown).to eq 0 }
end
describe 'planting finished 10 days, but was never planted' do
let(:planting) { FactoryBot.create :planting, planted_at: nil, finished_at: 10.days.ago }
let(:planting) { FactoryBot.create(:planting, planted_at: nil, finished_at: 10.days.ago) }
it { expect(planting.percentage_grown).to eq 100 }
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 }
let(:planting) { FactoryBot.create(:planting, planted_at: 30.days.ago, finished_at: 10.days.ago) }
it { expect(planting.age_in_days).to eq 20 }
it { expect(planting.percentage_grown).to eq 100 }
@@ -107,7 +107,7 @@ describe Planting do
describe 'planting first harvest preductions' do
context 'no data' do
let(:planting) { FactoryBot.create :planting }
let(:planting) { FactoryBot.create(:planting) }
it { expect(planting.crop.median_days_to_first_harvest).to be_nil }
it { expect(planting.crop.median_days_to_last_harvest).to be_nil }
@@ -117,7 +117,7 @@ describe Planting do
end
context 'lots of data' do
let(:crop) { FactoryBot.create :crop }
let(:crop) { FactoryBot.create(:crop) }
# this is a method so it creates a new one each time
def one_hundred_day_old_planting
@@ -142,20 +142,20 @@ describe Planting do
it { expect(crop.median_days_to_first_harvest).to eq(20) }
describe 'sets median time to harvest' do
let(:planting) { FactoryBot.create :planting, crop:, planted_at: Time.zone.today }
let(:planting) { FactoryBot.create(:planting, crop:, planted_at: Time.zone.today) }
it { expect(planting.first_harvest_predicted_at).to eq(Time.zone.today + 20.days) }
end
describe 'harvest still growing' do
let(:planting) { FactoryBot.create :planting, crop:, planted_at: Time.zone.today }
let(:planting) { FactoryBot.create(:planting, crop:, planted_at: Time.zone.today) }
it { expect(planting.before_harvest_time?).to be true }
it { expect(planting.harvest_time?).to be false }
end
describe 'harvesting ready now' do
let(:planting) { FactoryBot.create :planting, crop:, planted_at: 21.days.ago }
let(:planting) { FactoryBot.create(:planting, crop:, planted_at: 21.days.ago) }
it { expect(planting.first_harvest_predicted_at).to eq(1.day.ago.to_date) }
it { expect(planting.before_harvest_time?).to be false }
@@ -164,7 +164,7 @@ describe Planting do
end
describe 'planting has no harvests' do
let(:planting) { FactoryBot.create :planting }
let(:planting) { FactoryBot.create(:planting) }
before do
planting.update_harvest_days!
@@ -176,7 +176,7 @@ describe Planting do
end
describe 'planting has first harvest' do
let(:planting) { FactoryBot.create :planting, planted_at: 100.days.ago }
let(:planting) { FactoryBot.create(:planting, planted_at: 100.days.ago) }
before do
FactoryBot.create(:harvest,
@@ -194,11 +194,11 @@ 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 }
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
FactoryBot.create(:harvest, planting:, crop: planting.crop, harvested_at: 90.days.ago)
FactoryBot.create(:harvest, planting:, crop: planting.crop, harvested_at: 10.days.ago)
planting.update_harvest_days!
planting.crop.update_harvest_medians
end
@@ -221,9 +221,9 @@ describe Planting do
describe 'harvests used to predict' do
before do
FactoryBot.create :harvest, planting: planting, crop: crop, harvested_at: '1 May 2019'
FactoryBot.create :harvest, planting: planting, crop: crop, harvested_at: '18 June 2019'
FactoryBot.create_list :harvest, 4, planting:, crop:, harvested_at: '18 August 2019'
FactoryBot.create(:harvest, planting:, crop:, harvested_at: '1 May 2019')
FactoryBot.create(:harvest, planting:, crop:, harvested_at: '18 June 2019')
FactoryBot.create_list(:harvest, 4, planting:, crop:, harvested_at: '18 August 2019')
end
it { expect(planting.harvest_months).to eq(5 => 1, 6 => 1, 8 => 4) }
@@ -231,30 +231,30 @@ describe Planting do
describe 'nearby plantings used to predict' do
# Note the locations used need to be stubbed in geocoder
let(:garden) { FactoryBot.create :garden, location: 'Edinburgh', owner: garden_owner }
let(:garden) { FactoryBot.create(:garden, location: 'Edinburgh', owner: garden_owner) }
before do
# Near by planting with harvests
nearby_garden = FactoryBot.create :garden, location: 'Greenwich, UK'
nearby_garden = FactoryBot.create(:garden, location: 'Greenwich, UK')
nearby_planting = FactoryBot.create(:planting,
crop:,
garden: nearby_garden,
owner: nearby_garden.owner,
planted_at: '1 January 2000')
FactoryBot.create :harvest, planting: nearby_planting, crop: crop,
harvested_at: '1 May 2019'
FactoryBot.create :harvest, planting: nearby_planting, crop: crop,
harvested_at: '18 June 2019'
FactoryBot.create_list :harvest, 4, planting: nearby_planting, crop: crop,
harvested_at: '18 August 2008'
FactoryBot.create(:harvest, planting: nearby_planting, crop:,
harvested_at: '1 May 2019')
FactoryBot.create(:harvest, planting: nearby_planting, crop:,
harvested_at: '18 June 2019')
FactoryBot.create_list(:harvest, 4, planting: nearby_planting, crop:,
harvested_at: '18 August 2008')
# far away planting harvests
faraway_garden = FactoryBot.create :garden, location: 'Amundsen-Scott Base, Antarctica'
faraway_planting = FactoryBot.create :planting, garden: faraway_garden, crop: crop,
owner: faraway_garden.owner, planted_at: '16 May 2001'
faraway_garden = FactoryBot.create(:garden, location: 'Amundsen-Scott Base, Antarctica')
faraway_planting = FactoryBot.create(:planting, garden: faraway_garden, crop:,
owner: faraway_garden.owner, planted_at: '16 May 2001')
FactoryBot.create_list :harvest, 4, planting: faraway_planting, crop:,
harvested_at: '18 December 2006'
FactoryBot.create_list(:harvest, 4, planting: faraway_planting, crop:,
harvested_at: '18 December 2006')
end
it { expect(planting.harvest_months).to eq(5 => 1, 6 => 1, 8 => 4) }
@@ -280,17 +280,17 @@ describe Planting do
describe '#planted?' do
it "is false for future plantings" do
planting = FactoryBot.create :planting, planted_at: Time.zone.today + 1
planting = FactoryBot.create(:planting, planted_at: Time.zone.today + 1)
expect(planting.planted?).to be(false)
end
it "is false for never planted" do
planting = FactoryBot.create :planting, planted_at: nil
planting = FactoryBot.create(:planting, planted_at: nil)
expect(planting.planted?).to be(false)
end
it "is true for past plantings" do
planting = FactoryBot.create :planting, planted_at: Time.zone.today - 1
planting = FactoryBot.create(:planting, planted_at: Time.zone.today - 1)
expect(planting.planted?).to be(true)
end
end
@@ -520,8 +520,8 @@ describe Planting do
end
context 'ancestry' do
let(:parent_seed) { FactoryBot.create :seed }
let(:planting) { FactoryBot.create :planting, parent_seed: }
let(:parent_seed) { FactoryBot.create(:seed) }
let(:planting) { FactoryBot.create(:planting, parent_seed:) }
it "planting has a parent seed" do
expect(planting.parent_seed).to eq(parent_seed)
@@ -532,7 +532,7 @@ describe Planting do
end
describe 'grandchildren' do
let(:grandchild_seed) { FactoryBot.create :seed, parent_planting: planting }
let(:grandchild_seed) { FactoryBot.create(:seed, parent_planting: planting) }
it { expect(grandchild_seed.parent_planting).to eq planting }
it { expect(grandchild_seed.parent_planting.parent_seed).to eq parent_seed }
@@ -540,12 +540,12 @@ describe Planting do
end
describe 'active scope' do
let(:member) { FactoryBot.create :member }
let(:member) { FactoryBot.create(:member) }
let!(:planting) do
FactoryBot.create :planting, owner: member, garden: member.gardens.first
FactoryBot.create(:planting, owner: member, garden: member.gardens.first)
end
let!(:finished_planting) do
FactoryBot.create :finished_planting, owner: member, garden: member.gardens.first
FactoryBot.create(:finished_planting, owner: member, garden: member.gardens.first)
end
it { expect(member.plantings.active).to include(planting) }
@@ -553,14 +553,14 @@ describe Planting do
end
describe 'homepage', :search do
let!(:interesting_planting) { FactoryBot.create :planting, :reindex, :with_photo }
let!(:finished_interesting_planting) { FactoryBot.create :finished_planting, :reindex, :with_photo }
let!(:planting) { FactoryBot.create :planting, :reindex }
subject { described_class.homepage_records(100) }
let!(:interesting_planting) { FactoryBot.create(:planting, :reindex, :with_photo) }
let!(:finished_interesting_planting) { FactoryBot.create(:finished_planting, :reindex, :with_photo) }
let!(:planting) { FactoryBot.create(:planting, :reindex) }
before { described_class.reindex }
subject { described_class.homepage_records(100) }
it { expect(subject.count).to eq 2 }
it { expect(subject.map(&:id)).to eq([interesting_planting.id.to_s, finished_interesting_planting.id.to_s]) }
end

View File

@@ -174,7 +174,7 @@ describe Post do
end
it 'excludes deleted members' do
post = FactoryBot.create :post, author: member
post = FactoryBot.create(:post, author: member)
expect(described_class.joins(:author).all).to include(post)
member.destroy
expect(described_class.joins(:author).all).not_to include(post)

View File

@@ -3,7 +3,7 @@
require 'rails_helper'
describe Seed do
let(:owner) { FactoryBot.create :owner, login_name: 'tamateapokaiwhenua' }
let(:owner) { FactoryBot.create(:owner, login_name: 'tamateapokaiwhenua') }
let(:seed) { FactoryBot.build(:seed, owner:) }
it 'saves a basic seed' do
@@ -153,7 +153,7 @@ describe Seed do
end
context 'photos' do
let(:seed) { FactoryBot.create :seed }
let(:seed) { FactoryBot.create(:seed) }
before { seed.photos << FactoryBot.create(:photo, owner: seed.owner) }
@@ -163,8 +163,8 @@ describe Seed do
end
context 'ancestry' do
let(:parent_planting) { FactoryBot.create :planting }
let(:seed) { FactoryBot.create :seed, parent_planting:, owner: parent_planting.owner }
let(:parent_planting) { FactoryBot.create(:planting) }
let(:seed) { FactoryBot.create(:seed, parent_planting:, owner: parent_planting.owner) }
it "seed has a parent planting" do
expect(seed.parent_planting).to eq(parent_planting)
@@ -200,14 +200,14 @@ describe Seed do
end
describe 'homepage', :search do
let!(:tradable_seed) { FactoryBot.create :tradable_seed, :reindex, finished: false }
let!(:finished_seed) { FactoryBot.create :tradable_seed, :reindex, finished: true }
let!(:untradable_seed) { FactoryBot.create :untradable_seed, :reindex }
subject { described_class.homepage_records(100) }
let!(:tradable_seed) { FactoryBot.create(:tradable_seed, :reindex, finished: false) }
let!(:finished_seed) { FactoryBot.create(:tradable_seed, :reindex, finished: true) }
let!(:untradable_seed) { FactoryBot.create(:untradable_seed, :reindex) }
before { described_class.reindex }
subject { described_class.homepage_records(100) }
it { expect(subject.count).to eq 1 }
it { expect(subject.first.id).to eq tradable_seed.id.to_s }
end

View File

@@ -6,7 +6,7 @@ RSpec.describe 'Crops', type: :request do
subject { JSON.parse response.body }
let(:headers) { { 'Accept' => 'application/vnd.api+json' } }
let!(:crop) { FactoryBot.create :crop }
let!(:crop) { FactoryBot.create(:crop) }
let(:crop_encoded_as_json_api) do
{ "id" => crop.id.to_s,
"type" => "crops",

View File

@@ -6,7 +6,7 @@ RSpec.describe 'Gardens', type: :request do
subject { JSON.parse response.body }
let(:headers) { { 'Accept' => 'application/vnd.api+json' } }
let!(:garden) { FactoryBot.create :garden }
let!(:garden) { FactoryBot.create(:garden) }
let(:garden_encoded_as_json_api) do
{ "id" => garden.id.to_s,
"type" => "gardens",

View File

@@ -6,7 +6,7 @@ RSpec.describe 'Harvests', type: :request do
subject { JSON.parse response.body }
let(:headers) { { 'Accept' => 'application/vnd.api+json' } }
let!(:harvest) { FactoryBot.create :harvest }
let!(:harvest) { FactoryBot.create(:harvest) }
let(:harvest_encoded_as_json_api) do
{ "id" => harvest.id.to_s,
"type" => "harvests",

View File

@@ -6,7 +6,7 @@ RSpec.describe 'Members', type: :request do
subject { JSON.parse response.body }
let(:headers) { { 'Accept' => 'application/vnd.api+json' } }
let!(:member) { FactoryBot.create :member }
let!(:member) { FactoryBot.create(:member) }
let(:member_encoded_as_json_api) do
{ "id" => member.id.to_s,
"type" => "members",

View File

@@ -6,7 +6,7 @@ RSpec.describe 'Photos', type: :request do
subject { JSON.parse response.body }
let(:headers) { { 'Accept' => 'application/vnd.api+json' } }
let!(:photo) { FactoryBot.create :photo }
let!(:photo) { FactoryBot.create(:photo) }
let(:photo_encoded_as_json_api) do
{ "id" => photo.id.to_s,
"type" => "photos",

View File

@@ -6,7 +6,7 @@ RSpec.describe 'Plantings', type: :request do
subject { JSON.parse response.body }
let(:headers) { { 'Accept' => 'application/vnd.api+json' } }
let!(:planting) { FactoryBot.create :planting }
let!(:planting) { FactoryBot.create(:planting) }
let(:planting_encoded_as_json_api) do
{ "id" => planting.id.to_s,
"type" => "plantings",

View File

@@ -6,7 +6,7 @@ RSpec.describe 'Photos', type: :request do
subject { JSON.parse response.body }
let(:headers) { { 'Accept' => 'application/vnd.api+json' } }
let!(:seed) { FactoryBot.create :seed }
let!(:seed) { FactoryBot.create(:seed) }
let(:seed_encoded_as_json_api) do
{ "id" => seed.id.to_s,
"type" => "seeds",

View File

@@ -17,9 +17,9 @@ RSpec.describe CropSearchService, type: :service do
before do
# Alternate name
FactoryBot.create :alternate_name, name: 'fungus', crop: mushroom
FactoryBot.create(:alternate_name, name: 'fungus', crop: mushroom)
# scientific name
FactoryBot.create :scientific_name, name: 'Agaricus bisporus', crop: mushroom
FactoryBot.create(:scientific_name, name: 'Agaricus bisporus', crop: mushroom)
# Requested and rejected
FactoryBot.create(:rejected_crop, name: 'rejected mushroom')
@@ -47,20 +47,20 @@ RSpec.describe CropSearchService, type: :service do
describe 'biased' do
# Make some crops with planting counts
let!(:mushroom_parent) { FactoryBot.create :crop, name: 'mushroom' }
let!(:oyster) { FactoryBot.create :crop, name: 'oyster mushroom', parent: mushroom_parent }
let!(:shitake) { FactoryBot.create :crop, name: 'shitake mushroom', parent: mushroom_parent }
let!(:common) { FactoryBot.create :crop, name: 'common mushroom', parent: mushroom_parent }
let!(:brown) { FactoryBot.create :crop, name: 'brown mushroom', parent: mushroom_parent }
let!(:white) { FactoryBot.create :crop, name: 'white mushroom', parent: mushroom_parent }
let!(:mushroom_parent) { FactoryBot.create(:crop, name: 'mushroom') }
let!(:oyster) { FactoryBot.create(:crop, name: 'oyster mushroom', parent: mushroom_parent) }
let!(:shitake) { FactoryBot.create(:crop, name: 'shitake mushroom', parent: mushroom_parent) }
let!(:common) { FactoryBot.create(:crop, name: 'common mushroom', parent: mushroom_parent) }
let!(:brown) { FactoryBot.create(:crop, name: 'brown mushroom', parent: mushroom_parent) }
let!(:white) { FactoryBot.create(:crop, name: 'white mushroom', parent: mushroom_parent) }
describe 'biased to higher planting counts' do
subject { search('mushroom') }
before do
# Having plantings should bring these crops to the top of the search results
FactoryBot.create_list :planting, 10, crop: white
FactoryBot.create_list :planting, 4, crop: shitake
FactoryBot.create_list(:planting, 10, crop: white)
FactoryBot.create_list(:planting, 4, crop: shitake)
Crop.reindex
end
@@ -71,13 +71,13 @@ RSpec.describe CropSearchService, type: :service do
describe "biased to crops you've planted" do
subject { described_class.search('mushroom', current_member: owner).map(&:name) }
let(:owner) { FactoryBot.create :member }
let(:owner) { FactoryBot.create(:member) }
before do
FactoryBot.create_list :planting, 10, crop: brown
FactoryBot.create :planting, crop: oyster, owner: owner
FactoryBot.create :planting, crop: oyster, owner: owner
FactoryBot.create :planting, crop: shitake, owner: owner
FactoryBot.create_list(:planting, 10, crop: brown)
FactoryBot.create(:planting, crop: oyster, owner:)
FactoryBot.create(:planting, crop: oyster, owner:)
FactoryBot.create(:planting, crop: shitake, owner:)
Crop.reindex
end

View File

@@ -3,20 +3,20 @@
require 'rails_helper'
describe TimelineService do
let(:member) { FactoryBot.create :member }
let(:friend) { FactoryBot.create :member }
let(:member) { FactoryBot.create(:member) }
let(:friend) { FactoryBot.create(:member) }
let!(:friend_planting) { FactoryBot.create :planting, owner: friend, planted_at: 1.day.ago }
let!(:friend_harvest) { FactoryBot.create :harvest, owner: friend, harvested_at: 2.days.ago }
let!(:friend_planting) { FactoryBot.create(:planting, owner: friend, planted_at: 1.day.ago) }
let!(:friend_harvest) { FactoryBot.create(:harvest, owner: friend, harvested_at: 2.days.ago) }
let!(:my_seeds) { FactoryBot.create :seed, owner: member, created_at: 4.days.ago }
let!(:my_post) { FactoryBot.create :post, author: member, created_at: 3.months.ago }
let!(:my_seeds) { FactoryBot.create(:seed, owner: member, created_at: 4.days.ago) }
let!(:my_post) { FactoryBot.create(:post, author: member, created_at: 3.months.ago) }
describe 'a friend you followed' do
before { friend.followers << member }
subject { TimelineService.followed_query(member) }
before { friend.followers << member }
it { expect(subject.first.id).to eq friend_planting.id }
it { expect(subject.first.event_type).to eq 'planting' }
it { expect(subject.second.id).to eq friend_harvest.id }

View File

@@ -13,15 +13,15 @@ module FeatureHelpers
end
shared_context 'signed in member' do
let(:member) { FactoryBot.create :member }
let(:member) { FactoryBot.create(:member) }
include_examples 'sign in'
end
shared_context 'signed in crop wrangler' do
let(:member) { FactoryBot.create :crop_wrangling_member }
let(:member) { FactoryBot.create(:crop_wrangling_member) }
include_examples 'sign in'
end
shared_context 'signed in admin' do
let(:member) { FactoryBot.create :admin_member }
let(:member) { FactoryBot.create(:admin_member) }
include_examples 'sign in'
end

View File

@@ -10,7 +10,7 @@ describe "crops/show" do
@member = FactoryBot.create(:crop_wrangling_member)
sign_in @member
@current_member = @member
@harvest = FactoryBot.create :harvest, owner: @member
@harvest = FactoryBot.create(:harvest, owner: @member)
controller.stub(:current_user) { @member }
end

View File

@@ -8,7 +8,7 @@ describe "gardens/show" do
controller.stub(:current_user) { @owner }
@garden = FactoryBot.create(:garden, owner: @owner)
@planting = FactoryBot.create(:planting, garden: @garden, owner: @garden.owner)
@suggested_companions = FactoryBot.create_list :crop, 4
@suggested_companions = FactoryBot.create_list(:crop, 4)
assign(:garden, @garden)
assign(:current_plantings, [@planting])
assign(:finished_plantings, [])

View File

@@ -8,9 +8,9 @@ describe 'harvests/index.rss.haml', :search do
@member = FactoryBot.create(:member)
@tomato = FactoryBot.create(:tomato)
@harvest1 = FactoryBot.create :harvest, crop: @tomato
@harvest2 = FactoryBot.create :harvest, crop: @tomato
@harvest3 = FactoryBot.create :harvest, crop: @tomato
@harvest1 = FactoryBot.create(:harvest, crop: @tomato)
@harvest2 = FactoryBot.create(:harvest, crop: @tomato)
@harvest3 = FactoryBot.create(:harvest, crop: @tomato)
Harvest.searchkick_index.refresh
assign(:harvests, Harvest.search(load: false))

View File

@@ -3,20 +3,19 @@
require 'rails_helper'
describe "photos/show" do
let(:photo) { FactoryBot.create :photo, owner: member }
let(:crops) { FactoryBot.create_list :crop, 2 }
let(:photo) { FactoryBot.create(:photo, owner: member) }
let(:member) { FactoryBot.create(:member) }
let(:harvest) { FactoryBot.create(:harvest, owner: member) }
let(:planting) { FactoryBot.create(:planting, owner: member) }
let(:seed) { FactoryBot.create(:seed, owner: member) }
let(:garden) { FactoryBot.create(:garden, owner: member) }
let(:crops) { FactoryBot.create_list(:crop, 2) }
before do
@photo = photo
@crops = crops
end
let(:member) { FactoryBot.create :member }
let(:harvest) { FactoryBot.create :harvest, owner: member }
let(:planting) { FactoryBot.create :planting, owner: member }
let(:seed) { FactoryBot.create :seed, owner: member }
let(:garden) { FactoryBot.create :garden, owner: member }
shared_examples "photo data renders" do
it "shows the image" do
assert_select "img[src='#{@photo.fullsize_url}']"
@@ -68,7 +67,7 @@ describe "photos/show" do
context "signed in as another member" do
before do
controller.stub(:current_user) { FactoryBot.create :member }
controller.stub(:current_user) { FactoryBot.create(:member) }
render
end