Использование site_prism с динамически загружаемыми полями - PullRequest
0 голосов
/ 01 октября 2018

Я борюсь, чтобы запустить тест, в котором я динамически добавляю элементы на страницу.Добавление осуществляется с помощью JavaScript, используя самоцвет кокона.Вот изображение страницы.screen shot Установка 'title' и 'bijbelstudie' и 'perikoop 1' все работает отлично.Также можно добавить больше перикопов, нажав кнопку «Добавить новую перикопу» с помощью призмы сайта.Элементы сгруппированы и pericopes div.Каждый отдельный элемент может быть распознан с помощью form-group класса.

Мой первый вопрос: должен ли я создать объект страницы с ' elements ' или с ' section «?Я не могу сказать из документации, какой подход должен быть предпочтительным здесь.Мой второй вопрос, я не могу заставить его работать.Я никогда не получаю массив перикопов, ни с разделами, ни с элементами.

Пожалуйста, посмотрите HTML-код для страницы с 2 элементами, чтобы понять код.

<div id='pericopes'>
    <div class='nested-fields'>
        <div class='input-group'>
            <div class="form-group string required studynote_pericopes_name"><label
                    class="control-label string required" for="studynote_pericopes_attributes_0_name"><abbr
                    title="required">*</abbr> perikoop 1</label>
                <div>
                    <div class="input-group col-sm-12"><input class="form-control string required"
                                                              autofocus="autofocus"
                                                              placeholder="Genesis 1:1-3:21" type="text"
                                                              name="studynote[pericopes_attributes][0][name]"
                                                              id="studynote_pericopes_attributes_0_name"/>
                    </div>
                </div>
            </div>
            <span class='input-group-btn'>
<input type="hidden" name="studynote[pericopes_attributes][0][_destroy]" id="studynote_pericopes_attributes_0__destroy"
value="false"/><a class="delete remove_fields dynamic" style="margin-bottom:-9px" id="delete_pericope"
             href="#"></a>
</span>
        </div>
    </div>

Мой объект страницывыглядит так.

class PericopeSection < SitePrism::Section
  element :pericope_field, '.nested-fields'
  element :add_pericope_button, '#add_pericope'
end

class NewStudynotesPage < SitePrism::Page
  set_url '/studynotes/new'

  sections :pericopes, PericopeSection, 'div#pericopes'

  element :title_field, '#studynote_title'
  element :studynote_field, 'trix-editor'
  element :submit_button, '#submit_form'
end

1 Ответ

0 голосов
/ 04 октября 2018

Я исправил это сам.Я избавился от section и решил его с помощью elements.

class NewStudynotesPage < SitePrism::Page
  set_url '/studynotes/new'

  elements :pericopes, '.form-control'
  element :add_pericope_button, '#add_pericope'

  element :title_field, '#studynote_title'
  element :studynote_field, 'trix-editor'
  element :submit_button, '#submit_form'
end

Теперь rspec выглядит следующим образом:

require 'rails_helper'

feature 'Users can add multiple pericopes to a studynote', focus: true do
  let(:user) { create(:user) }

  scenario 'to multiple pericopes with valid attributes', js: true do

    create(:biblebook, name: 'Jona')
    login_as(user)

    nsp = NewStudynotesPage.new
    nsp.load
    nsp.title_field.set('Titel')
    nsp.studynote_field.set('Jona is bijzonder.')
    nsp.add_pericope_button.click
    nsp.pericopes[0].set('Jona 1:1 - 1:10')
    nsp.add_pericope_button.click

    nsp.pericopes[1].set('Jona 2:20 - 3:3')
    nsp.submit_button.click

    expect(StudynoteShowPage.new.pericope_field.text).to eq('Jona 1:1 - 10 | Jona 2:20 - 3:3')
  end
end
...