Тест перенаправления с Капибара и Javascript - PullRequest
3 голосов
/ 15 марта 2012

Я пытаюсь использовать капибару с rspec для тестирования моего приложения rails. Я упростил одну проблему до этого:

Я нажимаю на ссылку, и она перенаправляет меня через JavaScript

window.location="/sports"

Я щелкаю эту ссылку на капибаре и ищу страницу с содержанием «Спорт», но она всегда не срабатывает.

Когда я открываю файл на тестовом сервере и нажимаю «Отправить платеж», меня переводят на мою спортивную страницу. Наблюдая за выполнением тестов на селен, я вижу, что перенаправление не происходит.

Вот файлы:

swipes_spec.rb:

требуется 'spec_helper'

describe "Swipes" do
  describe "can view index page" do

    it "has checkout in h2" do
      visit swipe_index_path
      page.should have_selector("h2", text: "Checkout")
    end
    it "should have link test js" do
      visit swipe_index_path
      page.should have_link("test js")
    end
    it "responds to js", js: true do
      visit swipe_index_path
      click_link "test js"
      page.should have_selector('a', text: "js works")
    end
    it "responds to button press", js: true do
      visit swipe_index_path
      click_button "Submit Payment"
      wait_until(10) do
        page.has_content?("Select a Sport")
      end
      page.should have_selector('h2', text: "Select")
    end
  end
end

салфетки / index.html.erb:

<h2>Checkout</h2>
<span class="payment-errors"></span>
<form action="" method="POST" id="payment-form">
    <div class="form-row">
        <label>Card Number</label>
        <input type="text" size="20" autocomplete="off" id ="card-number" class="card-number"/>
    </div>
    <div class="form-row">
        <label>CVC</label>
        <input type="text" size="4" autocomplete="off" class="card-cvc"/>
    </div>
    <div class="form-row">
        <label>Expiration (MM/YYYY)</label>
        <input type="text" size="2" class="card-expiry-month"/>
        <span> / </span>
        <input type="text" size="4" class="card-expiry-year"/>
    </div>
    <button type="submit" class="submit-button">Submit Payment</button>
</form>


<%= link_to_function "test js", '$(this).html("js works")' %>


<script type="text/javascript" src="https://js.stripe.com/v1/"></script>
<script type="text/javascript">
    Stripe.setPublishableKey('pk_xIm00GVAKVLMWmfeR2J8GlmeHcyhL');

    $(document).ready(function() {
      $("#payment-form").submit(function(event) {
        // disable the submit button to prevent repeated clicks
        $('.submit-button').attr("disabled", "disabled");
        window.location =  "/sports";
        return false;
      });



    });

    function stripeResponseHandler(status, response) {
        if (response.error) {
            $('.submit-button').removeAttr("disabled");
            //show the errors on the form
            $(".payment-errors").html(response.error.message);

        } else {
            var form$ = $("#payment-form");
            // token contains id, last4, and card type
            var token = response['id'];
            // insert the token into the form so it gets submitted to the server
            form$.append("<input type='hidden' name='stripeToken' value='" + token + "'/>");
            // and submit
            form$.get(0).submit();
        }
    }
</script>

1 Ответ

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

У меня была какая-то ошибка.Я запустил gem update, чтобы обновить некоторые другие драгоценные камни, и это начало работать.Я также скачал QT.Одна из этих вещей сделала все счастливым.

...