feat: sites and authors integration into existing screens (& formated all frontend files kinda accidentally)
This commit is contained in:
1 parent
3d81d2c717
commit
6b8990c55e
239 files changed
+9194
-1354
No files matched your search
@@ -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,
|
||||
)
|
||||
})
|
||||
})
|
||||
Reference in new issue
Block a user