master
1require "rails_helper"
2
3describe My::PasswordsController do
4 describe "#update" do
5 context "when not logged in" do
6 let(:user) { create(:user) }
7
8 it "redirects you to the login page" do
9 put :update, params: { id: user.id }
10 expect(response).to redirect_to(login_path)
11 end
12 end
13
14 context "when logged in" do
15 let(:user) { create(:user) }
16
17 before { http_login(user) }
18
19 context "when the new password and the confirmation password does not match" do
20 before :each do
21 put :update, params: {
22 id: user.id,
23 user: {
24 password: "foobar",
25 password_confirmation: "barfoo"
26 }
27 }
28 end
29
30 it "displays an error on the page" do
31 error_message = I18n.t("my.passwords.passwords_do_not_match")
32 expect(flash[:error]).to eql(error_message)
33 end
34
35 it "renders the show template" do
36 expect(response).to render_template(:index)
37 end
38 end
39
40 context "when the password and confirmation match" do
41 let(:new_password) { "booyakasham" }
42
43 before :each do
44 put :update, params: {
45 id: user.id,
46 user: {
47 password: new_password,
48 password_confirmation: new_password
49 }
50 }
51 end
52
53 it "updates the users password" do
54 expect(user.reload.authenticate(new_password)).to be_truthy
55 end
56 end
57 end
58 end
59
60 describe "#index" do
61 context "when logged in" do
62 let(:user) { create(:user) }
63
64 before :each do
65 http_login(user)
66 get :index
67 end
68
69 context "when displaying a form to change the current password" do
70 it "loads the user" do
71 expect(assigns(:user)).to eql(user)
72 end
73 end
74 end
75 end
76end