module LoginSteps
  module ModuleMethods
    def access_log_conditions
      {
        accessed_at: Date.today,
        accessed_type: "User",
        accessed_controller: 'users/sessions',
        mynumber_id: nil,
        accessed_result: true
      }
    end
  end

  extend ModuleMethods

end


steps_for :login do

  step ':apartment のログイン画面にアクセス' do |apartment|
    Apartment::Tenant.switch! apartment
    visit new_user_session_path(apartment: apartment)
  end

  step 'apartment未選択のログイン画面にアクセス' do
    Apartment::Tenant.switch! :public
    visit new_user_session_path(apartment: "")
  end

  step ':login / :password でログイン' do |login,password|
    fill_in 'user[login]',    with: login
    fill_in 'user[password]', with: password
    click_button 'ログイン'
  end

  step ':apartment へのログインが成功すること' do |apartment|
    step "現在のURLは '/#{apartment}/portal/index' である"
    expect(page).to have_http_status(200)
    expect(page.first("nav")).to have_link('ログアウト')
    step "'notice' メッセージ 'ログインしました。' が表示される"
    # expect(page.first(".alert-notice")).to have_content('ログインしました。')
  end

  step ':apartment へのログインが失敗し、 :type の メッセージ「:message」が表示されること' do |apartment,type,message|
    step "現在のURLは '/#{apartment}/users/sign_in' である"
    expect(page).to have_http_status(200)
    expect(page.first("nav")).not_to have_link('ログアウト')
    step "'#{type}' メッセージ '#{message}' が表示される"
  end

  step "ログインフォームが表示される" do
    expect(page).to have_selector('div.well.sign_in form#new_user')
  end

  step "ログインフォームが表示されない" do
    expect(page).to_not have_selector('div.well.sign_in form#new_user')
  end

  step "ログインユーザー情報編集のリンクに :name と表示されている" do |name|
    expect(page.first("a.user_info")).to have_content(name)
  end

end