Skip to content

Commit 1d3ca18

Browse files
test: Add multiple nesting levels test for OPDS indirectAcquisition
1 parent ee30c02 commit 1d3ca18

2 files changed

Lines changed: 82 additions & 0 deletions

File tree

src/namespaces/opds/generate/utils.test.ts

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,49 @@ describe('generateIndirectAcquisition', () => {
142142
expect(generateIndirectAcquisition(value)).toEqual(expected)
143143
})
144144

145+
it('should generate multiple levels of nested indirect acquisitions', () => {
146+
const value = {
147+
type: 'text/html',
148+
indirectAcquisitions: [
149+
{
150+
type: 'application/atom+xml',
151+
indirectAcquisitions: [
152+
{
153+
type: 'application/epub+zip',
154+
indirectAcquisitions: [
155+
{
156+
type: 'application/x-mobipocket-ebook',
157+
indirectAcquisitions: [{ type: 'application/pdf' }],
158+
},
159+
],
160+
},
161+
],
162+
},
163+
],
164+
}
165+
const expected = {
166+
'@type': 'text/html',
167+
'opds:indirectAcquisition': [
168+
{
169+
'@type': 'application/atom+xml',
170+
'opds:indirectAcquisition': [
171+
{
172+
'@type': 'application/epub+zip',
173+
'opds:indirectAcquisition': [
174+
{
175+
'@type': 'application/x-mobipocket-ebook',
176+
'opds:indirectAcquisition': [{ '@type': 'application/pdf' }],
177+
},
178+
],
179+
},
180+
],
181+
},
182+
],
183+
}
184+
185+
expect(generateIndirectAcquisition(value)).toEqual(expected)
186+
})
187+
145188
it('should filter out invalid nested acquisitions', () => {
146189
const value = {
147190
type: 'application/epub+zip',

src/namespaces/opds/parse/utils.test.ts

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,45 @@ describe('parseIndirectAcquisition', () => {
158158
expect(parseIndirectAcquisition(value)).toEqual(expected)
159159
})
160160

161+
it('should parse multiple levels of nested indirect acquisitions', () => {
162+
const value = {
163+
'@type': 'text/html',
164+
'opds:indirectacquisition': {
165+
'@type': 'application/atom+xml',
166+
'opds:indirectacquisition': {
167+
'@type': 'application/epub+zip',
168+
'opds:indirectacquisition': {
169+
'@type': 'application/x-mobipocket-ebook',
170+
'opds:indirectacquisition': {
171+
'@type': 'application/pdf',
172+
},
173+
},
174+
},
175+
},
176+
}
177+
const expected = {
178+
type: 'text/html',
179+
indirectAcquisitions: [
180+
{
181+
type: 'application/atom+xml',
182+
indirectAcquisitions: [
183+
{
184+
type: 'application/epub+zip',
185+
indirectAcquisitions: [
186+
{
187+
type: 'application/x-mobipocket-ebook',
188+
indirectAcquisitions: [{ type: 'application/pdf' }],
189+
},
190+
],
191+
},
192+
],
193+
},
194+
],
195+
}
196+
197+
expect(parseIndirectAcquisition(value)).toEqual(expected)
198+
})
199+
161200
it('should filter out invalid nested acquisitions', () => {
162201
const value = {
163202
'@type': 'application/epub+zip',

0 commit comments

Comments
 (0)