тестирование внешних ключей с помощью cucumber

#ruby-on-rails #cucumber

#ruby-on-rails #cucumber

Вопрос:

Я пытаюсь настроить фон для функции cucumber. В идеале я хочу иметь возможность делать:

 Given the following folders exist:
     | id | parent_id | name             |
     | 1  |  nil      | folder1          |   
     | 2  |  nil      | folder2          |   
     | 3  |  2        | folder3          |   
     | 4  |  1        | folder4          |   
     | 5  |  1        | folder5          |   
     | 6  |  5        | folder6          | 
  

Однако я не могу этого сделать, поскольку я не могу установить ИДЕНТИФИКАТОР конкретной модели, и поэтому первая строка может быть создана с идентификатором 7, и поэтому ни одна из других «дочерних» строк не может получить к ней доступ. Имя не уникально, поэтому я не могу указать find_by_name в определении шага. У меня такое чувство, что это будет какое-то уродливое решение с вложенным массивом.
Есть идеи, как этого добиться?

Ответ №1:

Я не понимаю, почему вы не можете выбрать уникальные имена для целей настройки теста?

Комментарии:

1. Этого недостаточно, поскольку мне нужно иметь возможность обрабатывать (и тестировать) повторяющиеся имена.

Ответ №2:

То, как я закончил это делать в своих определениях шагов:

 Given /^the following folders exist:$/ do |table|
  table.hashes.each{|f|
    folder = Folder.new(f)
    folder.save
    ActiveRecord::Base.connection.execute('UPDATE folders SET id = ' f['id'].to_s ' WHERE id = ' folder.id.to_s)
  }
end