feat: sites and authors integration into existing screens (& formated all frontend files kinda accidentally)

This commit is contained in:
Florian Sylvain committed 2026-10-15 05:25:44 +02:00
1 parent 3d81d2c717
commit 6b8990c55e
239 files changed
+9194 -1354

No files matched your search

+63 -7
View File
@@ -3,7 +3,14 @@ import { nextSort, parseArticleQuery, sameArticleQuery, toRouteQuery } from '@/l
describe('parseArticleQuery', () => {
it('falls back to page 1, size 25, no search and the All tab', () => {
expect(parseArticleQuery({})).toEqual({ page: 1, size: 25, q: '', status: '', sort: '' })
expect(parseArticleQuery({})).toEqual({
page: 1,
size: 25,
q: '',
status: '',
sort: '',
site: '',
})
})
it('reads valid values', () => {
@@ -15,7 +22,14 @@ describe('parseArticleQuery', () => {
status: 'draft',
sort: 'title:asc',
}),
).toEqual({ page: 7, size: 50, q: 'plaster', status: 'draft', sort: 'title:asc' })
).toEqual({
page: 7,
size: 50,
q: 'plaster',
status: 'draft',
sort: 'title:asc',
site: '',
})
})
it.each(['abc', '0', '-2', '2.5', '', '1e2'])('treats page "%s" as 1', (page) => {
@@ -53,9 +67,11 @@ describe('sort parameter', () => {
})
it('omits the default from the route and treats it as equal to no sort', () => {
const base = { page: 1, size: 25, q: '', status: '' as const }
const base = { page: 1, size: 25, q: '', status: '' as const, site: '' }
expect(toRouteQuery({ ...base, sort: 'updated_at:desc' })).toEqual({})
expect(toRouteQuery({ ...base, sort: 'title:asc' })).toEqual({ sort: 'title:asc' })
expect(toRouteQuery({ ...base, sort: 'title:asc' })).toEqual({
sort: 'title:asc',
})
expect(sameArticleQuery({ ...base, sort: '' }, { ...base, sort: 'updated_at:desc' })).toBe(
true,
)
@@ -74,12 +90,28 @@ describe('sort parameter', () => {
describe('toRouteQuery', () => {
it('omits every default', () => {
expect(toRouteQuery({ page: 1, size: 25, q: '', status: '', sort: '' })).toEqual({})
expect(
toRouteQuery({
page: 1,
size: 25,
q: '',
status: '',
sort: '',
site: '',
}),
).toEqual({})
})
it('keeps what differs from the defaults', () => {
expect(
toRouteQuery({ page: 2, size: 5, q: 'plaster', status: 'online', sort: 'title:desc' }),
toRouteQuery({
page: 2,
size: 5,
q: 'plaster',
status: 'online',
sort: 'title:desc',
site: '',
}),
).toEqual({
page: '2',
size: '5',
@@ -92,7 +124,14 @@ describe('toRouteQuery', () => {
describe('sameArticleQuery', () => {
it('compares every field', () => {
const base = { page: 1, size: 25, q: '', status: '' as const, sort: '' }
const base = {
page: 1,
size: 25,
q: '',
status: '' as const,
sort: '',
site: '',
}
expect(sameArticleQuery(base, { ...base })).toBe(true)
expect(sameArticleQuery(base, { ...base, page: 2 })).toBe(false)
expect(sameArticleQuery(base, { ...base, size: 5 })).toBe(false)
@@ -100,3 +139,20 @@ describe('sameArticleQuery', () => {
expect(sameArticleQuery(base, { ...base, status: 'draft' })).toBe(false)
})
})
describe('site parameter', () => {
it('reads the site key and writes it back to the route', () => {
const parsed = parseArticleQuery({ site: 'journal' })
expect(parsed.site).toBe('journal')
expect(toRouteQuery(parsed)).toEqual({ site: 'journal' })
})
it('omits an empty site and tells two queries apart by their site', () => {
const base = { page: 1, size: 25, q: '', status: '' as const, sort: '' }
expect(toRouteQuery({ ...base, site: '' })).toEqual({})
expect(sameArticleQuery({ ...base, site: 'journal' }, { ...base, site: '' })).toBe(false)
expect(sameArticleQuery({ ...base, site: 'journal' }, { ...base, site: 'journal' })).toBe(
true,
)
})
})