diff options
-rw-r--r-- | packages/astro/test/content-collection-references.nodetest.js (renamed from packages/astro/test/content-collection-references.test.js) | 65 | ||||
-rw-r--r-- | packages/astro/test/content-collections-render.nodetest.js (renamed from packages/astro/test/content-collections-render.test.js) | 108 |
2 files changed, 94 insertions, 79 deletions
diff --git a/packages/astro/test/content-collection-references.test.js b/packages/astro/test/content-collection-references.nodetest.js index da1548621..bf31f5dc4 100644 --- a/packages/astro/test/content-collection-references.test.js +++ b/packages/astro/test/content-collection-references.nodetest.js @@ -1,4 +1,5 @@ -import { expect } from 'chai'; +import * as assert from 'node:assert/strict'; +import { after, describe, before, it } from 'node:test'; import * as cheerio from 'cheerio'; import { fixLineEndings, loadFixture } from './test-utils.js'; @@ -39,31 +40,32 @@ describe('Content Collections - references', () => { }); it('Returns expected keys', () => { - expect(json).to.haveOwnProperty('welcomePost'); - expect(json).to.haveOwnProperty('banner'); - expect(json).to.haveOwnProperty('author'); - expect(json).to.haveOwnProperty('relatedPosts'); + assert.ok(json.hasOwnProperty('welcomePost')); + assert.ok(json.hasOwnProperty('banner')); + assert.ok(json.hasOwnProperty('author')); + assert.ok(json.hasOwnProperty('relatedPosts')); }); it('Returns `banner` data', () => { const { banner } = json; - expect(banner).to.haveOwnProperty('data'); - expect(banner.id).to.equal('welcome'); - expect(banner.collection).to.equal('banners'); - expect(banner.data.alt).to.equal( + assert.ok(banner.hasOwnProperty('data')); + assert.equal(banner.id, 'welcome'); + assert.equal(banner.collection, 'banners'); + assert.equal( + banner.data.alt, 'Futuristic landscape with chrome buildings and blue skies' ); - expect(banner.data.src.width).to.equal(400); - expect(banner.data.src.height).to.equal(225); - expect(banner.data.src.format).to.equal('jpg'); - expect(banner.data.src.src.includes('the-future')).to.be.true; + assert.equal(banner.data.src.width, 400); + assert.equal(banner.data.src.height, 225); + assert.equal(banner.data.src.format, 'jpg'); + assert.equal(banner.data.src.src.includes('the-future'), true); }); it('Returns `author` data', () => { const { author } = json; - expect(author).to.haveOwnProperty('data'); - expect(author).to.deep.equal({ + assert.ok(author.hasOwnProperty('data')); + assert.deepEqual(author, { id: 'nate-moore', collection: 'authors', data: { @@ -75,12 +77,12 @@ describe('Content Collections - references', () => { it('Returns `relatedPosts` data', () => { const { relatedPosts } = json; - expect(Array.isArray(relatedPosts)).to.be.true; + assert.equal(Array.isArray(relatedPosts), true, 'Expected relatedPosts to be an array'); const topLevelInfo = relatedPosts.map(({ data, body, ...meta }) => ({ ...meta, body: fixLineEndings(body).trim(), })); - expect(topLevelInfo).to.deep.equal([ + assert.deepEqual(topLevelInfo, [ { id: 'related-1.md', slug: 'related-1', @@ -95,7 +97,7 @@ describe('Content Collections - references', () => { }, ]); const postData = relatedPosts.map(({ data }) => data); - expect(postData).to.deep.equal([ + assert.deepEqual(postData, [ { title: 'Related post 1', banner: { id: 'welcome', collection: 'banners' }, @@ -125,32 +127,33 @@ describe('Content Collections - references', () => { it('Renders `banner` data', () => { const banner = $('img[data-banner]'); - expect(banner.length).to.equal(1); - expect(banner.attr('src')).to.include('the-future'); - expect(banner.attr('alt')).to.equal( + assert.equal(banner.length, 1); + assert.ok(banner.attr('src').includes('the-future')); + assert.equal( + banner.attr('alt'), 'Futuristic landscape with chrome buildings and blue skies' ); - expect(banner.attr('width')).to.equal('400'); - expect(banner.attr('height')).to.equal('225'); + assert.equal(banner.attr('width'), '400'); + assert.equal(banner.attr('height'), '225'); }); it('Renders `author` data', () => { const author = $('a[data-author-name]'); - expect(author.length).to.equal(1); - expect(author.attr('href')).to.equal('https://twitter.com/n_moore'); - expect(author.text()).to.equal('Nate Something Moore'); + assert.equal(author.length, 1); + assert.equal(author.attr('href'), 'https://twitter.com/n_moore'); + assert.equal(author.text(), 'Nate Something Moore'); }); it('Renders `relatedPosts` data', () => { const relatedPosts = $('ul[data-related-posts]'); - expect(relatedPosts.length).to.equal(1); + assert.equal(relatedPosts.length, 1); const relatedPost1 = relatedPosts.find('li').eq(0); - expect(relatedPost1.find('a').attr('href')).to.equal('/blog/related-1'); - expect(relatedPost1.find('a').text()).to.equal('Related post 1'); + assert.equal(relatedPost1.find('a').attr('href'), '/blog/related-1'); + assert.equal(relatedPost1.find('a').text(), 'Related post 1'); const relatedPost2 = relatedPosts.find('li').eq(1); - expect(relatedPost2.find('a').attr('href')).to.equal('/blog/related-2'); - expect(relatedPost2.find('a').text()).to.equal('Related post 2'); + assert.equal(relatedPost2.find('a').attr('href'), '/blog/related-2'); + assert.equal(relatedPost2.find('a').text(), 'Related post 2'); }); }); }); diff --git a/packages/astro/test/content-collections-render.test.js b/packages/astro/test/content-collections-render.nodetest.js index 27eb33b5a..9fbd78350 100644 --- a/packages/astro/test/content-collections-render.test.js +++ b/packages/astro/test/content-collections-render.nodetest.js @@ -1,9 +1,12 @@ -import { expect } from 'chai'; +import * as assert from 'node:assert/strict'; +import { after, describe, before, it } from 'node:test'; import * as cheerio from 'cheerio'; import { loadFixture, isWindows } from './test-utils.js'; import testAdapter from './test-adapter.js'; -const describe = isWindows ? global.describe.skip : global.describe; +if(!isWindows) { + describe() +} describe('Content Collections - render()', () => { describe('Build - SSG', () => { @@ -24,10 +27,10 @@ describe('Content Collections - render()', () => { const $ = cheerio.load(html); // Renders content - expect($('ul li')).to.have.a.lengthOf(3); + assert.equal($('ul li').length, 3); // Includes styles - expect($('link[rel=stylesheet]')).to.have.a.lengthOf(1); + assert.equal($('link[rel=stylesheet]').length, 1); }); it('Excludes CSS for non-rendered entries', async () => { @@ -35,7 +38,7 @@ describe('Content Collections - render()', () => { const $ = cheerio.load(html); // Excludes styles - expect($('link[rel=stylesheet]')).to.have.a.lengthOf(0); + assert.equal($('link[rel=stylesheet]').length, 0); }); it('De-duplicates CSS used both in layout and directly in target page', async () => { @@ -46,13 +49,13 @@ describe('Content Collections - render()', () => { $('link[rel=stylesheet]').each((_, linkEl) => { const href = linkEl.attribs.href; - expect(set).to.not.contain(href); + assert.equal(set.has(href), false); set.add(href); }); $('style').each((_, styleEl) => { const textContent = styleEl.children[0].data; - expect(set).to.not.contain(textContent); + assert.equal(set.has(textContent), false); set.add(textContent); }); }); @@ -62,16 +65,20 @@ describe('Content Collections - render()', () => { const $ = cheerio.load(html); const allScripts = $('head > script[type="module"]'); - expect(allScripts).to.have.length; + assert.ok(allScripts.length); // Includes hoisted script - expect( - [...allScripts].find((script) => $(script).attr('src')?.includes('WithScripts')), + const scriptWithSrc = [...allScripts].find((script) => + $(script).attr('src')?.includes('WithScripts') + ); + assert.notEqual( + scriptWithSrc, + undefined, '`WithScripts.astro` hoisted script missing from head.' - ).to.not.be.undefined; + ); // Includes inline script - expect($('script[data-is-inline]')).to.have.a.lengthOf(1); + assert.equal($('script[data-is-inline]').length, 1); }); it('Excludes component scripts for non-rendered entries', async () => { @@ -81,12 +88,14 @@ describe('Content Collections - render()', () => { const allScripts = $('head > script[type="module"]'); // Excludes hoisted script - expect( - [...allScripts].find((script) => - $(script).text().includes('document.querySelector("#update-me")') - ), + const scriptWithText = [...allScripts].find((script) => + $(script).text().includes('document.querySelector("#update-me")') + ); + assert.equal( + scriptWithText, + undefined, '`WithScripts.astro` hoisted script included unexpectedly.' - ).to.be.undefined; + ); }); it('Applies MDX components export', async () => { @@ -94,8 +103,8 @@ describe('Content Collections - render()', () => { const $ = cheerio.load(html); const h2 = $('h2'); - expect(h2).to.have.a.lengthOf(1); - expect(h2.attr('data-components-export-applied')).to.equal('true'); + assert.equal(h2.length, 1); + assert.equal(h2.attr('data-components-export-applied'), 'true'); }); }); @@ -122,10 +131,10 @@ describe('Content Collections - render()', () => { const $ = cheerio.load(html); // Renders content - expect($('ul li')).to.have.a.lengthOf(3); + assert.equal($('ul li').length, 3); // Includes styles - expect($('link[rel=stylesheet]')).to.have.a.lengthOf(1); + assert.equal($('link[rel=stylesheet]').length, 1); }); it('Exclude CSS for non-rendered entries', async () => { @@ -136,7 +145,7 @@ describe('Content Collections - render()', () => { const $ = cheerio.load(html); // Includes styles - expect($('link[rel=stylesheet]')).to.have.a.lengthOf(0); + assert.equal($('link[rel=stylesheet]').length, 0); }); it('De-duplicates CSS used both in layout and directly in target page', async () => { @@ -150,13 +159,13 @@ describe('Content Collections - render()', () => { $('link[rel=stylesheet]').each((_, linkEl) => { const href = linkEl.attribs.href; - expect(set).to.not.contain(href); + assert.equal(set.has(href), false); set.add(href); }); $('style').each((_, styleEl) => { const textContent = styleEl.children[0].data; - expect(set).to.not.contain(textContent); + assert.equal(set.has(textContent), false); set.add(textContent); }); }); @@ -169,8 +178,8 @@ describe('Content Collections - render()', () => { const $ = cheerio.load(html); const h2 = $('h2'); - expect(h2).to.have.a.lengthOf(1); - expect(h2.attr('data-components-export-applied')).to.equal('true'); + assert.equal(h2.length, 1); + assert.equal(h2.attr('data-components-export-applied'), 'true'); }); it('getCollection should return new instances of the array to be mutated safely', async () => { @@ -180,13 +189,13 @@ describe('Content Collections - render()', () => { let response = await app.render(request); let html = await response.text(); let $ = cheerio.load(html); - expect($('li').first().text()).to.equal('With Layout Prop'); + assert.equal($('li').first().text(), 'With Layout Prop'); request = new Request('http://example.com/'); response = await app.render(request); html = await response.text(); $ = cheerio.load(html); - expect($('li').first().text()).to.equal('Hello world'); + assert.equal($('li').first().text(), 'Hello world'); }); }); @@ -208,68 +217,71 @@ describe('Content Collections - render()', () => { it('Includes CSS for rendered entry', async () => { const response = await fixture.fetch('/launch-week', { method: 'GET' }); - expect(response.status).to.equal(200); + assert.equal(response.status, 200); const html = await response.text(); const $ = cheerio.load(html); // Renders content - expect($('ul li')).to.have.a.lengthOf(3); + assert.equal($('ul li').length, 3); // Includes styles - expect($('head > style')).to.have.a.lengthOf(1); - expect($('head > style').text()).to.include("font-family: 'Comic Sans MS'"); + assert.equal($('head > style').length, 1); + assert.ok($('head > style').text().includes("font-family: 'Comic Sans MS'")); }); it('Includes component scripts for rendered entry', async () => { const response = await fixture.fetch('/launch-week-component-scripts', { method: 'GET' }); - expect(response.status).to.equal(200); + assert.equal(response.status, 200); const html = await response.text(); const $ = cheerio.load(html); const allScripts = $('head > script[src]'); - expect(allScripts).to.have.length; - + assert.ok(allScripts.length); // Includes hoisted script - expect( - [...allScripts].find((script) => script.attribs.src.includes('WithScripts.astro')), + const scriptWithSrc = [...allScripts].find((script) => + script.attribs.src.includes('WithScripts.astro') + ); + assert.notEqual( + scriptWithSrc, + undefined, '`WithScripts.astro` hoisted script missing from head.' - ).to.not.be.undefined; + ); // Includes inline script - expect($('script[data-is-inline]')).to.have.a.lengthOf(1); + assert.equal($('script[data-is-inline]').length, 1); }); it('Applies MDX components export', async () => { const response = await fixture.fetch('/launch-week-components-export', { method: 'GET' }); - expect(response.status).to.equal(200); + assert.equal(response.status, 200); const html = await response.text(); const $ = cheerio.load(html); const h2 = $('h2'); - expect(h2).to.have.a.lengthOf(1); - expect(h2.attr('data-components-export-applied')).to.equal('true'); + assert.equal(h2.length, 1); + assert.equal(h2.attr('data-components-export-applied'), 'true'); }); it('Supports layout prop with recursive getCollection() call', async () => { const response = await fixture.fetch('/with-layout-prop', { method: 'GET' }); - expect(response.status).to.equal(200); + assert.equal(response.status, 200); const html = await response.text(); const $ = cheerio.load(html); const body = $('body'); - expect(body.attr('data-layout-prop')).to.equal('true'); + assert.equal(body.attr('data-layout-prop'), 'true'); const h1 = $('h1'); - expect(h1).to.have.a.lengthOf(1); - expect(h1.text()).to.equal('With Layout Prop'); + assert.equal(h1.length, 1); + assert.equal(h1.text(), 'With Layout Prop'); const h2 = $('h2'); - expect(h2).to.have.a.lengthOf(1); - expect(h2.text()).to.equal('Content with a layout prop'); + assert.equal(h2.length, 1); + assert.equal(h2.text(), 'Content with a layout prop'); }); }); }); |