Skip to content

Instantly share code, notes, and snippets.

@Micka33
Last active August 29, 2015 14:04
Show Gist options
  • Select an option

  • Save Micka33/d40b53deccea730989fc to your computer and use it in GitHub Desktop.

Select an option

Save Micka33/d40b53deccea730989fc to your computer and use it in GitHub Desktop.

Revisions

  1. Micka33 revised this gist Jul 29, 2014. 1 changed file with 4 additions and 4 deletions.
    8 changes: 4 additions & 4 deletions text.md
    Original file line number Diff line number Diff line change
    @@ -79,12 +79,12 @@ end

    ##Drivers

    ```
    ```ruby
    it 'does redirect to home page', driver: :rack_test do
    ```
    Je spécifie le driver `:rack_test` qui est plus léger est plus rapide que `webkit` pour effectuer ce test.

    ```
    ```ruby
    context 'when logged in', :js => true, driver: :webkit do
    ```
    Je spécifie le driver `:webkit` pour tous les test se trouvant dans le context.
    @@ -96,13 +96,13 @@ Les sessions ne sont pas partagé entre drivers. Donc si d'un test à un autre l

    ##Code

    ```
    ```ruby
    let(:new_publication) {FactoryGirl.build(:publication)}
    ```
    Il vaut mieux utiliser `let` pour initialiser des variables partagés plutôt que des `@`.
    Les variables créé avec `let` sont lazy-loadé, utiliser `let!` pour les loader direct.

    ```
    ```ruby
    def login_user
    user.nil? rescue let(:user) {FactoryGirl.create(:user)}
    before(:each) do
  2. Micka33 revised this gist Jul 29, 2014. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion text.md
    Original file line number Diff line number Diff line change
    @@ -109,4 +109,4 @@ Les variables créé avec `let` sont lazy-loadé, utiliser `let!` pour les loade
    ```
    Si user n'existe pas on en créé un avec `let`.
    À l'intérieur du `before(:each)` se trouve le process pour connecter un user à l'interface admin.
    À chaque nouveau `it 'does something'` before each sera executé et donc le user sera reconnecté à chaque nouveau test.
    À chaque nouveau `it 'does something'`, `before(:each)` sera executé et donc le user sera reconnecté à chaque nouveau test.
  3. Micka33 revised this gist Jul 29, 2014. 1 changed file with 16 additions and 0 deletions.
    16 changes: 16 additions & 0 deletions text.md
    Original file line number Diff line number Diff line change
    @@ -94,3 +94,19 @@ Je spécifie le driver `:webkit` pour tous les test se trouvant dans le context.
    `:rack_test` est le driver par default de capybara. Il est plus léger et plus rapide que `:webkit` mais ne supporte pas le javascript.
    Les sessions ne sont pas partagé entre drivers. Donc si d'un test à un autre le driver change les sessions sont détruites.

    ##Code

    ```
    let(:new_publication) {FactoryGirl.build(:publication)}
    ```
    Il vaut mieux utiliser `let` pour initialiser des variables partagés plutôt que des `@`.
    Les variables créé avec `let` sont lazy-loadé, utiliser `let!` pour les loader direct.

    ```
    def login_user
    user.nil? rescue let(:user) {FactoryGirl.create(:user)}
    before(:each) do
    ```
    Si user n'existe pas on en créé un avec `let`.
    À l'intérieur du `before(:each)` se trouve le process pour connecter un user à l'interface admin.
    À chaque nouveau `it 'does something'` before each sera executé et donc le user sera reconnecté à chaque nouveau test.
  4. Micka33 revised this gist Jul 29, 2014. 1 changed file with 6 additions and 2 deletions.
    8 changes: 6 additions & 2 deletions text.md
    Original file line number Diff line number Diff line change
    @@ -79,10 +79,14 @@ end

    ##Drivers

    `it 'does redirect to home page', driver: :rack_test do`
    ```
    it 'does redirect to home page', driver: :rack_test do
    ```
    Je spécifie le driver `:rack_test` qui est plus léger est plus rapide que `webkit` pour effectuer ce test.

    `context 'when logged in', :js => true, driver: :webkit do`
    ```
    context 'when logged in', :js => true, driver: :webkit do
    ```
    Je spécifie le driver `:webkit` pour tous les test se trouvant dans le context.
    `:js => true` permet de spécifié à capybara qu'il va y avoir du js à prendre en compte. Dans `capybara_helper.rb` je set `Capybara.javascript_driver = :webkit`, qui signifie qu'à chaque fois que `:js => true` est spécifié `:webkit` doit être utilisé.
    `driver: :webkit` n'est donc pas obligatoire (c'est juste pour montrer que c'est possible).
  5. Micka33 revised this gist Jul 29, 2014. 1 changed file with 52 additions and 1 deletion.
    53 changes: 52 additions & 1 deletion text.md
    Original file line number Diff line number Diff line change
    @@ -37,5 +37,56 @@ module FeatureMacros
    end
    ```
    J'ai aussi rajouté un spec/support/feature_macros.rb.
    Toute les methodes de ce fichier seront disponible dans les specs qui héfitent de `capybara_helper.rb` et qui implementent `:type => :feature`.
    Toute les methodes de ce fichier seront disponible dans les specs qui héritent de `capybara_helper.rb` et qui implementent `:type => :feature`.

    #dashboard_spec.rb
    ```ruby
    require 'capybara_helper'

    RSpec.describe 'Views::Admin::Dashboard', :type => :feature do

    context 'when logged out' do
    it 'does redirect to home page', driver: :rack_test do
    visit admin_dashboard_path
    expect(page).to have_content 'Log in'
    end
    end

    context 'when logged in', :js => true, driver: :webkit do
    let(:new_publication) {FactoryGirl.build(:publication)}
    login_user # let(:user)...


    it 'does connect to the dashboard' do
    expect(page).to have_content user.email.upcase
    end

    it 'does create a first project' do
    expect(page).to have_content 'No project yet?'
    button_clone = find('body > div > div > div.dashboard-content > div.no-project > div > div.choices > a.scratch')
    button_clone.click
    expect(page).to have_content 'Create a new project'
    fill_in('name', with: new_publication.name)
    fill_in('description', with: new_publication.description)
    click_button('Create')
    expect(page).to have_content new_publication.name.upcase
    end

    end

    end
    ```

    ##Drivers

    `it 'does redirect to home page', driver: :rack_test do`
    Je spécifie le driver `:rack_test` qui est plus léger est plus rapide que `webkit` pour effectuer ce test.

    `context 'when logged in', :js => true, driver: :webkit do`
    Je spécifie le driver `:webkit` pour tous les test se trouvant dans le context.
    `:js => true` permet de spécifié à capybara qu'il va y avoir du js à prendre en compte. Dans `capybara_helper.rb` je set `Capybara.javascript_driver = :webkit`, qui signifie qu'à chaque fois que `:js => true` est spécifié `:webkit` doit être utilisé.
    `driver: :webkit` n'est donc pas obligatoire (c'est juste pour montrer que c'est possible).

    `:rack_test` est le driver par default de capybara. Il est plus léger et plus rapide que `:webkit` mais ne supporte pas le javascript.
    Les sessions ne sont pas partagé entre drivers. Donc si d'un test à un autre le driver change les sessions sont détruites.

  6. Micka33 revised this gist Jul 29, 2014. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion text.md
    Original file line number Diff line number Diff line change
    @@ -14,7 +14,7 @@ end
    ```
    J'ai rajouté un fichier spec/capybara_helper.rb à require dans tous les fichiers de test de views.
    De cette façon capybara est chargé uniquement là où c'est nécessaire.
    Dans ce capybara_helper est configuré avec le driver `:webkit`, ainsi que `10` sec de timeout pour laisser le temps au javascript et partial de s'exécuter / se charger.
    Ce capybara_helper est configuré avec le driver `:webkit`, ainsi que `10` sec de timeout pour laisser le temps au javascript et partial de s'exécuter / se charger.

    #feature_macros.rb
    ```ruby
  7. Micka33 revised this gist Jul 29, 2014. 1 changed file with 41 additions and 6 deletions.
    47 changes: 41 additions & 6 deletions text.md
    Original file line number Diff line number Diff line change
    @@ -1,6 +1,41 @@
    J'ai rajouté un fichier spec/capybara_helper.rb à require dans tous les fichiers de test de views.
    De cette façon capybara est chargé uniquement là où c'est nécessaire.
    Dans ce capybara_helper est configuré avec le driver `:webkit`, ainsi que 10 sec de timeout pour laisser le temps au javascript et partial de s'exécuter/ se charger.

    J'ai aussi rajouté un spec/support/feature_macros.rb

    #capybara_helper.rb
    ```ruby
    require 'rails_helper'
    require 'capybara/rspec'

    Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f }

    RSpec.configure do |config|
    config.extend FeatureMacros, :type => :feature
    Capybara.javascript_driver = :webkit
    Capybara.default_wait_time = 10
    config.infer_spec_type_from_file_location!
    end
    ```
    J'ai rajouté un fichier spec/capybara_helper.rb à require dans tous les fichiers de test de views.
    De cette façon capybara est chargé uniquement là où c'est nécessaire.
    Dans ce capybara_helper est configuré avec le driver `:webkit`, ainsi que `10` sec de timeout pour laisser le temps au javascript et partial de s'exécuter / se charger.

    #feature_macros.rb
    ```ruby
    module FeatureMacros

    def login_user
    user.nil? rescue let(:user) {FactoryGirl.create(:user)}
    before(:each) do
    visit admin_dashboard_path
    button = find("#navigation > ul > li.loginlink > a")
    expect(button).to have_content("LOG IN")
    button.click
    expect(page).to have_content 'Login to Pandasuite'
    fill_in('user[email]', with: user.email)
    fill_in('user[password]', with: user.password)
    click_button('LOGIN')
    end
    end

    end
    ```
    J'ai aussi rajouté un spec/support/feature_macros.rb.
    Toute les methodes de ce fichier seront disponible dans les specs qui héfitent de `capybara_helper.rb` et qui implementent `:type => :feature`.

  8. Micka33 created this gist Jul 28, 2014.
    6 changes: 6 additions & 0 deletions text.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,6 @@
    J'ai rajouté un fichier spec/capybara_helper.rb à require dans tous les fichiers de test de views.
    De cette façon capybara est chargé uniquement là où c'est nécessaire.
    Dans ce capybara_helper est configuré avec le driver `:webkit`, ainsi que 10 sec de timeout pour laisser le temps au javascript et partial de s'exécuter/ se charger.

    J'ai aussi rajouté un spec/support/feature_macros.rb