Возникли проблемы при получении рельсов - PullRequest
0 голосов
/ 02 мая 2018

У меня возникли некоторые трудности с получением раскрывающегося списка css для материализации, чтобы представить его значение, когда оно выбрано. Я использую кавычки, потому что я не уверен, правильно ли я выбираю значение.

Я работаю с:

rails 5.1.5
capybara 2.18.0
rspec-rails 3.6.0

Моя текущая спецификация выглядит следующим образом:

require 'rails_helper'

feature 'organization management', js: true do
  let(:organization) {create :organization}

  scenario 'a user can view an organization they created' do
    set_session organization.user

    visit root_path

    within '.nav-wrapper' do
      click_link 'Organizations'
      click_link 'New Organization'
    end

    expect(current_path).to eq new_organization_path

    fill_in 'organization[name]', with: Faker::Company.name
    fill_in 'organization[address1]', with: Faker::Address.street_address
    fill_in 'organization[city]', with: Faker::Address.city

    # Chose to use JS because I couldn't get select helper to work
    evaluate_script("$('input.select-dropdown').val('Maryland');")

    fill_in 'organization[zipcode]', with: Faker::Address.zip
    fill_in_trix_editor 'trix-editor', Faker::Lorem.paragraph

    click_button 'Create Organization'

    expect(current_path).to eq organization_path(Organization.last)

  end
end

После нажатия кнопки создания я вижу, что значение состояния не отправлено:

Started POST "/organizations" for ::1 at 2018-05-02 13:49:13 -0400
Processing by OrganizationsController#create as HTML
  Parameters: {"utf8"=>"✓", "organization"=>{"name"=>"Spinka, Kautzer and Strosin", "address1"=>"4611 Mueller Ports", "address2"=>"", "city"=>"Madelynnland", "state"=>"", "zipcode"=>"19244-0263", "description"=>"<div>Earum saepe esse commodi. Autem nisi quis quia sed. Molestiae accusantium quaerat. Rerum quod sapiente dolorem laborum enim et autem.</div>"}, "commit"=>"Create Organization"}

Я сам прошел через это в браузере (за пределами тестов), и все работает нормально.

Понятия не имею, почему помощник select вообще не работал на меня.

Единственное отличие, которое я заметил, когда я проверял это вручную и тестировал rspec, это то, что метка не двигалась при выборе значения во время теста. Выбранное значение и метка раскрывающегося списка перекрываются.

Когда я вручную выбирал значение, метка перемещалась как обычно.

Буду признателен за любые мысли или идеи о том, как заставить все работать в функциональном тесте.

Спасибо

1 Ответ

0 голосов
/ 02 мая 2018

select не работает, потому что пользователь не взаимодействует с фактическим элементом HTML

find('CSS selector of the dropdown trigger').click # make the dropdown widget show
find('li', text: 'Maryland').click # click on the desired selection in the dropdown widget

Также обратите внимание, что вы никогда не должны использовать eq с current_path / url, так как это приведет к нестабильным тестам, вместо этого вы должны использовать have_current_path matcher, предоставленный Capybara

expect(page).to have_current_path(organization_path(Organization.last))
...