4 votes

saisir une date dans un formulaire en utilisant factory girl et capybara

J'ai un modèle de groupe que je teste en utilisant des spécifications de demande avec Capybara et en générant les données avec Factory Girl.

Dans mon usine groups.rb...

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

Et j'utilise ceci dans mon fichier 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

Vous voyez donc que ce n'est pas une bonne façon de faire le test car je n'utilise pas l'expiration générée par l'usine. Quelqu'un sait-il comment saisir correctement la date d'expiration dans le formulaire ?

3voto

Veraticus Points 10078

Il s'agit là d'une simple hypothèse, sans avoir testé Capybara, mais j'essaierais :

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"

Tant que ces valeurs existent réellement dans la liste déroulante, elles devraient être sélectionnées correctement.

3voto

Paulo Fidalgo Points 5207

Vous pouvez également utiliser select_date :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X