66 lines
1.4 KiB
Ruby
66 lines
1.4 KiB
Ruby
|
require 'rails_helper'
|
||
|
|
||
|
describe LoginsController do
|
||
|
|
||
|
describe "#new" do
|
||
|
subject { get :new }
|
||
|
|
||
|
it "renders 'new' template" do
|
||
|
should render_template('new')
|
||
|
end
|
||
|
end
|
||
|
|
||
|
describe "#create" do
|
||
|
subject { post :create, email: "foo@example.com" }
|
||
|
|
||
|
let(:login_service) { double(:login_service) }
|
||
|
|
||
|
before do
|
||
|
allow(controller).to receive(:login_service) { login_service }
|
||
|
allow(login_service).to receive(:login).with("foo@example.com") { login_success }
|
||
|
end
|
||
|
|
||
|
context "when login succeeds" do
|
||
|
let(:login_success) { true }
|
||
|
|
||
|
it "sets email_recipient in flash" do
|
||
|
subject
|
||
|
expect(flash[:email_recipient]).to eq("foo@example.com")
|
||
|
end
|
||
|
|
||
|
it "redirects to 'sent' page" do
|
||
|
should redirect_to(sent_login_path)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
context "when login fails" do
|
||
|
let(:login_success) { false }
|
||
|
|
||
|
it "renders 'new' template" do
|
||
|
should render_template('new')
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
describe "#sent" do
|
||
|
subject { get :sent, {}, {}, { email_recipient: email_recipient } }
|
||
|
|
||
|
context "when email_recipient is set in flash" do
|
||
|
let(:email_recipient) { "foo@example.com" }
|
||
|
|
||
|
it "renders 'sent' template" do
|
||
|
should render_template('sent')
|
||
|
end
|
||
|
end
|
||
|
|
||
|
context "when email_recipient is not set in flash" do
|
||
|
let(:email_recipient) { nil }
|
||
|
|
||
|
it "redirects to login page" do
|
||
|
should redirect_to(new_login_path)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
end
|