require "spec_helper"

describe Users::PasswordsController, type: :controller do
  before do
    @request.env["devise.mapping"] = Devise.mappings[:user]
  end

  describe "update" do
    context "unified login" do
      let(:user) { create(:user, email: 'unique@plop.com', password: 'password') }
      let(:gestionnaire) { create(:gestionnaire, email: 'unique@plop.com', password: 'password') }
      let(:administrateur) { create(:administrateur, email: 'unique@plop.com', password: 'password') }

      before do
        @token = user.send(:set_reset_password_token)
        gestionnaire # make sure it's created
        administrateur # make sure it's created
      end

      it "also signs gestionnaire in" do
        put :update, params: {user: {
                       reset_password_token: @token,
                       password: "supersecret",
                       password_confirmation: "supersecret",
                   }}
        expect(subject.current_user).to eq(user)
        expect(subject.current_gestionnaire).to eq(gestionnaire)
      end

      it "also signs administrateur in" do
        put :update, params: {user: {
                       reset_password_token: @token,
                       password: "supersecret",
                       password_confirmation: "supersecret",
                   }}
        expect(subject.current_user).to eq(user)
        expect(subject.current_administrateur).to eq(administrateur)
      end
    end
  end
end