2013-08-31 3 views
1

У меня есть следующий тест Capybara, который должен щелкнуть и изменить содержание комментария. Проблема заключается в том, что форма содержимого загружается в модальный, который появляется при нажатии кнопки редактирования, а мой модал не отображается в тесте. (Эта функция работает в приложении). save_and_open_page открывает страницу, содержащую только объект json.Тест Capybara с ответом AJAX

feature_spec.rb

require 'spec_helper' 

describe 'Edit comment' do 

    let(:commented_post) { FactoryGirl.create(:post_with_comments) } 

    describe "when current_user is the comment's author" do 
    it 'should edit the comment content' do 
     visit post_path(commented_post) 
     within ("#comment-#{commented_post.comments.first.id}") do 
     click_on "edit" 
     end 
     Capybara.default_wait_time = 15 
     save_and_open_page 
     fill_in 'comment_content', with: 'No, this is the best comment' 
     click_on 'Edit Comment' 
     expect(page).to have_content('No, this is the best comment') 
    end 
    end 
end 

post.js

var EditForm = { 
    init: function() { 
    $('.get-edit-comment').on('ajax:success', this.showEditModal); 
    }, 

    showEditModal: function(e, data) { 
    e.preventDefault(); 
    $('.reveal-modal').html(data.edit_template); 
    $('.reveal-modal').foundation('reveal', 'open'); 
    } 
} 


$(document).ready(function() { 
    EditForm.init(); 
}); 

comments_controller.rb

def edit 
    @post = Post.find_by_id(params[:post_id]) 
    @comment = Comment.find_by_id(params[:id]) 
    render :json => { 
     edit_template: render_to_string(:partial => 'comments/form', 
             :locals => {post: @post, comment: @comment}) 
     } 
    end 

    def update 
    Comment.find_by_id(params[:id]).update(comment_params) 
    redirect_to post_path(params[:post_id]) 
    end 

ответ

1

Испытание водосвинку необходимо иметь опцию ЯШ: верно передается в блок descrbe ,

Вот результат:

describe "when current_user is the comment's author", js: true do 
    it 'should edit the comment content' do 
     visit post_path(commented_post) 
     within ("#comment-#{commented_post.comments.first.id}") do 
     click_on "edit" 
     end 
     fill_in 'comment_content', with: 'No, this is the best comment' 
     click_on 'Edit Comment' 
     expect(page).to have_content('No, this is the best comment') 
    end 
    end 
Смежные вопросы