Skip to content

Commit

Permalink
ER-886 Completed modules logic update (#1297)
Browse files Browse the repository at this point in the history
* WIP: Update completed at logic and add specs
* Rubocop updates
* Update my modules to use partials, text update and spec update
* Ensure completed modules text is not shown when last module to complete is in progress
* Update for course progress spec
  • Loading branch information
martikat authored Aug 28, 2024
1 parent 1c798e5 commit 94e4bad
Show file tree
Hide file tree
Showing 9 changed files with 82 additions and 48 deletions.
5 changes: 5 additions & 0 deletions app/services/course_progress.rb
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,11 @@ def course_completed?
Training::Module.live.all? { |mod| completed?(mod) }
end

# @return [Boolean]
def completed_all_modules?
completed_modules.all? && upcoming_modules.none? && available_modules.none? && course_completed?
end

# @return [Array<String>]
def debug_summary
Training::Module.ordered.map { |mod|
Expand Down
15 changes: 15 additions & 0 deletions app/views/learning/_available_modules.html.slim
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
hr.govuk-section-break.govuk-section-break--visible.govuk-section-break--l
#available.govuk-grid-row
.govuk-grid-column-full
h2.govuk-heading-m
= t('my_learning.available_modules_title')
- if current_user.content_changes.new_modules?
span.govuk-tag
= t('my_learning.new_tag.section')
- if current_user.course.available_modules.any?
.grid-container
- current_user.course.available_modules.each do |mod|
= render 'card', mod: mod, progress: false

- elsif current_user.course.course_completed?
p = t('my_learning.course_completed')
4 changes: 4 additions & 0 deletions app/views/learning/_completed_modules.html.slim
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
section.completed class=(current_user.course.completed_all_modules? ? '' : 'govuk-!-margin-top-7')
#completed.govuk-grid-row
.govuk-grid-column-full
= completed_modules_table
12 changes: 12 additions & 0 deletions app/views/learning/_in_progress_modules.html.slim
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#started.govuk-grid-row
.govuk-grid-column-full
h2.govuk-heading-m = t('my_learning.modules_in_progress_title')
- if current_user.course.current_modules.none?
- if current_user.course.completed_modules.none?
p = t('my_learning.begin_training_course')
- else
p = t('my_learning.choose_available_module')
- else
.grid-container
- current_user.course.current_modules.each do |mod|
= render 'card', mod: mod, progress: module_progress(mod)
14 changes: 14 additions & 0 deletions app/views/learning/_upcoming_modules.html.slim
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
hr.govuk-section-break.govuk-section-break--visible.govuk-section-break--l
#upcoming.govuk-grid-row
.govuk-grid-column-full
h2.govuk-heading-m = t('my_learning.future_modules_title')

.grid-container
- current_user.course.upcoming_modules.each do |mod|
.govuk-card id=mod.name
h3.govuk-heading-s
= mod.heading
p.govuk-body= mod.upcoming
- unless mod.draft?
= govuk_link_to t('my_learning.view_more_module_information'),
course_overview_path + mod.card_anchor
58 changes: 11 additions & 47 deletions app/views/learning/show.html.slim
Original file line number Diff line number Diff line change
Expand Up @@ -13,56 +13,20 @@

= render 'cms_debug'

#started.govuk-grid-row
.govuk-grid-column-full
h2.govuk-heading-m Modules in progress
- if current_user.course.current_modules.none?
- if current_user.course.completed_modules.none?
p You have not started any modules. To begin the training course, start an available module.
- else
p You have not started any modules. Please choose an available module.
- else
.grid-container
- current_user.course.current_modules.each do |mod|
= render 'card', mod: mod, progress: module_progress(mod)

- if current_user.course.available_modules.any? || current_user.course.course_completed?
hr.govuk-section-break.govuk-section-break--visible.govuk-section-break--l
#available.govuk-grid-row
- if current_user.course.completed_all_modules?
#started.govuk-grid-row
.govuk-grid-column-full
h2.govuk-heading-m
| Available modules
- if current_user.content_changes.new_modules?
span.govuk-tag
= t('my_learning.new_tag.section')
- if current_user.course.available_modules.any?
.grid-container
- current_user.course.available_modules.each do |mod|
= render 'card', mod: mod, progress: false

- elsif current_user.course.course_completed?
p You do not have any modules available.
p = t('my_learning.completed_all_modules')
- else
= render 'in_progress_modules'

- if current_user.course.upcoming_modules.any?
hr.govuk-section-break.govuk-section-break--visible.govuk-section-break--l
#upcoming.govuk-grid-row
.govuk-grid-column-full
h2.govuk-heading-m Future modules in this course
- if current_user.course.available_modules.any? || current_user.course.course_completed?
= render 'available_modules'

.grid-container
- current_user.course.upcoming_modules.each do |mod|
.govuk-card id=mod.name
h3.govuk-heading-s
= mod.heading
p.govuk-body= mod.upcoming
- unless mod.draft?
= govuk_link_to 'View more information about this module',
course_overview_path + mod.card_anchor
- if current_user.course.upcoming_modules.any?
= render 'upcoming_modules'

- if current_user.course.completed_modules.any?
hr.govuk-section-break.govuk-section-break--visible.govuk-section-break--l
#completed.govuk-grid-row
.govuk-grid-column-three-quarters-from-desktop
= completed_modules_table
= render 'completed_modules'

= render 'debug'
= render 'debug'
14 changes: 14 additions & 0 deletions config/locales/en.yml
Original file line number Diff line number Diff line change
Expand Up @@ -289,10 +289,24 @@ en:
percentage: "Your progress: %{num}"
viewed: You have read %{num} pages
remaining: Only %{num} pages remaining
available_modules_title: Available modules
modules_in_progress_title: Modules in progress
new_tag:
card: NEW
section: NEW MODULE AVAILABLE
page_count: (%{num} pages)
completed_all_modules: You have completed all available modules. You may use the links below to revisit any of the course content.
begin_training_course: You have not started any modules. To begin the training course, start an available module.
choose_available_module: You have not started any modules. Please choose an available module.
course_completed: You do not have any modules available.
future_modules_title: Future modules in this course
view_more_module_information: View more information about this module
completed_all_modules_table:
module_name: Module Name
date_completed: Date completed
actions: Actions
view_certificate: View certificate


my_learning_log:
title: Learning log
Expand Down
2 changes: 1 addition & 1 deletion spec/lib/seed_snippets_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
subject(:locales) { described_class.new.call }

it 'converts all translations' do
expect(locales.count).to be 201
expect(locales.count).to be 213
end

it 'dot separated key -> Page::Resource#name' do
Expand Down
6 changes: 6 additions & 0 deletions spec/services/course_progress_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,12 @@
end
end

describe '#completed_all_modules?' do
it do
expect(course.completed_all_modules?).to be false
end
end

describe '#debug_summary' do
it 'summarises information' do
expect(course.debug_summary).to eq(
Expand Down

0 comments on commit 94e4bad

Please sign in to comment.