введите дату в форму, используя заводскую девушку и капибару - PullRequest
4 голосов
/ 22 февраля 2012

У меня есть модель группы, которую я тестирую, используя спецификации запросов с Capybara и генерируя данные с помощью Factory Girl

В моей фабрике groups.rb ...

FactoryGirl.define do
  factory :group do
    sequence :name do |n| 
      "Group#{n}"
    end
    expiry Date.today + 2.weeks
  end
end

И используюэто в моем groups_spec.rb ...

describe "Groups" do
  describe "GET /groups" do
    it "an admin user can create a new group" do
      user = Factory.create(:user, :is_admin => true )
      group = Factory.build(:group)

      visit root_url
      fill_in "Email", :with => user.email
      fill_in "Password", :with => user.password
      click_button "Login"
      click_link "Groups"
      click_link "New Group"
      fill_in "Name", :with => group.name
      # need to change the below to use the Factory eg select Date.new(group.expiry)
      select "2014", :from => "group_expiry_1i"
      select "June", :from => "group_expiry_2i"
      select "1", :from => "group_expiry_3i"
      click_button "Create Group"
      page.should have_content("Group was successfully created.")
      page.should have_content(group.name)
    end
  end
end

Итак, вы видите, что это плохой способ выполнить тест, поскольку я не использую фабрично сгенерированный срок действия.Кто-нибудь знает, как правильно ввести в форму дату истечения срока действия?

Ответы [ 2 ]

3 голосов
/ 25 января 2013

Вы также можете использовать select_date:

select_date ('31 / 12/2014 ',: from =>' Expiry ')

3 голосов
/ 22 февраля 2012

Это только с манжеты без тестирования в Капибаре, но я бы попробовал:

select group.expiry.year.to_s, :from => "group_expiry_1i"
select Date::MONTHNAMES[group.expiry.month], :from => "group_expiry_2i"
select group.expiry.date.to_s, :from => "group_expiry_3i"

Пока эти значения действительно существуют в раскрывающемся списке, они должны правильно их выбирать.

...