feat: SEO SPA Sites, Articles and Integration (4/4)
This commit is contained in:
1 parent
cb737b7ae3
commit
02fb8751fd
47 files changed
+3218
-227
No files matched your search
@@ -10,6 +10,7 @@ describe('parseArticleQuery', () => {
|
||||
status: '',
|
||||
sort: '',
|
||||
site: '',
|
||||
seo: '',
|
||||
})
|
||||
})
|
||||
|
||||
@@ -29,6 +30,7 @@ describe('parseArticleQuery', () => {
|
||||
status: 'draft',
|
||||
sort: 'title:asc',
|
||||
site: '',
|
||||
seo: '',
|
||||
})
|
||||
})
|
||||
|
||||
@@ -67,7 +69,7 @@ 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, site: '' }
|
||||
const base = { page: 1, size: 25, q: '', status: '' as const, site: '', seo: '' as const }
|
||||
expect(toRouteQuery({ ...base, sort: 'updated_at:desc' })).toEqual({})
|
||||
expect(toRouteQuery({ ...base, sort: 'title:asc' })).toEqual({
|
||||
sort: 'title:asc',
|
||||
@@ -98,6 +100,7 @@ describe('toRouteQuery', () => {
|
||||
status: '',
|
||||
sort: '',
|
||||
site: '',
|
||||
seo: '',
|
||||
}),
|
||||
).toEqual({})
|
||||
})
|
||||
@@ -111,6 +114,7 @@ describe('toRouteQuery', () => {
|
||||
status: 'online',
|
||||
sort: 'title:desc',
|
||||
site: '',
|
||||
seo: '',
|
||||
}),
|
||||
).toEqual({
|
||||
page: '2',
|
||||
@@ -131,6 +135,7 @@ describe('sameArticleQuery', () => {
|
||||
status: '' as const,
|
||||
sort: '',
|
||||
site: '',
|
||||
seo: '',
|
||||
}
|
||||
expect(sameArticleQuery(base, { ...base })).toBe(true)
|
||||
expect(sameArticleQuery(base, { ...base, page: 2 })).toBe(false)
|
||||
@@ -148,7 +153,7 @@ describe('site parameter', () => {
|
||||
})
|
||||
|
||||
it('omits an empty site and tells two queries apart by their site', () => {
|
||||
const base = { page: 1, size: 25, q: '', status: '' as const, sort: '' }
|
||||
const base = { page: 1, size: 25, q: '', status: '' as const, sort: '', seo: '' as const }
|
||||
expect(toRouteQuery({ ...base, site: '' })).toEqual({})
|
||||
expect(sameArticleQuery({ ...base, site: 'journal' }, { ...base, site: '' })).toBe(false)
|
||||
expect(sameArticleQuery({ ...base, site: 'journal' }, { ...base, site: 'journal' })).toBe(
|
||||
@@ -156,3 +161,24 @@ describe('site parameter', () => {
|
||||
)
|
||||
})
|
||||
})
|
||||
|
||||
describe('seo parameter', () => {
|
||||
it('reads only the value suggestions and writes it after the site', () => {
|
||||
const parsed = parseArticleQuery({ site: 'journal', seo: 'suggestions' })
|
||||
expect(parsed.seo).toBe('suggestions')
|
||||
expect(Object.keys(toRouteQuery(parsed))).toEqual(['site', 'seo'])
|
||||
})
|
||||
|
||||
it.each(['maybe', '', 'READY', 'ready', 'hidden', 'suggestions,x'])(
|
||||
'drops the unknown value "%s"',
|
||||
(seo) => {
|
||||
expect(parseArticleQuery({ seo }).seo).toBe('')
|
||||
},
|
||||
)
|
||||
|
||||
it('tells two queries apart by their seo filter', () => {
|
||||
const base = parseArticleQuery({})
|
||||
expect(sameArticleQuery(base, { ...base, seo: 'suggestions' })).toBe(false)
|
||||
expect(sameArticleQuery(base, { ...base })).toBe(true)
|
||||
})
|
||||
})
|
||||
Reference in new issue
Block a user