require 'spec_helper'

feature "Account Settings", js: true do
  include AuthenticationWorkflow

  describe "as a logged in user" do
    let(:user) { create(:user, email: 'old@email.com') }

    before do
      create(:mail_method)
      quick_login_as user
    end

    it "allows me to update my account details" do
      visit "/account"

      click_link I18n.t('spree.users.show.tabs.settings')
      expect(page).to have_content I18n.t('spree.users.form.account_settings')
      fill_in 'user_email', with: 'new@email.com'

      click_button I18n.t(:update)

      expect(find(".alert-box.success").text.strip).to eq "#{I18n.t(:account_updated)} ×"
      user.reload
      expect(user.email).to eq 'old@email.com'
      expect(user.unconfirmed_email).to eq 'new@email.com'
      click_link I18n.t('spree.users.show.tabs.settings')
      expect(page).to have_content I18n.t('spree.users.show.unconfirmed_email', unconfirmed_email: 'new@email.com')
    end
  end
end

require 'spec_helper'

feature "Account Settings", js: true do
  include AuthenticationWorkflow

  describe "as a logged in user" do
    let(:user) { create(:user, email: 'old@email.com') }

    before do
      create(:mail_method)
      quick_login_as user
    end

    it "allows me to update my account details" do
      visit "/account"

      click_link I18n.t('spree.users.show.tabs.settings')
      expect(page).to have_content I18n.t('spree.users.form.account_settings')
      fill_in 'user_email', with: 'new@email.com'

      expect do
        click_button I18n.t(:update)
      end.to send_confirmation_instructions

      sent_mail = ActionMailer::Base.deliveries.last
      expect(sent_mail.to).to eq ['new@email.com']

      expect(find(".alert-box.success").text.strip).to eq "#{I18n.t(:account_updated)} ×"
      user.reload
      expect(user.email).to eq 'old@email.com'
      expect(user.unconfirmed_email).to eq 'new@email.com'
      click_link I18n.t('spree.users.show.tabs.settings')
      expect(page).to have_content I18n.t('spree.users.show.unconfirmed_email', unconfirmed_email: 'new@email.com')
    end
  end
end

Update account setting spec for updating email address
Update account setting spec for updating email address
