Merge pull request #2923 from mkllnk/2882-extract-email-setup-in-specs

Extract email setup in specs for easy upgrade
This commit is contained in:
Pau Pérez Fabregat
2018-11-02 15:40:19 +01:00
committed by GitHub
23 changed files with 68 additions and 48 deletions

View File

@@ -2,6 +2,8 @@ require 'spec_helper'
module Admin
describe ManagerInvitationsController, type: :controller do
include OpenFoodNetwork::EmailHelper
let!(:enterprise_owner) { create(:user) }
let!(:other_enterprise_user) { create(:user) }
let!(:existing_user) { create(:user) }
@@ -25,7 +27,7 @@ module Admin
context "signing up a new user" do
before do
create(:mail_method)
setup_email
controller.stub spree_current_user: admin
end
@@ -46,7 +48,7 @@ module Admin
describe "with enterprise permissions" do
context "as user with proper enterprise permissions" do
before do
create(:mail_method)
setup_email
controller.stub spree_current_user: enterprise_owner
end

View File

@@ -2,6 +2,7 @@ require 'spec_helper'
describe Admin::SubscriptionsController, type: :controller do
include AuthenticationWorkflow
include OpenFoodNetwork::EmailHelper
describe 'index' do
let!(:user) { create(:user, enterprise_limit: 10) }
@@ -626,10 +627,7 @@ describe Admin::SubscriptionsController, type: :controller do
context "when at least one associate orders is 'canceled'" do
before do
Spree::MailMethod.create!(
environment: Rails.env,
preferred_mails_from: 'spree@example.com'
)
setup_email
proxy_order.cancel
end

View File

@@ -2,6 +2,7 @@ require 'spec_helper'
describe Spree::Admin::OrdersController, type: :controller do
include AuthenticationWorkflow
include OpenFoodNetwork::EmailHelper
context "updating an order with line items" do
let!(:order) { create(:order) }
@@ -93,10 +94,7 @@ describe Spree::Admin::OrdersController, type: :controller do
context "when the distributor's ABN has been set" do
before { distributor.update_attribute(:abn, "123") }
before do
Spree::MailMethod.create!(
environment: Rails.env,
preferred_mails_from: 'spree@example.com'
)
setup_email
end
it "should allow me to send order invoices" do
expect do

View File

@@ -1,6 +1,8 @@
require 'spec_helper'
describe Spree::OrdersController, type: :controller do
include OpenFoodNetwork::EmailHelper
let(:distributor) { double(:distributor) }
let(:order) { create(:order) }
let(:order_cycle) { create(:simple_order_cycle) }
@@ -372,10 +374,7 @@ describe Spree::OrdersController, type: :controller do
let(:order) { create(:completed_order_with_totals, user: user) }
before do
Spree::MailMethod.create!(
environment: Rails.env,
preferred_mails_from: 'spree@example.com'
)
setup_email
end
it "responds with success" do

View File

@@ -2,6 +2,8 @@ require 'spec_helper'
describe UserConfirmationsController, type: :controller do
include AuthenticationWorkflow
include OpenFoodNetwork::EmailHelper
let!(:user) { create_enterprise_user }
let!(:confirmed_user) { create_enterprise_user(confirmed_at: nil) }
let!(:unconfirmed_user) { create_enterprise_user(confirmed_at: nil) }
@@ -57,7 +59,7 @@ describe UserConfirmationsController, type: :controller do
end
context "requesting confirmation instructions to be resent" do
before { create(:mail_method) }
before { setup_email }
it "redirects the user to login" do
spree_post :create, { spree_user: { email: unconfirmed_user.email } }

View File

@@ -2,6 +2,8 @@ require 'spec_helper'
require 'spree/api/testing_support/helpers'
describe UserPasswordsController, type: :controller do
include OpenFoodNetwork::EmailHelper
let(:user) { create(:user) }
let(:unconfirmed_user) { create(:user, confirmed_at: nil) }
@@ -32,7 +34,7 @@ describe UserPasswordsController, type: :controller do
end
it "renders Darkswarm" do
Spree::MailMethod.create!(environment: 'test')
setup_email
clear_jobs
user.send_reset_password_instructions

View File

@@ -2,9 +2,10 @@ require 'spec_helper'
require 'spree/api/testing_support/helpers'
describe UserRegistrationsController, type: :controller do
include OpenFoodNetwork::EmailHelper
before(:all) do
create(:mail_method)
setup_email
end
before do

View File

@@ -6,6 +6,7 @@ feature %q{
}, js: true do
include AuthenticationWorkflow
include WebHelper
include OpenFoodNetwork::EmailHelper
context "as a site administrator" do
@@ -137,7 +138,7 @@ feature %q{
end
it "can invite unregistered users to be managers" do
create(:mail_method)
setup_email
find('a.button.help-modal').click
expect(page).to have_css '#invite-manager-modal'

View File

@@ -2,10 +2,11 @@ require "spec_helper"
feature "Managing users" do
include AuthenticationWorkflow
include OpenFoodNetwork::EmailHelper
context "as super-admin" do
before do
create(:mail_method)
setup_email
quick_login_as_admin
end

View File

@@ -2,6 +2,7 @@ require 'spec_helper'
feature "Account Settings", js: true do
include AuthenticationWorkflow
include OpenFoodNetwork::EmailHelper
describe "as a logged in user" do
let(:user) do
@@ -12,7 +13,7 @@ feature "Account Settings", js: true do
end
before do
create(:mail_method)
setup_email
quick_login_as user
visit "/account"
click_link I18n.t('spree.users.show.tabs.settings')

View File

@@ -2,6 +2,7 @@ require 'spec_helper'
feature "Authentication", js: true, retry: 3 do
include UIComponentHelper
include OpenFoodNetwork::EmailHelper
# Attempt to address intermittent failures in these specs
around do |example|
@@ -75,7 +76,7 @@ feature "Authentication", js: true, retry: 3 do
end
scenario "Signing up successfully" do
create(:mail_method)
setup_email
fill_in "Email", with: "test@foo.com"
fill_in "Choose a password", with: "test12345"
fill_in "Confirm password", with: "test12345"

View File

@@ -2,13 +2,14 @@ require "spec_helper"
feature "Confirm invitation as manager" do
include UIComponentHelper # for be_logged_in_as
include OpenFoodNetwork::EmailHelper
describe "confirm email and set password" do
let(:email) { "test@example.org" }
let(:user) { Spree::User.create(email: email, unconfirmed_email: email, password: "secret") }
before do
create(:mail_method)
setup_email
user.reset_password_token = Devise.friendly_token
user.reset_password_sent_at = Time.now.utc
user.save!

View File

@@ -2,6 +2,7 @@ require 'spec_helper'
feature "Order Management", js: true do
include AuthenticationWorkflow
include OpenFoodNetwork::EmailHelper
describe "viewing a completed order" do
let!(:distributor) { create(:distributor_enterprise) }
@@ -115,10 +116,7 @@ feature "Order Management", js: true do
context "when the distributor allows changes to be made to orders" do
before do
Spree::MailMethod.create!(
environment: Rails.env,
preferred_mails_from: 'spree@example.com'
)
setup_email
end
before do
order.distributor.update_attributes(allow_order_changes: true)

View File

@@ -1,6 +1,8 @@
require 'spec_helper'
describe SubscriptionConfirmJob do
include OpenFoodNetwork::EmailHelper
let(:job) { SubscriptionConfirmJob.new }
describe "finding proxy_orders that are ready to be confirmed" do
@@ -114,10 +116,7 @@ describe SubscriptionConfirmJob do
while !order.completed? do break unless order.next! end
allow(job).to receive(:send_confirm_email).and_call_original
job.instance_variable_set(:@order, order)
Spree::MailMethod.create!(
environment: Rails.env,
preferred_mails_from: 'spree@example.com'
)
setup_email
expect(job).to receive(:record_order).with(order)
end

View File

@@ -1,12 +1,14 @@
require 'spec_helper'
describe EnterpriseMailer do
include OpenFoodNetwork::EmailHelper
let!(:enterprise) { create(:enterprise) }
let!(:user) { create(:user) }
before do
ActionMailer::Base.deliveries = []
Spree::MailMethod.create!(environment: 'test')
setup_email
end
describe "#welcome" do

View File

@@ -1,7 +1,7 @@
require 'spec_helper'
describe Spree::OrderMailer do
let!(:mail_method) { create(:mail_method, preferred_mails_from: 'spree@example.com') }
include OpenFoodNetwork::EmailHelper
describe "order confimation" do
after do
@@ -9,6 +9,7 @@ describe Spree::OrderMailer do
end
before do
setup_email
ActionMailer::Base.delivery_method = :test
ActionMailer::Base.perform_deliveries = true
ActionMailer::Base.deliveries = []

View File

@@ -2,11 +2,10 @@ require 'spec_helper'
require 'yaml'
describe ProducerMailer do
include OpenFoodNetwork::EmailHelper
before do
Spree::MailMethod.create!(
environment: Rails.env,
preferred_mails_from: 'spree@example.com'
)
setup_email
end
let!(:zone) { create(:zone_with_member) }
let!(:tax_rate) { create(:tax_rate, included_in_price: true, calculator: Spree::Calculator::DefaultTax.new, zone: zone, amount: 0.1) }

View File

@@ -2,8 +2,9 @@ require 'spec_helper'
describe SubscriptionMailer do
include ActionView::Helpers::SanitizeHelper
include OpenFoodNetwork::EmailHelper
let!(:mail_method) { create(:mail_method, preferred_mails_from: 'spree@example.com') }
before { setup_email }
describe "order placement" do
let(:shop) { create(:enterprise) }

View File

@@ -1,6 +1,8 @@
require 'spec_helper'
describe Spree::UserMailer do
include OpenFoodNetwork::EmailHelper
let(:user) { build(:user) }
after do
@@ -12,7 +14,7 @@ describe Spree::UserMailer do
ActionMailer::Base.perform_deliveries = true
ActionMailer::Base.deliveries = []
Spree::MailMethod.create!(environment: 'test')
setup_email
end
it "sends an email when given a user" do

View File

@@ -1,6 +1,8 @@
require 'spec_helper'
describe OrderCycle do
include OpenFoodNetwork::EmailHelper
it "should be valid when built from factory" do
build(:simple_order_cycle).should be_valid
end
@@ -525,10 +527,7 @@ describe OrderCycle do
let!(:order5) { create(:completed_order_with_totals, distributor: shop, user: user, order_cycle: oc) }
before do
Spree::MailMethod.create!(
environment: Rails.env,
preferred_mails_from: 'spree@example.com'
)
setup_email
end
before { order5.cancel }

View File

@@ -1,6 +1,8 @@
require 'spec_helper'
describe Spree::Order do
include OpenFoodNetwork::EmailHelper
describe "setting variant attributes" do
it "sets attributes on line items for variants" do
d = create(:distributor_enterprise)
@@ -495,10 +497,7 @@ describe Spree::Order do
describe "scopes" do
describe "not_state" do
before do
Spree::MailMethod.create!(
environment: Rails.env,
preferred_mails_from: 'spree@example.com'
)
setup_email
end
it "finds only orders not in specified state" do

View File

@@ -1,6 +1,8 @@
require 'spec_helper'
describe Spree.user_class do
include OpenFoodNetwork::EmailHelper
describe "associations" do
it { should have_many(:owned_enterprises) }
@@ -72,7 +74,7 @@ describe Spree.user_class do
context "#create" do
it "should send a confirmation email" do
create(:mail_method)
setup_email
expect do
create(:user, email: 'new_user@example.com', confirmation_sent_at: nil, confirmed_at: nil)
@@ -100,7 +102,7 @@ describe Spree.user_class do
context "confirming email" do
it "should send a welcome email" do
create(:mail_method)
setup_email
expect do
create(:user, confirmed_at: nil).confirm!

View File

@@ -0,0 +1,11 @@
module OpenFoodNetwork
module EmailHelper
# Some specs trigger actions that send emails, for example creating an order.
# But sending emails doesn't work out-of-the-box. This code sets it up.
# It's here in a single place to allow an easy upgrade to Spree 2 which
# needs a different implementation of this method.
def setup_email
create(:mail_method)
end
end
end