Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MGF-848_feat(wording): planning ui : 3eme and 2nde sections reversed + 'info… #463

Open
wants to merge 1 commit into
base: review
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
124 changes: 71 additions & 53 deletions app/views/dashboard/stepper/plannings/_form_fields.html.slim
Original file line number Diff line number Diff line change
@@ -1,66 +1,70 @@
- if can?(:supply_offers, current_user)
div [data-controller='mandatory-fields grade select-weeks'
div [data-controller='mandatory-fields grade select-weeks'
data-mandatory-fields-minimum-length-value="8"
data-grade-initial-grades-value="#{resource.grades.compact&.map(&:short_name).join(',')}"]
= form.hidden_field :type, value: resource.type, data: { :"planning-candidates-target" => "type" } unless resource.is_a?(Planning)
= form.hidden_field :school_id, value: form.object.school_id
.row
.col-md-6.order-md-2.order-1.d-none.d-md-block
- if form.object.new_record? && !duplication
= render 'dashboard/stepper/summary_card', form: form
.col-md-6.order-md-1.order-2
= form.hidden_field :school_id, value: form.object.school_id
/ Secondes
.row
.col-12
.d-none.fr-alert.fr-alert--error.fr-alert--sm data-grade-target="alertContainer"
p Vous devez sélectionner au moins un public parmi les lycéens et les collégiens
= render 'inputs/dsfr_checkbox_field',
form: form,
field: :grade_college,
title: 'Votre offre sera proposée aux élèves des niveaux suivants :',
label: 'Collégiens (4ème et 3ème)',
extra_header_classes: 'fr-h6',
options: { data: {:'grade-target' => 'gradeCollege',
action: 'grade#onClick click->select-weeks#onGradeTroisiemeClick' ,
:'select-weeks-target' => 'gradeCollege' } }

.row data-grade-target="troisiemeContainer"
.col-12
= render partial: "weeks/checkbox_inputs",
locals: { current_weeks: @available_weeks,
form: form,
render_employer_components: true }
.row
field: :grade_2e,
title: '',
label: 'Lycéens de 2de générale et technologique',
options: { data: {:'grade-target' => 'grade2e',
action: 'grade#onClick click->select-weeks#onGrade2ndeClick' ,
:'select-weeks-target' => 'grade2e' } }
.row data-grade-target="secondeContainer"
.col-12
hr
= render '/dashboard/stepper/plannings/seconde_period_radio_buttons_fields',
form: form,
resource: form.object
.row
.col-6
hr
/ Troisiemes
.row
.col-6
.d-none.fr-alert.fr-alert--error.fr-alert--sm data-grade-target="alertContainer"
p Vous devez sélectionner au moins un public parmi les lycéens et les collégiens
= render 'inputs/dsfr_checkbox_field',
form: form,
field: :grade_2e,
title: '',
label: 'Lycéens de 2de générale et technologique',
options: { data: {:'grade-target' => 'grade2e',
action: 'grade#onClick click->select-weeks#onGrade2ndeClick' ,
:'select-weeks-target' => 'grade2e' } }
.row data-grade-target="secondeContainer"
field: :grade_college,
title: 'Votre offre sera proposée aux élèves des niveaux suivants :',
label: 'Collégiens (4ème et 3ème)',
extra_header_classes: 'fr-h6',
options: { data: {:'grade-target' => 'gradeCollege',
action: 'grade#onClick click->select-weeks#onGradeTroisiemeClick' ,
:'select-weeks-target' => 'gradeCollege' } }

.row data-grade-target="troisiemeContainer"
.col-6
= render '/dashboard/stepper/plannings/seconde_period_radio_buttons_fields',
form: form,
resource: form.object
= render partial: "weeks/checkbox_inputs",
locals: { current_weeks: @available_weeks,
form: form,
render_employer_components: true }
.row
.col-6
hr
- klass = resource.class.to_s.split("s::").first
.row
.col-6
= render '/dashboard/stepper/plannings/collective_or_individual_radio_buttons',
form: form,
resource: form.object
.row
.col-6
= render '/dashboard/stepper/plannings/daily_hours',
form: form,
resource: form.object
.row
.col-12
= render '/dashboard/stepper/plannings/collective_or_individual_radio_buttons',
form: form,
resource: form.object
.row
.col-12
= render '/dashboard/stepper/plannings/daily_hours',
form: form,
resource: form.object
.col-6
.fr-alert.fr-alert--info
h3.fr-alert__title
Expand All @@ -79,31 +83,45 @@
pour tous les élèves. Dès lors que le temps de présence
quotidien atteint 4 heures 30, l’élève doit bénéficier
d’un temps de pause de 30 minutes consécutives minimum.
.row
.row.fr-mt-6w
.col-6
= react_component("ReservedSchoolInput",
props: { label: "Commune ou nom de l'établissement pour lequel le stage est reservé",
required: false,
resourceName: form.object_name,
selectClassRoom: false,
existingSchool: form.object&.school&.as_json})
.row
.row.fr-mt-6w
.col-6
= render 'inputs/dsfr_checkbox_field',
form: form,
field: :rep,
title: nil,
label: 'Ce stage est réservé aux établissements du réseau d\'éducation prioritaire (REP) ?',
options: {}
.row
.col-12
= render 'inputs/dsfr_checkbox_field',
form: form,
field: :rep,
title: nil,
label: 'Ce stage est réservé aux établissements du réseau d\'éducation prioritaire (REP) ?',
options: {}

.row
.row
.col-12
= render 'inputs/dsfr_checkbox_field',
form: form,
field: :qpv,
title: nil,
label: 'Ce stage est réservé aux établissements des quartiers prioritaires de la ville (QPV) ?',
options: {}
.col-6
= render 'inputs/dsfr_checkbox_field',
form: form,
field: :qpv,
title: nil,
label: 'Ce stage est réservé aux établissements des quartiers prioritaires de la ville (QPV) ?',
options: {}
.fr-alert.fr-alert--info
h3.fr-alert__title
|
Egalité des chances
p
|
Pour concrétiser votre engagement en faveur de l'égalité des chances,
pour valoriser votre démarche RSE, vous pouvez privilégier l’accueil d'élèves
des collèges en éducation prioritaire (EP) ou de d’élèves en lycées
en quartiers prioritaires de la ville (QPV) : seuls ces élèves
peuvent candidater à votre offre

- if submit_button
.fr-mt-6w
Expand Down
36 changes: 2 additions & 34 deletions test/system/dashboard/edit_or_duplicate_internship_offer_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,13 @@ def wait_form_submitted
sign_in(employer)
visit edit_dashboard_internship_offer_path(internship_offer)
find('input[name="internship_offer[employer_chosen_name]"]').fill_in(with: 'NewCompany')
fill_in("Nombre total d'élèves que vous souhaitez accueillir sur la période de stage", with: 10)

click_on "Publier l'offre"

wait_form_submitted
assert(/NewCompany/.match?(internship_offer.reload.employer_name))
assert_equal 10, internship_offer.max_candidates
end
end

Expand Down Expand Up @@ -57,40 +59,6 @@ def wait_form_submitted
end
end

test 'Employer can change max candidates parameter back and forth' do
travel_to(Date.new(2024, 1, 10)) do
employer = create(:employer)
internship_offer = create(:weekly_internship_offer_3eme,
employer:,
internship_offer_area_id: employer.current_area_id)
assert_equal 1, internship_offer.max_candidates
sign_in(employer)
visit dashboard_internship_offers_path(internship_offer:)
page.find("a[data-test-id=\"#{internship_offer.id}\"]").click

find('.test-edit-button').click
find('label[for="internship_type_false"]').click # max_candidates can be set to many now
execute_script("document.getElementById('internship_offer_max_candidates').removeAttribute('d-none')")

find('label[for="internship_type_false"]').click # max_candidates can be set to many now
within('.form-group-select-max-candidates') do
fill_in('Nombre total d\'élèves que vous souhaitez accueillir sur la période de stage', with: 4)
end
fill_in('Nombre maximal d’élèves par groupe', with: 4)
click_button('Publier l\'offre')
assert_equal 4,
internship_offer.reload.max_candidates,
'faulty max_candidates'

visit dashboard_internship_offers_path(internship_offer:)
page.find("a[data-test-id=\"#{internship_offer.id}\"]").click
find('.test-edit-button').click
find('label[for="internship_type_true"]').click # max_candidates is now set to 1
click_button('Publier l\'offre')
assert_equal 1, internship_offer.reload.max_candidates
end
end

test 'Employer can duplicate an internship offer' do
employer = create(:employer)
current_internship_offer = create(
Expand Down