Skip to content

Commit

Permalink
feat(mon-pix): display progress gauge in modulix navbar
Browse files Browse the repository at this point in the history
  • Loading branch information
clemlatz committed Nov 8, 2024
1 parent 62eda2a commit b37f3db
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 17 deletions.
34 changes: 23 additions & 11 deletions mon-pix/app/components/module/navbar.gjs
Original file line number Diff line number Diff line change
@@ -1,13 +1,25 @@
import { t } from 'ember-intl';
<template>
<nav
class="module-navbar"
aria-label={{t "pages.modulix.flashcards.navigation.currentStep" current=@currentStep total=@totalSteps}}
>
<div class="module-navbar__content">
<div class="module-navbar__content__current-step">
{{@currentStep}}/{{@totalSteps}}
import PixProgressGauge from '@1024pix/pix-ui/components/pix-progress-gauge';
import Component from '@glimmer/component';

export default class ModulixNavbar extends Component {

get progressValue() {
return ((this.args.currentStep - 1) / (this.args.totalSteps - 1)) * 100;
}

<template>
<nav
class="module-navbar"
aria-label={{t "pages.modulix.flashcards.navigation.currentStep" current=@currentStep total=@totalSteps}}
>
<div class="module-navbar__content">
<div class="module-navbar__content__current-step">
{{@currentStep}}/{{@totalSteps}}
</div>

<PixProgressGauge @value={{this.progressValue}} @label="Avancement du module" />
</div>
</div>
</nav>
</template>
</nav>
</template>
}
39 changes: 33 additions & 6 deletions mon-pix/tests/integration/components/module/navbar_test.gjs
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,39 @@ import setupIntlRenderingTest from '../../../helpers/setup-intl-rendering';
module('Integration | Component | Module | Navbar', function (hooks) {
setupIntlRenderingTest(hooks);

test('should display current step ', async function (assert) {
// when
const screen = await render(<template><ModulixNavbar @currentStep="1" @totalSteps="2" /></template>);
module('when at first step', function () {
test('should display step 1 with empty progress bar', async function (assert) {
// when
const screen = await render(<template><ModulixNavbar @currentStep="1" @totalSteps="3" /></template>);

// then
assert.ok(screen);
assert.dom(screen.getByRole('navigation', { name: 'Étape 1 sur 2' })).exists();
// then
assert.ok(screen);
assert.dom(screen.getByRole('navigation', { name: 'Étape 1 sur 3' })).exists();
assert.dom(screen.getByRole('progressbar', { name: 'Avancement du module' })).hasValue(0);
});
});

module('when at step 2 of 3', function () {
test('should display step 2 with half-filled progress bar', async function (assert) {
// when
const screen = await render(<template><ModulixNavbar @currentStep="2" @totalSteps="3" /></template>);

// then
assert.ok(screen);
assert.dom(screen.getByRole('navigation', { name: 'Étape 2 sur 3' })).exists();
assert.dom(screen.getByRole('progressbar', { name: 'Avancement du module' })).hasValue(50);
});
});

module('when at last step', function () {
test('should display step 3 with full-filled progress bar', async function (assert) {
// when
const screen = await render(<template><ModulixNavbar @currentStep="3" @totalSteps="3" /></template>);

// then
assert.ok(screen);
assert.dom(screen.getByRole('navigation', { name: 'Étape 3 sur 3' })).exists();
assert.dom(screen.getByRole('progressbar', { name: 'Avancement du module' })).hasValue(100);
});
});
});

0 comments on commit b37f3db

Please sign in to comment.