Files
nairobi/spec/features/admin/legislation/questions_spec.rb
Javi Martín 7479223d59 Wrap translation fields in a div
This way we can show/hide that div when displaying translations, and we
can remove the duplication applying the same logic to the label, the
input, the error and the CKEditor.

This way we also solve the problem of the textarea of the CKEditor
taking space when we switch locales, as well as CKEditor itself taking
space even when not displayed.
2018-10-22 16:36:17 +02:00

185 lines
5.0 KiB
Ruby

require 'rails_helper'
feature 'Admin legislation questions' do
background do
admin = create(:administrator)
login_as(admin.user)
end
it_behaves_like "translatable",
"legislation_question",
"edit_admin_legislation_process_question_path",
%w[title]
context "Feature flag" do
background do
Setting['feature.legislation'] = nil
end
after do
Setting['feature.legislation'] = true
end
scenario 'Disabled with a feature flag' do
process = create(:legislation_process)
expect{ visit admin_legislation_process_questions_path(process) }.to raise_exception(FeatureFlags::FeatureDisabled)
end
end
context "Index" do
scenario 'Displaying legislation process questions' do
process = create(:legislation_process, title: 'An example legislation process')
question = create(:legislation_question, process: process, title: 'Question 1')
question = create(:legislation_question, process: process, title: 'Question 2')
visit admin_legislation_processes_path(filter: 'all')
click_link 'An example legislation process'
click_link 'Debate'
expect(page).to have_content('Question 1')
expect(page).to have_content('Question 2')
end
end
context 'Create' do
scenario 'Valid legislation question' do
process = create(:legislation_process, title: 'An example legislation process')
visit admin_root_path
within('#side_menu') do
click_link "Collaborative Legislation"
end
click_link "All"
expect(page).to have_content 'An example legislation process'
click_link 'An example legislation process'
click_link 'Debate'
click_link 'Create question'
fill_in 'Question', with: 'Question 3'
click_button 'Create question'
expect(page).to have_content 'Question 3'
end
end
context 'Update' do
scenario 'Valid legislation question', :js do
process = create(:legislation_process, title: 'An example legislation process')
question = create(:legislation_question, title: 'Question 2', process: process)
visit admin_root_path
within('#side_menu') do
click_link "Collaborative Legislation"
end
click_link "All"
expect(page).not_to have_link "All"
click_link 'An example legislation process'
click_link 'Debate'
click_link 'Question 2'
fill_in 'Question', with: 'Question 2b'
click_button 'Save changes'
expect(page).to have_content 'Question 2b'
end
end
context 'Delete' do
scenario 'Legislation question', :js do
process = create(:legislation_process, title: 'An example legislation process')
create(:legislation_question, title: 'Question 1', process: process)
question = create(:legislation_question, title: 'Question 2', process: process)
question_option = create(:legislation_question_option, question: question, value: 'Yes')
create(:legislation_answer, question: question, question_option: question_option)
visit edit_admin_legislation_process_question_path(process, question)
click_link 'Delete'
expect(page).to have_content 'Questions'
expect(page).to have_content 'Question 1'
expect(page).not_to have_content 'Question 2'
end
end
context "Special translation behaviour" do
let!(:question) { create(:legislation_question,
title_en: "Title in English",
title_es: "Título en Español") }
let(:edit_question_url) do
edit_admin_legislation_process_question_path(question.process, question)
end
let(:field_en) { field_for(:en) }
let(:field_es) { field_for(:es) }
def field_for(locale)
within(page.all(".translatable_fields[data-locale='#{locale}']").last) do
page.first("[id^='legislation_question_question_option'][id$='value']")
end
end
scenario 'Add translation for question option', :js do
visit edit_question_url
click_on 'Add option'
find('#nested-question-options input').set('Option 1')
click_link "Español"
find('#nested-question-options input').set('Opción 1')
click_button "Save changes"
visit edit_question_url
expect(page).to have_field(field_en[:id], with: 'Option 1')
click_link "Español"
expect(page).to have_field(field_es[:id], with: 'Opción 1')
end
scenario 'Add new question option after changing active locale', :js do
visit edit_question_url
click_link "Español"
click_on 'Add option'
find('#nested-question-options input').set('Opción 1')
click_link "English"
find('#nested-question-options input').set('Option 1')
click_button "Save changes"
visit edit_question_url
expect(page).to have_field(field_en[:id], with: 'Option 1')
click_link "Español"
expect(page).to have_field(field_es[:id], with: 'Opción 1')
end
end
end