mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-25 20:46:48 +00:00
The way we set up email sending completely changes with Spree 2. This change encapsulates that code in a single method so that it can be changed easily and doesn't create further merge conflicts while we are still working on the master branch and the Spree upgrade.
81 lines
2.6 KiB
Ruby
81 lines
2.6 KiB
Ruby
require 'spec_helper'
|
|
require 'spree/api/testing_support/helpers'
|
|
|
|
describe UserRegistrationsController, type: :controller do
|
|
include OpenFoodNetwork::EmailHelper
|
|
|
|
before(:all) do
|
|
setup_email
|
|
end
|
|
|
|
before do
|
|
@request.env["devise.mapping"] = Devise.mappings[:spree_user]
|
|
end
|
|
|
|
describe "via ajax" do
|
|
render_views
|
|
|
|
let(:user_params) do
|
|
{
|
|
email: "test@test.com",
|
|
password: "testy123",
|
|
password_confirmation: "testy123"
|
|
}
|
|
end
|
|
|
|
it "returns validation errors" do
|
|
xhr :post, :create, spree_user: {}, :use_route => :spree
|
|
expect(response.status).to eq(401)
|
|
json = JSON.parse(response.body)
|
|
expect(json).to eq({"email" => ["can't be blank"], "password" => ["can't be blank"]})
|
|
end
|
|
|
|
it "returns error when emailing fails" do
|
|
allow(Spree::UserMailer).to receive(:confirmation_instructions).and_raise("Some error")
|
|
expect(OpenFoodNetwork::ErrorLogger).to receive(:notify)
|
|
|
|
xhr :post, :create, spree_user: user_params, use_route: :spree
|
|
|
|
expect(response.status).to eq(401)
|
|
json = JSON.parse(response.body)
|
|
expect(json).to eq({"message" => I18n.t('devise.user_registrations.spree_user.unknown_error')})
|
|
end
|
|
|
|
it "returns 200 when registration succeeds" do
|
|
xhr :post, :create, spree_user: user_params, use_route: :spree
|
|
expect(response.status).to eq(200)
|
|
json = JSON.parse(response.body)
|
|
expect(json).to eq({"email" => "test@test.com"})
|
|
expect(controller.spree_current_user).to be_nil
|
|
end
|
|
end
|
|
|
|
context "when registration fails" do
|
|
it "renders new" do
|
|
spree_post :create, spree_user: {}
|
|
expect(response.status).to eq(200)
|
|
expect(response).to render_template "spree/user_registrations/new"
|
|
end
|
|
end
|
|
|
|
context "when registration succeeds" do
|
|
context "when referer is not '/checkout'" do
|
|
it "redirects to root" do
|
|
spree_post :create, spree_user: {email: "test@test.com", password: "testy123", password_confirmation: "testy123"}, :use_route => :spree
|
|
expect(response).to redirect_to root_path
|
|
expect(assigns[:user].email).to eq("test@test.com")
|
|
end
|
|
end
|
|
|
|
context "when referer is '/checkout'" do
|
|
before { @request.env['HTTP_REFERER'] = 'http://test.com/checkout' }
|
|
|
|
it "redirects to checkout" do
|
|
spree_post :create, spree_user: {email: "test@test.com", password: "testy123", password_confirmation: "testy123"}, :use_route => :spree
|
|
expect(response).to redirect_to checkout_path
|
|
expect(assigns[:user].email).to eq("test@test.com")
|
|
end
|
|
end
|
|
end
|
|
end
|