add system spec
This commit is contained in:
parent
256d4e4fda
commit
e9cf41a00d
1 changed files with 127 additions and 0 deletions
127
spec/system/administrateurs/condition_spec.rb
Normal file
127
spec/system/administrateurs/condition_spec.rb
Normal file
|
@ -0,0 +1,127 @@
|
|||
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
|
||||
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
|
Loading…
Reference in a new issue