forked from Ivasoft/geovisio-website
205 lines
6.1 KiB
JavaScript
205 lines
6.1 KiB
JavaScript
import { it, describe, expect } from 'vitest'
|
|
import {
|
|
imageStatus,
|
|
photoToDeleteOrPatchSelected,
|
|
spliceIntoChunks,
|
|
formatPaginationItems
|
|
} from '../../views/utils/sequence/index'
|
|
import {
|
|
formatPictureSize,
|
|
formatTextSize,
|
|
sortByName
|
|
} from '../../views/utils/upload/index'
|
|
import { getAuthRoute } from '../../utils/auth'
|
|
import { img } from '../../utils/image'
|
|
import { title } from '../../utils/index'
|
|
|
|
describe('imageStatus', () => {
|
|
it('should render the "status" value', () => {
|
|
const sequenceStatus = 'hidden'
|
|
const imgStatus = 'not hidden'
|
|
expect(imageStatus(imgStatus, sequenceStatus)).toEqual('hidden')
|
|
})
|
|
it('should render the "sequenceStatus" value', () => {
|
|
const sequenceStatus = 'not hidden'
|
|
const status = 'hidden'
|
|
expect(imageStatus(status, sequenceStatus)).toEqual('hidden')
|
|
})
|
|
})
|
|
|
|
describe('photoToDeleteOrPatchSelected', () => {
|
|
it('should render true', () => {
|
|
const imagesToDelete = ['1', '2']
|
|
const item = {
|
|
assets: { thumb: { href: '' }, hd: { href: '' } },
|
|
properties: { created: new Date(), 'geovisio:status': '' },
|
|
id: '1',
|
|
bbox: [1, 3]
|
|
}
|
|
expect(photoToDeleteOrPatchSelected(item, imagesToDelete)).toEqual(true)
|
|
})
|
|
it('should render false', () => {
|
|
const imagesToDelete = ['1', '2']
|
|
const item = {
|
|
assets: { thumb: { href: '' }, hd: { href: '' } },
|
|
properties: { created: new Date(), 'geovisio:status': '' },
|
|
id: '3',
|
|
bbox: [1, 3]
|
|
}
|
|
expect(photoToDeleteOrPatchSelected(item, imagesToDelete)).toEqual(false)
|
|
})
|
|
})
|
|
|
|
describe('spliceIntoChunks', () => {
|
|
it('should render an chunked array of array with 4 elements max', () => {
|
|
const array = ['123', '345', '6777', '0000', '66666', '222222', '9393888']
|
|
const chunkSize = 4
|
|
expect(spliceIntoChunks(array, chunkSize)).toEqual([
|
|
['123', '345', '6777', '0000'],
|
|
['66666', '222222', '9393888']
|
|
])
|
|
})
|
|
})
|
|
|
|
describe('formatPaginationItems', () => {
|
|
it('should render the "rel" links formated and without the "left" element', () => {
|
|
const links = [
|
|
{
|
|
href: 'http://localhost:5000/api/',
|
|
rel: 'root',
|
|
title: 'Instance catalog',
|
|
type: 'application/json'
|
|
},
|
|
{
|
|
href: 'http://localhost:5000/api/collections/076e04c2-5ff5-4d70-88fa-6b2be3357709',
|
|
rel: 'parent',
|
|
type: 'application/json'
|
|
},
|
|
{
|
|
href: 'http://localhost:5000/api/collections/076e04c2-5ff5-4d70-88fa-6b2be3357709/items?limit=100',
|
|
rel: 'self',
|
|
type: 'application/geo+json'
|
|
},
|
|
{
|
|
href: 'http://localhost:5000/api/collections/076e04c2-5ff5-4d70-88fa-6b2be3357709/items?limit=100',
|
|
rel: 'first',
|
|
type: 'application/geo+json'
|
|
},
|
|
{
|
|
href: 'http://localhost:5000/api/collections/076e04c2-5ff…a-6b2be3357709/items?limit=100&startAfterRank=100',
|
|
rel: 'next',
|
|
type: 'application/geo+json'
|
|
},
|
|
{
|
|
href: 'http://localhost:5000/api/collections/076e04c2-5ff…-6b2be3357709/items?limit=100&startAfterRank=1023',
|
|
rel: 'last',
|
|
type: 'application/geo+json'
|
|
}
|
|
]
|
|
expect(formatPaginationItems(links)).toEqual([
|
|
{
|
|
href: 'http://localhost:5000/api/collections/076e04c2-5ff5-4d70-88fa-6b2be3357709/items?limit=100',
|
|
rel: 'double-left',
|
|
type: 'application/geo+json'
|
|
},
|
|
{
|
|
href: 'http://localhost:5000/api/collections/076e04c2-5ff…a-6b2be3357709/items?limit=100&startAfterRank=100',
|
|
rel: 'right',
|
|
type: 'application/geo+json'
|
|
},
|
|
{
|
|
href: 'http://localhost:5000/api/collections/076e04c2-5ff…-6b2be3357709/items?limit=100&startAfterRank=1023',
|
|
rel: 'double-right',
|
|
type: 'application/geo+json'
|
|
}
|
|
])
|
|
})
|
|
})
|
|
|
|
describe('formatPictureSize', () => {
|
|
it('should render the size number', () => {
|
|
const size = 560673
|
|
expect(formatPictureSize(size)).toEqual(1)
|
|
})
|
|
})
|
|
|
|
describe('formatTextSize', () => {
|
|
const size = 2260121
|
|
it('should render the size text formated in ko', () => {
|
|
expect(formatTextSize(size, 1)).toEqual('2207.15 Ko')
|
|
})
|
|
it('should render the size text formated in mo', () => {
|
|
expect(formatTextSize(size, 2)).toEqual('2.16 Mo')
|
|
})
|
|
it('should render the size text formated in go', () => {
|
|
expect(formatTextSize(size, 3)).toEqual('0 Go')
|
|
})
|
|
})
|
|
|
|
describe('getAuthRoute', () => {
|
|
it('should render auth route', () => {
|
|
import.meta.env.VITE_API_URL = 'my-url/'
|
|
const authRoute = 'auth'
|
|
const nextRoute = 'mes-sequences'
|
|
const returnedRoute = `${
|
|
import.meta.env.VITE_API_URL
|
|
}api/${authRoute}?next_url=${encodeURIComponent(
|
|
`${location.protocol}//${location.host}${nextRoute}`
|
|
)}`
|
|
expect(getAuthRoute(authRoute, nextRoute)).toEqual(returnedRoute)
|
|
})
|
|
})
|
|
|
|
describe('img', () => {
|
|
it('should render the formated img path', () => {
|
|
const name = 'my-img'
|
|
expect(img(name)).contains('src/assets/images')
|
|
})
|
|
})
|
|
|
|
describe('title', () => {
|
|
it('should return the formated title with instance name', () => {
|
|
import.meta.env.VITE_INSTANCE_NAME = 'my instance'
|
|
const myTitle = 'my title'
|
|
expect(title(myTitle)).toEqual('my title my instance')
|
|
})
|
|
it('should return the formated title without instance name', () => {
|
|
import.meta.env.VITE_INSTANCE_NAME = ''
|
|
const myTitle = 'my title'
|
|
expect(title(myTitle)).toEqual('my title')
|
|
})
|
|
})
|
|
|
|
describe('sortByName', () => {
|
|
it('should return the the list sorted by name', () => {
|
|
const list1 = [
|
|
{ name: 'd_1_ct.jpg' },
|
|
{ name: 'd_11_ct.jpg' },
|
|
{ name: 'd_2_ct.jpg' }
|
|
]
|
|
expect(sortByName(list1)).toEqual([
|
|
{ name: 'd_1_ct.jpg' },
|
|
{ name: 'd_2_ct.jpg' },
|
|
{ name: 'd_11_ct.jpg' }
|
|
])
|
|
|
|
const list2 = [{ name: 'A.jpg' }, { name: 'Z.jpg' }, { name: 'B.jpg' }]
|
|
expect(sortByName(list2)).toEqual([
|
|
{ name: 'A.jpg' },
|
|
{ name: 'B.jpg' },
|
|
{ name: 'Z.jpg' }
|
|
])
|
|
|
|
const list3 = [
|
|
{ name: 'CAM1_001.jpg' },
|
|
{ name: 'CAM2_002.jpg' },
|
|
{ name: 'CAM1_011.jpg' }
|
|
]
|
|
expect(sortByName(list3)).toEqual([
|
|
{ name: 'CAM1_001.jpg' },
|
|
{ name: 'CAM1_011.jpg' },
|
|
{ name: 'CAM2_002.jpg' }
|
|
])
|
|
})
|
|
})
|