функция огурца: имитируйте несколько полей выбора в форме

Я начал писать следующую функцию в приложении, предназначенном для управления клининговым бизнесом:

Feature: Creating a new cleaner 
  In order to allow Franchisees to allocate cleaners to jobs they need to be uploaded to the system

  Background:
    Given I am currently logged in to my account
    And I have navigated to the "Cleaners" page
    And I want to add a new cleaner to the database

  Scenario: Add a new cleaner to the system
    Given I have brought up the "Add Cleaner" form
    Then I will need to complete the fields within the following form:

      | first_name     | 
      | last_name      |
      | email          |
      | date_of_birth  |
      | postcode       |
      | mobile         |
      | other_phone    |
      | address_1      |
      | address_2      |
      | work_radius    |
      | **days_available** |
      | notes          |

    When I have entered valid data
    Then I can save to the database
    And I will have added a new cleaner to the system

В дополнение к приветственным комментариям о том, как я писал сценарии и т. Д., Моя основная проблема заключается в том, что я не могу понять, как имитировать выбор из предварительно заполненного поля:

Заполнение days_available должно позволить франчайзи выбирать, в какие дни недели и в какие часы в эти дни уборщик будет доступен для работы. Это, очевидно, позволяет возвращать запросы, которые показывают только доступные чистящие средства для любого заданного дня / времени суток.

Очень надеюсь, что кто-нибудь сможет объяснить, как это делается?


person user3735114    schedule 02.09.2014    source источник


Ответы (1)


Просто краткий комментарий к структуре вашего файла функции ... шаг «Затем» в вашей функции должен утверждать, что что-то было или не было выполнено успешно.

Учитывая, что я вошел на сайт
Когда я добавляю новый Очиститель на сайт
Тогда я должен увидеть, что Очиститель был успешно добавлен

Я бы рекомендовал использовать язык, который легко понять. В вашем сценарии не обязательно должны быть инструкции по использованию сайта. Чрезмерное количество шагов навигации может привести к тому, что вы потеряете из виду цель сценария.

Чтобы точно ответить на ваш вопрос относительно days_available, потребуются некоторые знания о том, как устроен сайт и как вводятся days_available. Вы выбираете из избранных списков, заполняете поля формы и т. Д.? Кроме того, поскольку вы тестируете, вы можете рассмотреть возможность установки данных из своего шага (например, хеша, массива) вместо передачи всей информации через таблицу.

Просто пища для размышлений. Ваше здоровье.

Основываясь на вашем обновленном сообщении, я бы предложил следующее:

Шаг And I want to add a new cleaner to the database не кажется действенным и может быть удален. То же самое для шага When I have entered valid data. Если вы обрабатываете заполнение формы на предыдущем шаге, вы уже ввели действительные данные.

Если вам нужно несколько доступных дней, я бы подумал о том, чтобы сделать это отдельным шагом

And(/^the cleaner is available from (.*?) to (.*?) on (.*?)$/) do |start_time, end_time, day|
  #fill in start time
  #fill in end time
  #select day
end

Background:
    Given I am currently logged in to my account
    And I have navigated to the "Cleaners" page

Scenario:
    And I bring up the "Add Cleaners" form
    And I complete the form with
      | first name | Bob   |
      | last name  | Smith |
      ...
    And the cleaner is available from 0600 to 1800 on W
    When I submit the Add Cleaners form
    Then I should see the new cleaner has been successfully added
person Jarod Adair    schedule 02.09.2014
comment
Спасибо, Джарод, действительно полезный совет, спасибо. В случае days_available функция, которую я ищу, позволит пользователю выбрать дни, в которые уборщик готов работать, из раскрывающегося списка [M, T, W, T, F, S, S], а затем указать точное время, когда уборщик может работать в каждый из этих дней. Так, например, из-за других рабочих обязательств уборщик может работать только по понедельникам с 09.00 до 13.00 и по средам с 14.00 до 17.00. Выбор дней и времени будет производиться из выпадающих списков. - person user3735114; 04.09.2014
comment
Опять же, очень помогло мне спасибо. Чтобы уточнить, когда вы говорите «Если вы обрабатываете заполнение формы на предыдущем шаге», вы имеете в виду, что я должен определить функциональность поля доступности даты / времени в отдельном сценарии? - person user3735114; 04.09.2014
comment
Если вы обрабатываете дату / время на отдельном шаге, это даст вам возможность повторно использовать шаг несколько раз в одном и том же сценарии. так что вы можете добавить один или несколько доступных дней в одну и ту же форму. - person Jarod Adair; 04.09.2014
comment
хороший! Еще раз спасибо - person user3735114; 04.09.2014