Skip to content

Commit

Permalink
feat: teste les composants
Browse files Browse the repository at this point in the history
  • Loading branch information
thom4parisot committed Feb 9, 2024
1 parent ad2f1b5 commit 9610dfc
Show file tree
Hide file tree
Showing 5 changed files with 151 additions and 3 deletions.
48 changes: 48 additions & 0 deletions src/components/Landing/Partners.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
import { describe, expect, test } from "vitest"
import { mount } from "@vue/test-utils"

import Partners from "./Partners.vue"

describe("Partners", () => {
test("displays only the headline", () => {
const wrapper = mount(Partners, {
props: { },
slots: {
headline: 'Okay'
}
})

expect(wrapper.find('h2').text()).toBe("Okay")
expect(wrapper.findAll('.fr-grid-row.sections > *')).toHaveLength(0)
})

test("displays full width sponsors", () => {
const wrapper = mount(Partners, {
props: { sponsors: true }
})

expect(wrapper.findAll('.fr-grid-row.sections > *')).toHaveLength(1)
expect(wrapper.find('.fr-grid-row.sections > div').classes()).toEqual(['fr-col-12'])
expect(wrapper.find('.fr-grid-row.sections .logos--sponsors').exists()).toEqual(true)
})

test("displays full width certification bodies", () => {
const wrapper = mount(Partners, {
props: { certificationBodies: true }
})

expect(wrapper.findAll('.fr-grid-row.sections > *')).toHaveLength(1)
expect(wrapper.find('.fr-grid-row.sections > div').classes()).toEqual(['fr-col-12'])
expect(wrapper.find('.fr-grid-row.sections .logos--certification-bodies').exists()).toEqual(true)
})

test("displays both sponsors and certification bodies", () => {
const wrapper = mount(Partners, {
props: { certificationBodies: true, sponsors: true }
})

expect(wrapper.findAll('.fr-grid-row.sections > *')).toHaveLength(2)
expect(wrapper.find('.fr-grid-row.sections > div:nth-child(1)').classes()).toEqual(['fr-col-lg-5'])
expect(wrapper.find('.fr-grid-row.sections > div:nth-child(2)').classes()).toEqual(['fr-col-lg-6', 'fr-col-offset-lg-1'])
})
})
2 changes: 1 addition & 1 deletion src/components/Landing/Partners.vue
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
</div>
</div>

<div class="fr-grid-row">
<div class="fr-grid-row sections">
<div :class="{ 'fr-col-12': !sponsors, 'fr-col-lg-5': sponsors }" v-if="certificationBodies">
<p>
Cartobio est un outil conçu <strong>avec et pour</strong>
Expand Down
25 changes: 25 additions & 0 deletions src/components/Landing/ProductFlow.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import { describe, expect, test } from "vitest"
import { mount } from "@vue/test-utils"

import ProductFlow from "./ProductFlow.vue"


describe("ProductFlow", () => {
test("for professionals", () => {
const wrapper = mount(ProductFlow, {
props: { },
})

expect(wrapper.find('.fr-container--fluid').classes('general-audience')).toEqual(false)
expect(wrapper.find('.big-steps > li').text()).toEqual('Importer votre parcellaireSe connecter')
})

test("for general audience", () => {
const wrapper = mount(ProductFlow, {
props: { generalAudience: true }
})

expect(wrapper.find('.fr-container--fluid').classes('general-audience')).toEqual(true)
expect(wrapper.find('.big-steps > li').text()).toEqual('Localiser votre territoireNaviguer sur la carte')
})
})
75 changes: 75 additions & 0 deletions src/components/MainHeader.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
import { afterEach, describe, expect, test, vi } from "vitest"
import { createTestingPinia } from "@pinia/testing"
import { flushPromises, mount } from "@vue/test-utils"
import { usePermissions, useUserStore } from "@/stores/index.js"
import { ROLES } from "@/stores/user.js"

import MainHeader from "./MainHeader.vue"

const pinia = createTestingPinia({ createSpy: vi.fn, stubActions: false })
const user = useUserStore(pinia)
const permissions = usePermissions(pinia)

describe("MainHeader", () => {
afterEach(() => {
user.$reset()
permissions.$reset()
})

test("as a guest", () => {
const wrapper = mount(MainHeader)

expect(wrapper.find('.tool-username').exists()).toEqual(false)
expect(wrapper.find('.fr-header__tools').text()).toEqual('Connexion')
expect(wrapper.find('.fr-notice').exists()).toEqual(true)
})

test("as a guest, on a general audience page", () => {
const wrapper = mount(MainHeader, {
global: {
mocks: {
$route: {
meta: { generalAudience: true }
}
}
}
})

expect(wrapper.find('.tool-username').exists()).toEqual(false)
expect(wrapper.find('.fr-header__tools').text()).toEqual('Accès professionnel')
})

test("as a certification body", async () => {
const wrapper = mount(MainHeader)
user.isLogged = true
user.roles = [ROLES.OC_AUDIT]
await flushPromises()

expect(wrapper.find('.tool-username a').classes('fr-icon-medal-fill')).toEqual(true)
expect(wrapper.find('[role="navigation"] a').attributes('href')).toEqual('/certification/exploitations')

await wrapper.find('.tool-logout a').trigger('click')
await flushPromises()
})

test("as a farmer", async () => {
const wrapper = mount(MainHeader)
user.isLogged = true
user.roles = [ROLES.OPERATEUR]
await flushPromises()

expect(wrapper.find('.tool-username a').classes('fr-icon-plant-fill')).toEqual(true)
expect(wrapper.find('[role="navigation"] a').attributes('href')).toEqual('/exploitations')
})

test("as unknown role", async () => {
const wrapper = mount(MainHeader)
user.isLogged = true
user.roles = []
await flushPromises()
console.log(wrapper.html())

expect(wrapper.find('.tool-username a').classes('fr-icon-account-circle-fill')).toEqual(true)
expect(wrapper.find('[role="navigation"]').exists()).toEqual(false)
})
})
4 changes: 2 additions & 2 deletions src/components/MainHeader.vue
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
</div>

<div class="fr-header__operator">
<img src="../assets/logo-agence-bio.svg" class="fr-responsive-img logo" alt="L'Agence Bio" />
<img src="@/assets/logo-agence-bio.svg" class="fr-responsive-img logo" alt="L'Agence Bio" />
</div>
</div>

Expand All @@ -27,7 +27,7 @@
</div>
</div>

<div class="fr-hidden fr-unhidden-lg fr-header__tools" :data-numero-bio="user.numeroBio">
<div class="fr-hidden fr-unhidden-lg fr-header__tools">
<div class="fr-header__tools-links">
<ul class="fr-btns-group" v-if="isLogged">
<li class="tool-username" aria-hidden="true">
Expand Down

0 comments on commit 9610dfc

Please sign in to comment.