import { parse as parseDevalue } from 'devalue'; import { expect } from 'chai'; import { loadFixture, fixLineEndings } from '../../../astro/test/test-utils.js'; import markdoc from '../dist/index.js'; function formatPost(post) { return { ...post, body: fixLineEndings(post.body), }; } const root = new URL('./fixtures/content-collections/', import.meta.url); describe('Markdoc - Content Collections', () => { let baseFixture; before(async () => { baseFixture = await loadFixture({ root, integrations: [markdoc()], }); }); describe('dev', () => { let devServer; before(async () => { devServer = await baseFixture.startDevServer(); }); after(async () => { await devServer.stop(); }); it('loads entry', async () => { const res = await baseFixture.fetch('/entry.json'); const post = parseDevalue(await res.text()); expect(formatPost(post)).to.deep.equal(post1Entry); }); it('loads collection', async () => { const res = await baseFixture.fetch('/collection.json'); const posts = parseDevalue(await res.text()); expect(posts).to.not.be.null; expect(posts.sort().map((post) => formatPost(post))).to.deep.equal([ post1Entry, post2Entry, post3Entry, ]); }); }); describe('build', () => { before(async () => { await baseFixture.build(); }); it('loads entry', async () => { const res = await baseFixture.readFile('/entry.json'); const post = parseDevalue(res); expect(formatPost(post)).to.deep.equal(post1Entry); }); it('loads collection', async () => { const res = await baseFixture.readFile('/collection.json'); const posts = parseDevalue(res); expect(posts).to.not.be.null; expect(posts.sort().map((post) => formatPost(post))).to.deep.equal([ post1Entry, post2Entry, post3Entry, ]); }); }); }); const post1Entry = { id: 'post-1.mdoc', slug: 'post-1', collection: 'blog', data: { schemaWorks: true, title: 'Post 1', }, body: '\n## Post 1\n\nThis is the contents of post 1.\n', }; const post2Entry = { id: 'post-2.mdoc', slug: 'post-2', collection: 'blog', data: { schemaWorks: true, title: 'Post 2', }, body: '\n## Post 2\n\nThis is the contents of post 2.\n', }; const post3Entry = { id: 'post-3.mdoc', slug: 'post-3', collection: 'blog', data: { schemaWorks: true, title: 'Post 3', }, body: '\n## Post 3\n\nThis is the contents of post 3.\n', };