Audit qualité : corrections de bugs, nettoyage, lint 0 erreur, tests #4
@@ -3,7 +3,7 @@ import Box from '@mui/material/Box'
|
|||||||
|
|
||||||
import {jwennTeksEpiSlug} from '../../../lib/oki-api'
|
import {jwennTeksEpiSlug} from '../../../lib/oki-api'
|
||||||
import AnTeks from '../../../components/teks/an-teks'
|
import AnTeks from '../../../components/teks/an-teks'
|
||||||
import {getAlias} from '../../../lib/utils/format'
|
import {getAlias} from '../../../lib/utils/get-alias'
|
||||||
import {formatKuveti} from '../../../lib/kuveti'
|
import {formatKuveti} from '../../../lib/kuveti'
|
||||||
import Footer from '../../../components/footer'
|
import Footer from '../../../components/footer'
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import Chip from '@mui/material/Chip'
|
|||||||
import Image from 'next/image'
|
import Image from 'next/image'
|
||||||
import Link from 'next/link'
|
import Link from 'next/link'
|
||||||
|
|
||||||
import {getAlias} from '../../lib/utils/format'
|
import {getAlias} from '../../lib/utils/get-alias'
|
||||||
import {formatKuveti} from '../../lib/kuveti'
|
import {formatKuveti} from '../../lib/kuveti'
|
||||||
|
|
||||||
const IMAGE_URL = process.env.NEXT_PUBLIC_API_URL_ROOT || 'http://localhost:1337'
|
const IMAGE_URL = process.env.NEXT_PUBLIC_API_URL_ROOT || 'http://localhost:1337'
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import LibraryMusicIcon from '@mui/icons-material/LibraryMusic'
|
|||||||
import ExplicitIcon from '@mui/icons-material/Explicit'
|
import ExplicitIcon from '@mui/icons-material/Explicit'
|
||||||
|
|
||||||
import {esBrandNew} from '../../lib/date'
|
import {esBrandNew} from '../../lib/date'
|
||||||
import {getAlias} from '../../lib/utils/format'
|
import {getAlias} from '../../lib/utils/get-alias'
|
||||||
|
|
||||||
const apiUrl = process.env.NEXT_PUBLIC_API_URL_ROOT || 'http://localhost:1337'
|
const apiUrl = process.env.NEXT_PUBLIC_API_URL_ROOT || 'http://localhost:1337'
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ import Image from 'next/image'
|
|||||||
import {grey} from '@mui/material/colors'
|
import {grey} from '@mui/material/colors'
|
||||||
import {Link} from '@mui/material'
|
import {Link} from '@mui/material'
|
||||||
|
|
||||||
import {getAlias} from '../../lib/utils/format'
|
import {getAlias} from '../../lib/utils/get-alias'
|
||||||
import {formatKuveti} from '../../lib/kuveti'
|
import {formatKuveti} from '../../lib/kuveti'
|
||||||
|
|
||||||
const IMAGE_URL = process.env.NEXT_PUBLIC_API_URL_ROOT || 'http://localhost:1337'
|
const IMAGE_URL = process.env.NEXT_PUBLIC_API_URL_ROOT || 'http://localhost:1337'
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ import Grid from '@mui/material/Grid'
|
|||||||
import ExplicitIcon from '@mui/icons-material/Explicit'
|
import ExplicitIcon from '@mui/icons-material/Explicit'
|
||||||
import {styled} from '@mui/material/styles'
|
import {styled} from '@mui/material/styles'
|
||||||
|
|
||||||
import {getAlias} from '../../lib/utils/format'
|
import {getAlias} from '../../lib/utils/get-alias'
|
||||||
import {formatKuveti} from '../../lib/kuveti'
|
import {formatKuveti} from '../../lib/kuveti'
|
||||||
|
|
||||||
const PREFIX = 'teks-kat'
|
const PREFIX = 'teks-kat'
|
||||||
|
|||||||
@@ -18,7 +18,8 @@ import ArrowForwardIosIcon from '@mui/icons-material/ArrowForwardIos'
|
|||||||
|
|
||||||
import Image from 'next/image'
|
import Image from 'next/image'
|
||||||
|
|
||||||
import {formatJsonString, getAlias} from '../../lib/utils/format'
|
import {formatJsonString} from '../../lib/utils/format'
|
||||||
|
import {getAlias} from '../../lib/utils/get-alias'
|
||||||
import {formatKuveti} from '../../lib/kuveti'
|
import {formatKuveti} from '../../lib/kuveti'
|
||||||
|
|
||||||
import LicenseModal from '../cc/license-modal'
|
import LicenseModal from '../cc/license-modal'
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
import {describe, it, expect} from 'vitest'
|
||||||
|
import {getAlias} from '../get-alias'
|
||||||
|
|
||||||
|
describe('getAlias', () => {
|
||||||
|
it('retourne une chaîne vide sans planter quand artistes est undefined', () => {
|
||||||
|
expect(getAlias(undefined)).toBe('')
|
||||||
|
})
|
||||||
|
|
||||||
|
it('retourne une chaîne vide sans planter quand artistes est un tableau vide', () => {
|
||||||
|
expect(getAlias([])).toBe('')
|
||||||
|
})
|
||||||
|
|
||||||
|
it('retourne l\'alias unique quand il n\'y a qu\'un artiste', () => {
|
||||||
|
expect(getAlias([{id: 1, alias: 'Foo'}])).toBe('Foo')
|
||||||
|
})
|
||||||
|
|
||||||
|
it('ignore un id de priorité qui ne correspond à aucun artiste (donnée obsolète)', () => {
|
||||||
|
const artistes = [{id: 1, alias: 'Foo'}, {id: 2, alias: 'Bar'}]
|
||||||
|
expect(getAlias(artistes, '1-99-2')).toBe('Foo et Bar')
|
||||||
|
})
|
||||||
|
|
||||||
|
it('formate plusieurs artistes selon la priorité fournie', () => {
|
||||||
|
const artistes = [{id: 1, alias: 'Foo'}, {id: 2, alias: 'Bar'}]
|
||||||
|
expect(getAlias(artistes, '2-1')).toBe('Bar et Foo')
|
||||||
|
})
|
||||||
|
})
|
||||||
@@ -1,54 +1,2 @@
|
|||||||
import slugify from 'slugify'
|
|
||||||
|
|
||||||
export const formatJsonString = stringToFormat =>
|
export const formatJsonString = stringToFormat =>
|
||||||
stringToFormat.split('\n').map((string, index) => <div key={index}>{`${string}`}<br /></div>) // eslint-disable-line react/no-array-index-key
|
stringToFormat.split('\n').map((string, index) => <div key={index}>{`${string}`}<br /></div>) // eslint-disable-line react/no-array-index-key
|
||||||
|
|
||||||
export const getAlias = (artistes, priorite = null, enhanced = false) => {
|
|
||||||
if (artistes.length === 1 && !enhanced) {
|
|
||||||
return artistes[0].alias
|
|
||||||
}
|
|
||||||
|
|
||||||
if (artistes.length === 1 && enhanced) {
|
|
||||||
return [{
|
|
||||||
type: 'element',
|
|
||||||
value: artistes[0].alias
|
|
||||||
}]
|
|
||||||
}
|
|
||||||
|
|
||||||
const alias = []
|
|
||||||
const splittedPriority = priorite ? priorite.split('-')
|
|
||||||
.map(p => Number.parseInt(p, 10)) : null
|
|
||||||
|
|
||||||
if (splittedPriority) {
|
|
||||||
for (const element of splittedPriority) {
|
|
||||||
const foundedArtistes = artistes.find(({id}) => id === element)
|
|
||||||
alias.push(foundedArtistes.alias)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
for (const artiste of artistes) {
|
|
||||||
alias.push(artiste.alias)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (enhanced) {
|
|
||||||
const list = new Intl.ListFormat('fr').formatToParts(alias)
|
|
||||||
return list
|
|
||||||
}
|
|
||||||
|
|
||||||
return new Intl.ListFormat('fr').format(alias)
|
|
||||||
}
|
|
||||||
|
|
||||||
function separateString(inputString) {
|
|
||||||
const regex = /\s*,\s*|\s+et\s+/
|
|
||||||
const strings = inputString.split(regex).map(element => element.trim())
|
|
||||||
return strings
|
|
||||||
}
|
|
||||||
|
|
||||||
export const getAliasObject = inputString => {
|
|
||||||
const awtis = separateString(inputString)
|
|
||||||
|
|
||||||
return awtis.map(alias => ({
|
|
||||||
alias,
|
|
||||||
slug: slugify(alias, {lower: true, remove: /[*#+~.()'"!:@]/g})
|
|
||||||
}))
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -0,0 +1,55 @@
|
|||||||
|
import slugify from 'slugify'
|
||||||
|
|
||||||
|
export const getAlias = (artistes, priorite = null, enhanced = false) => {
|
||||||
|
const safeArtistes = artistes || []
|
||||||
|
|
||||||
|
if (safeArtistes.length === 1 && !enhanced) {
|
||||||
|
return safeArtistes[0].alias
|
||||||
|
}
|
||||||
|
|
||||||
|
if (safeArtistes.length === 1 && enhanced) {
|
||||||
|
return [{
|
||||||
|
type: 'element',
|
||||||
|
value: safeArtistes[0].alias
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
|
||||||
|
const alias = []
|
||||||
|
const splittedPriority = priorite ? priorite.split('-')
|
||||||
|
.map(p => Number.parseInt(p, 10)) : null
|
||||||
|
|
||||||
|
if (splittedPriority) {
|
||||||
|
for (const element of splittedPriority) {
|
||||||
|
const foundedArtistes = safeArtistes.find(({id}) => id === element)
|
||||||
|
if (foundedArtistes) {
|
||||||
|
alias.push(foundedArtistes.alias)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for (const artiste of safeArtistes) {
|
||||||
|
alias.push(artiste.alias)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (enhanced) {
|
||||||
|
const list = new Intl.ListFormat('fr').formatToParts(alias)
|
||||||
|
return list
|
||||||
|
}
|
||||||
|
|
||||||
|
return new Intl.ListFormat('fr').format(alias)
|
||||||
|
}
|
||||||
|
|
||||||
|
function separateString(inputString) {
|
||||||
|
const regex = /\s*,\s*|\s+et\s+/
|
||||||
|
const strings = inputString.split(regex).map(element => element.trim())
|
||||||
|
return strings
|
||||||
|
}
|
||||||
|
|
||||||
|
export const getAliasObject = inputString => {
|
||||||
|
const awtis = separateString(inputString)
|
||||||
|
|
||||||
|
return awtis.map(alias => ({
|
||||||
|
alias,
|
||||||
|
slug: slugify(alias, {lower: true, remove: /[*#+~.()'"!:@]/g})
|
||||||
|
}))
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user