Rails rspec / webrat - не вижу флажков - PullRequest
1 голос
/ 11 марта 2012

У меня проблема с тем, что вебрат не видит флажки.У меня есть такой код (haml):

    = form_for(@advanced_search, :url => searches_path, :method => 'get', :html => {:class => 'well', :id => 'advanced-search'}) do |f|
Availability
          - @advanced_search.availability_types.each do |avail_type|
            = check_box_tag "search[availability_types][kind][#{avail_type.id}]", avail_type.id, checked = true, :class => 'checkbox'
            = avail_type.kind

, который производит это: checkboxes

Это все действительный HTML, и функциональность работает.Однако, когда я иду проверить его, я не вижу никаких флажков в ответе.

Пример теста:

it "should have checkboxes" do
  get :index
  response.should have_selector("form") do |node|
    node.should have_selector('input', :type => 'checkbox')
  end
end

Вывод:

    expected following output to contain a <input type='checkbox'/> tag:
Availability
<br><input class="btn" name="commit" type="submit" value="Search">

Флажки не отображаются, и я не уверен, почему.Я подумал, что пометить их как отмеченные могут сделать это из-за html фанки с флажками, но, похоже, это не имеет никакого эффекта.

Правка 1 Что я знаю, если ясделать это:

Availability
      - @advanced_search.availability_types.each do |avail_type|
        = check_box_tag "search[availability_types][kind][#{avail_type.id}]", avail_type.id, checked = true, :class => 'checkbox'
        = avail_type.kind
      = check_box_tag "search[availability_types][kind][8]", 8, checked = true, :class => 'checkbox'

Не динамически сгенерированный флажок отображается нормально:

Availability
<input checked class="checkbox" id="search_availability_types_kind_8" name="search[availability_types][kind][8]" type="checkbox" value="8">

Редактировать 2

Я пропустил данныев тестовой базе ... Doh.Я добавил эти создания раньше, и теперь мои флажки отображаются.

before(:each) do
  AvailabilityType.create!({:kind => 'Full-time'})
  AvailabilityType.create!({:kind => 'Part-time'})
  AvailabilityType.create!({:kind => 'No Availability'})
end

Ответы [ 2 ]

2 голосов
/ 12 марта 2012

availability_types представляется загруженным из таблицы ActiveRecord, верно?Если это так, я думаю, что вы, возможно, не загрузили данные в эту таблицу, так что когда вы перебираете типы availability_types, вы даже не входите в блок.

У вас есть spec/fixtures/availability_types.ymlзагружен с данными?Другой вариант - смоделировать эти данные для этого теста или использовать фабричное или необработанное AR для создания данных для теста.

0 голосов
/ 11 марта 2012

Спецификации контроллера AFAIK не отображают представление по умолчанию. Поместите вызов «render» после «get: index», и вы должны получить представление. Это немного замедлит спецификацию.

Действительно, этот тест может действительно принадлежать спецификации вида.

...