Skip to content

Commit

Permalink
🐛 Corrige l'erreur 500 sur la page pros/admin/controle_syntheses_rest…
Browse files Browse the repository at this point in the history
…itutions

et ajoute des tests de helper pour cette vue
  • Loading branch information
Marion Velard committed Jan 28, 2025
1 parent c31039e commit de79527
Show file tree
Hide file tree
Showing 4 changed files with 69 additions and 22 deletions.
29 changes: 29 additions & 0 deletions app/components/sous_competence_component.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<div class="sous-competence__container">
<div class="row">
<div class="col-auto">
<% 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 %>
</div>
<div class="col-7">
<% if litteratie? %>
<div>
<h3><%= I18n.t(titre_traduction) %></h3>
<%= I18n.t(description_traduction(@objet_sous_competence[:profil])) %>
</div>
<% elsif avec_succes? %>
<div>
<h3><%= I18n.t(titre_traduction) %></h3>
<%= 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" %>
</div>
<% end %>
</div>
</div>
</div>
35 changes: 35 additions & 0 deletions app/components/sous_competence_component.rb
Original file line number Diff line number Diff line change
@@ -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
23 changes: 1 addition & 22 deletions app/views/admin/evaluations/positionnement/_sous_competences.erb
Original file line number Diff line number Diff line change
@@ -1,26 +1,5 @@
<div>
<% sous_competences.each do |sous_competence, objet_sous_competence| %>
<div class="sous-competence__container">
<div class="row">
<div class= "col-auto">
<% 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 %>
</div>
<div class= "col-7">
<h3><%= t(".#{competence}.#{sous_competence}.titre") %></h3>
<%= 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 %>
</div>
</div>
</div>
<%= render(SousCompetenceComponent.new(competence, sous_competence, objet_sous_competence)) %>
<% end %>
</div>
4 changes: 4 additions & 0 deletions spec/features/admin/controle_syntheses_restitutions_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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

0 comments on commit de79527

Please sign in to comment.