diff --git a/app/components/sous_competence_component.html.erb b/app/components/sous_competence_component.html.erb new file mode 100644 index 000000000..82d20d2c0 --- /dev/null +++ b/app/components/sous_competence_component.html.erb @@ -0,0 +1,29 @@ +
+
+
+ <% if litteratie? %> + <%= image_tag "badges/anlci/#{@objet_sous_competence[:profil]}.svg", + alt: t(".#{@objet_sous_competence[:profil]}.alt_icone") %> + <% elsif avec_succes? %> + <%= render BadgeProfilComponent.new(badge_type) do %> + <%= @objet_sous_competence.pourcentage_reussite %> + <% end %> + <% end %> +
+
+ <% if litteratie? %> +
+

<%= I18n.t(titre_traduction) %>

+ <%= I18n.t(description_traduction(@objet_sous_competence[:profil])) %> +
+ <% elsif avec_succes? %> +
+

<%= I18n.t(titre_traduction) %>

+ <%= I18n.t(description_traduction(@objet_sous_competence[:success])) %> + <%= image_tag 'fleche-droite.svg', alt: 'fleche', class: 'fleche-droite' %> + <%= "#{@objet_sous_competence.nombre_questions_repondues} questions passées sur les #{@objet_sous_competence.nombre_total_questions} du sous-domaine" %> +
+ <% end %> +
+
+
\ No newline at end of file diff --git a/app/components/sous_competence_component.rb b/app/components/sous_competence_component.rb new file mode 100644 index 000000000..9ec14023c --- /dev/null +++ b/app/components/sous_competence_component.rb @@ -0,0 +1,35 @@ +# frozen_string_literal: true + +class SousCompetenceComponent < ViewComponent::Base + def initialize(competence, sous_competence, objet_sous_competence) + @competence = competence + @sous_competence = sous_competence + @objet_sous_competence = objet_sous_competence + end + + def litteratie? + @competence == :litteratie + end + + def avec_succes? + @objet_sous_competence.key?(:succes) + end + + def badge_type + @objet_sous_competence[:succes] ? :acquis : :non_acquis + end + + def titre_traduction + "#{traduction_path}.#{@competence}.#{@sous_competence}.titre" + end + + def description_traduction(profil) + "#{traduction_path}.#{@competence}.#{@sous_competence}.description.#{profil}" + end + + private + + def traduction_path + 'admin.evaluations.positionnement.sous_competences' + end +end diff --git a/app/views/admin/evaluations/positionnement/_sous_competences.erb b/app/views/admin/evaluations/positionnement/_sous_competences.erb index e9d67c946..d58103339 100644 --- a/app/views/admin/evaluations/positionnement/_sous_competences.erb +++ b/app/views/admin/evaluations/positionnement/_sous_competences.erb @@ -1,26 +1,5 @@
<% sous_competences.each do |sous_competence, objet_sous_competence| %> -
-
-
- <% if objet_sous_competence.is_a?(Restitution::SousCompetence::Litteratie) %> - <%= image_tag "badges/anlci/#{metriques[:profil]}.svg", alt: t(".#{metriques[:profil]}.alt_icone") %> - <% else %> - <% succes = objet_sous_competence&.succes %> - <% type = succes ? :acquis : :non_acquis %> - <%= render(BadgeProfilComponent.new(type)) do %> - <%= objet_sous_competence.pourcentage_reussite %>% - <% end %> - <% end %> -
-
-

<%= t(".#{competence}.#{sous_competence}.titre") %>

- <%= md t(".#{competence}.#{sous_competence}.description.#{objet_sous_competence.succes}") %> - <% if objet_sous_competence.is_a?(Restitution::SousCompetence::Numeratie) %> - <%= image_tag "fleche-droite.svg", alt: "fleche", class: "fleche-droite" %> <%= "#{objet_sous_competence.nombre_questions_repondues} questions passées sur les #{objet_sous_competence.nombre_total_questions} du sous-domaine" %> - <% end %> -
-
-
+ <%= render(SousCompetenceComponent.new(competence, sous_competence, objet_sous_competence)) %> <% end %>
diff --git a/spec/features/admin/controle_syntheses_restitutions_spec.rb b/spec/features/admin/controle_syntheses_restitutions_spec.rb index 3c079ba58..f7251fe6c 100644 --- a/spec/features/admin/controle_syntheses_restitutions_spec.rb +++ b/spec/features/admin/controle_syntheses_restitutions_spec.rb @@ -7,7 +7,11 @@ before { visit admin_controle_syntheses_restitutions_path } it "l'affiche sans erreur" do + message = 'Il semble que vous avez d’importantes difficultés en production écrite.' + expect(page).to have_http_status(200) + expect(page).to have_content('Production écrite') + expect(page).to have_content(message) end end end