Skip to content

Commit

Permalink
✨ mon-pix: adds companion blocker on assessment page
Browse files Browse the repository at this point in the history
Co-authored-by: Nicolas Lepage <[email protected]>
  • Loading branch information
AndreiaPena and nlepage committed Oct 9, 2024
1 parent 9026a81 commit 5412e3e
Show file tree
Hide file tree
Showing 3 changed files with 158 additions and 1 deletion.
11 changes: 11 additions & 0 deletions mon-pix/app/components/assessments/assessments.gjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import CompanionBlocker from '../companion/blocker';

<template>
{{#if @assessment.isCertification}}
<CompanionBlocker>
{{yield}}
</CompanionBlocker>
{{else}}
{{yield}}
{{/if}}
</template>
4 changes: 3 additions & 1 deletion mon-pix/app/templates/assessments.hbs
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
{{page-title @model.title}}

{{outlet}}
<Assessments::Assessments @assessment={{@model}}>
{{outlet}}
</Assessments::Assessments>
144 changes: 144 additions & 0 deletions mon-pix/tests/integration/components/assessments/assessment-test.gjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
import { render } from '@1024pix/ember-testing-library';
import Service from '@ember/service';
import Assessments from 'mon-pix/components/assessments/assessments';
import { module, test } from 'qunit';
import sinon from 'sinon';

import setupIntlRenderingTest from '../../../helpers/setup-intl-rendering';

module('Integration | Component | Assessments | assessments', function (hooks) {
setupIntlRenderingTest(hooks);

module('when extension is enabled', function(){
test('it displays assessment page', async function (assert) {
// given
const startCheckingExtensionIsEnabledStub = sinon.stub();
const stopCheckingExtensionIsEnabledStub = sinon.stub();

class PixCompanionStub extends Service {
startCheckingExtensionIsEnabled = startCheckingExtensionIsEnabledStub;
stopCheckingExtensionIsEnabled = stopCheckingExtensionIsEnabledStub;
isExtensionEnabled = true;
}

this.owner.register('service:pix-companion', PixCompanionStub);

const assessment = { isCertification: true };
const title = "Première question";

// when
const screen = await render(
<template>
<Assessments @assessment={{assessment}}>
<h1>{{title}}</h1>
</Assessments>
</template>,
);

// then
assert.dom(screen.getByRole('heading', { name: title })).exists();
});

module("when assessment's type is not certification", function(){
test('it displays assessment page', async function (assert) {
// given
const startCheckingExtensionIsEnabledStub = sinon.stub();
const stopCheckingExtensionIsEnabledStub = sinon.stub();

class PixCompanionStub extends Service {
startCheckingExtensionIsEnabled = startCheckingExtensionIsEnabledStub;
stopCheckingExtensionIsEnabled = stopCheckingExtensionIsEnabledStub;
isExtensionEnabled = true;
}

this.owner.register('service:pix-companion', PixCompanionStub);

const assessment = { isCertification: false };
const title = "Première question";

// when
const screen = await render(
<template>
<Assessments @assessment={{assessment}}>
<h1>{{title}}</h1>
</Assessments>
</template>,
);

// then
assert.dom(screen.getByRole('heading', { name: title })).exists();
assert
.dom(screen.queryByRole('heading', { name: 'L’extension Pix Companion n’est pas détectée' }))
.doesNotExist();
});
});
});

module('when extension is disabled', function(){
test('it displays companion blocker page', async function (assert) {
// given
const startCheckingExtensionIsEnabledStub = sinon.stub();
const stopCheckingExtensionIsEnabledStub = sinon.stub();

class PixCompanionStub extends Service {
startCheckingExtensionIsEnabled = startCheckingExtensionIsEnabledStub;
stopCheckingExtensionIsEnabled = stopCheckingExtensionIsEnabledStub;
isExtensionEnabled = false;
}

this.owner.register('service:pix-companion', PixCompanionStub);

const assessment = { isCertification: true };
const title = "Première question";

// when
const screen = await render(
<template>
<Assessments @assessment={{assessment}}>
<h1>{{title}}</h1>
</Assessments>
</template>,
);

// then
assert.dom(screen.queryByRole('heading', { name: title })).doesNotExist();
assert
.dom(screen.getByRole('heading', { level: 1, name: 'L’extension Pix Companion n’est pas détectée' }))
.exists();
});

module("when assessment's type is not certification", function(){
test('it displays assessment page', async function (assert) {
// given
const startCheckingExtensionIsEnabledStub = sinon.stub();
const stopCheckingExtensionIsEnabledStub = sinon.stub();

class PixCompanionStub extends Service {
startCheckingExtensionIsEnabled = startCheckingExtensionIsEnabledStub;
stopCheckingExtensionIsEnabled = stopCheckingExtensionIsEnabledStub;
isExtensionEnabled = false;
}

this.owner.register('service:pix-companion', PixCompanionStub);

const assessment = { isCertification: false };
const title = "Première question";

// when
const screen = await render(
<template>
<Assessments @assessment={{assessment}}>
<h1>{{title}}</h1>
</Assessments>
</template>,
);

// then
assert.dom(screen.getByRole('heading', { name: title })).exists();
assert
.dom(screen.queryByRole('heading', { name: 'L’extension Pix Companion n’est pas détectée' }))
.doesNotExist();
});
});
});
});

0 comments on commit 5412e3e

Please sign in to comment.