129 lines
3.9 KiB
Ruby
129 lines
3.9 KiB
Ruby
describe 'As an administrateur I can edit types de champ condition', js: true do
|
|
include Logic
|
|
|
|
let(:administrateur) { procedure.administrateurs.first }
|
|
let(:procedure) do
|
|
create(:procedure).tap do |p|
|
|
p.draft_revision.add_type_de_champ(type_champ: :integer_number, libelle: 'age')
|
|
# private
|
|
p.draft_revision.add_type_de_champ(type_champ: :boolean, libelle: 'bon dossier', private: true)
|
|
|
|
p.draft_revision.add_type_de_champ(type_champ: :text, libelle: 'nom du parent')
|
|
end
|
|
end
|
|
|
|
let(:first_tdc) { procedure.draft_revision.types_de_champ.first }
|
|
let(:second_tdc) { procedure.draft_revision.types_de_champ.second }
|
|
|
|
before do
|
|
login_as administrateur.user, scope: :user
|
|
# TODO: remove along with feature flipping
|
|
allow(Flipper).to receive(:enabled?).with(:conditional, anything).and_return(true)
|
|
visit champs_admin_procedure_path(procedure)
|
|
end
|
|
|
|
scenario "adding a new condition" do
|
|
within '.type-de-champ:nth-child(2)' do
|
|
click_on 'cliquer pour activer'
|
|
|
|
within '.condition-table tbody tr:nth-child(1)' do
|
|
expect(page).to have_select('type_de_champ[condition_form][rows][][targeted_champ]', options: ['Sélectionner', 'age'])
|
|
|
|
within('.target') { select('age') }
|
|
within('.operator') { select('Supérieur ou égal à') }
|
|
within('.value') { fill_in with: 18 }
|
|
end
|
|
end
|
|
|
|
expected_condition = greater_than_eq(champ_value(first_tdc.stable_id), constant(18))
|
|
wait_until { second_tdc.reload.condition == expected_condition }
|
|
end
|
|
|
|
scenario "the first type de champ is removed" do
|
|
within '.type-de-champ:nth-child(1)' do
|
|
click_on 'Supprimer'
|
|
page.accept_alert
|
|
end
|
|
|
|
# the condition table is deleted
|
|
expect(page).to have_no_content('Logique conditionnelle')
|
|
end
|
|
|
|
context 'with a preexisting condition' do
|
|
before do
|
|
second_tdc.update(condition: greater_than_eq(champ_value(first_tdc.stable_id), constant(18)))
|
|
|
|
page.refresh
|
|
end
|
|
|
|
scenario "removing all conditions" do
|
|
within '.type-de-champ:nth-child(2)' do
|
|
click_on 'cliquer pour désactiver'
|
|
page.accept_alert
|
|
|
|
# the condition table is deleted
|
|
expect(page).to have_no_table
|
|
end
|
|
end
|
|
|
|
scenario "removing a condition" do
|
|
within '.type-de-champ:nth-child(2)' do
|
|
within '.condition-table tbody tr:nth-child(1)' do
|
|
within('.delete-column') { click_on 'Supprimer la ligne' }
|
|
end
|
|
|
|
# the condition table is deleted
|
|
expect(page).to have_no_table
|
|
end
|
|
end
|
|
|
|
scenario "adding a second row" do
|
|
within '.type-de-champ:nth-child(2)' do
|
|
click_on 'Ajouter une condition'
|
|
|
|
# the condition table has 2 rows
|
|
within '.condition-table tbody' do
|
|
expect(page).to have_selector('tr', count: 2)
|
|
end
|
|
end
|
|
end
|
|
|
|
scenario "changing target champ to a not managed type" do
|
|
expect(page).to have_no_selector('.condition-error')
|
|
|
|
within '.type-de-champ:nth-child(1)' do
|
|
select('Départements', from: 'Type de champ')
|
|
end
|
|
|
|
within '.type-de-champ:nth-child(2)' do
|
|
expect(page).to have_selector('.condition-error')
|
|
end
|
|
end
|
|
|
|
scenario "moving a target champ below the condition" do
|
|
expect(page).to have_no_selector('.condition-error')
|
|
|
|
within '.type-de-champ:nth-child(1)' do
|
|
click_on 'Déplacer le champ vers le bas'
|
|
end
|
|
|
|
# the now first champ has an error
|
|
within '.type-de-champ:nth-child(1)' do
|
|
expect(page).to have_selector('.condition-error')
|
|
end
|
|
end
|
|
|
|
scenario "moving the condition champ above the target" do
|
|
expect(page).to have_no_selector('.condition-error')
|
|
|
|
within '.type-de-champ:nth-child(2)' do
|
|
click_on 'Déplacer le champ vers le haut'
|
|
end
|
|
|
|
# the now first champ has an error
|
|
within '.type-de-champ:nth-child(1)' do
|
|
expect(page).to have_selector('.condition-error')
|
|
end
|
|
end
|
|
end
|
|
end
|