/
draftUtils.test.ts
38 lines (33 loc) · 1.65 KB
/
draftUtils.test.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import {SanityDocument} from '@sanity/types'
import {collate, documentIdEquals, removeDupes} from './draftUtils'
test('collate()', () => {
const foo = {_type: 'foo', _id: 'foo'}
const fooDraft = {_type: 'foo', _id: 'drafts.foo'}
const barDraft = {_type: 'foo', _id: 'drafts.bar'}
const baz = {_type: 'foo', _id: 'baz'}
expect(collate([foo, fooDraft, barDraft, baz])).toEqual([
{type: 'foo', id: 'foo', draft: fooDraft, published: foo},
{type: 'foo', id: 'bar', draft: barDraft},
{type: 'foo', id: 'baz', published: baz},
])
})
test('removeDupes()', () => {
const foo = {_type: 'foo', _id: 'foo'} as SanityDocument
const fooDraft = {_type: 'foo', _id: 'drafts.foo'} as SanityDocument
const barDraft = {_type: 'foo', _id: 'drafts.bar'} as SanityDocument
const baz = {_type: 'foo', _id: 'baz'} as SanityDocument
expect(removeDupes([foo, fooDraft, barDraft, baz])).toEqual([fooDraft, barDraft, baz])
})
test.each([
['full equality, published', 'agot', 'agot', true],
['full equality, drafts', 'drafts.agot', 'drafts.agot', true],
['lhs draft, rhs published', 'drafts.agot', 'agot', true],
['rhs draft, lhs published', 'agot', 'drafts.agot', true],
['differing documents', 'agot', 'adwd', false],
['differing documents, draft lhs', 'drafts.agot', 'adwd', false],
['differing documents, draft rhs', 'agot', 'drafts.adwd', false],
['lhs non-draft prefix, otherwise equality', 'notes.agot', 'agot', false],
['rhs non-draft prefix, otherwise equality', 'agot', 'notes.agot', false],
])('documentIdEquals(): %s', (_, documentId, equalsDocumentId, shouldEqual) => {
expect(documentIdEquals(documentId, equalsDocumentId)).toEqual(shouldEqual)
})