Skip to content

Commit

Permalink
Refactor some integration tests (#7303)
Browse files Browse the repository at this point in the history
  • Loading branch information
bluwy authored Jun 7, 2023
1 parent a4176f9 commit 9c525d3
Show file tree
Hide file tree
Showing 12 changed files with 192 additions and 180 deletions.
2 changes: 1 addition & 1 deletion packages/astro/test/astro-get-static-paths.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ describe('getStaticPaths - dev calls', () => {
});

after(async () => {
devServer.stop();
await devServer.stop();
});

it('only calls getStaticPaths once', async () => {
Expand Down
157 changes: 81 additions & 76 deletions packages/astro/test/astro-markdown-plugins.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,20 @@ import * as cheerio from 'cheerio';
import { loadFixture } from './test-utils.js';
import addClasses from './fixtures/astro-markdown-plugins/add-classes.mjs';

async function buildFixture(config) {
const fixture = await loadFixture({
root: './fixtures/astro-markdown-plugins/',
...config,
});
await fixture.build();
return fixture;
}
const defaultMarkdownConfig = {
gfm: true,
smartypants: true,
remarkPlugins: [
remarkExamplePlugin,
'remark-code-titles',
['rehype-autolink-headings', { behavior: 'prepend' }],
],
rehypePlugins: [
'rehype-slug',
['rehype-toc', { headings: ['h2', 'h3'] }],
[addClasses, { 'h1,h2,h3': 'title' }],
],
};

function remarkExamplePlugin() {
return (tree) => {
Expand All @@ -22,97 +28,96 @@ function remarkExamplePlugin() {
}

describe('Astro Markdown plugins', () => {
it('Can render markdown with plugins', async () => {
const fixture = await buildFixture({
markdown: {
remarkPlugins: [
'remark-code-titles',
['rehype-autolink-headings', { behavior: 'prepend' }],
],
rehypePlugins: [
'rehype-slug',
['rehype-toc', { headings: ['h2', 'h3'] }],
[addClasses, { 'h1,h2,h3': 'title' }],
],
},
describe('Default test plugins', () => {
let fixture;

before(async () => {
fixture = await loadFixture({
root: './fixtures/astro-markdown-plugins/',
markdown: defaultMarkdownConfig,
});
await fixture.build();
});
const html = await fixture.readFile('/index.html');
const $ = cheerio.load(html);

// test 1: Added a TOC
expect($('.toc')).to.have.lengthOf(1);
it('Can render markdown with plugins', async () => {
const html = await fixture.readFile('/index.html');
const $ = cheerio.load(html);

// test 2: Added .title to h1
expect($('#hello-world').hasClass('title')).to.equal(true);
});
// test 1: Added a TOC
expect($('.toc')).to.have.lengthOf(1);

// Asserts Astro 1.0 behavior is removed. Test can be removed in Astro 3.0.
it('Still applies default plugins when user plugins are provided', async () => {
const fixture = await buildFixture({
markdown: {
remarkPlugins: [remarkExamplePlugin],
rehypePlugins: [[addClasses, { 'h1,h2,h3': 'title' }]],
},
// test 2: Added .title to h1
expect($('#hello-world').hasClass('title')).to.equal(true);
});
const gfmHtml = await fixture.readFile('/with-gfm/index.html');
const $1 = cheerio.load(gfmHtml);
expect($1('a[href="https://example.com"]')).to.have.lengthOf(1);

const smartypantsHtml = await fixture.readFile('/with-smartypants/index.html');
const $2 = cheerio.load(smartypantsHtml);
expect($2('p').html()).to.equal('“Smartypants” is — awesome');
// Asserts Astro 1.0 behavior is removed. Test can be removed in Astro 3.0.
it('Still applies default plugins when user plugins are provided', async () => {
const gfmHtml = await fixture.readFile('/with-gfm/index.html');
const $1 = cheerio.load(gfmHtml);
expect($1('a[href="https://example.com"]')).to.have.lengthOf(1);

testRemark(gfmHtml);
testRehype(gfmHtml, '#github-flavored-markdown-test');
});
const smartypantsHtml = await fixture.readFile('/with-smartypants/index.html');
const $2 = cheerio.load(smartypantsHtml);
expect($2('p').html()).to.equal('“Smartypants” is — awesome');

for (const gfm of [true, false]) {
it(`Handles GFM when gfm = ${gfm}`, async () => {
const fixture = await buildFixture({
markdown: {
remarkPlugins: [remarkExamplePlugin],
rehypePlugins: [[addClasses, { 'h1,h2,h3': 'title' }]],
gfm,
},
});
testRemark(gfmHtml);
testRehype(gfmHtml, '#github-flavored-markdown-test');
});

it(`Handles GFM when gfm = true`, async () => {
const html = await fixture.readFile('/with-gfm/index.html');
const $ = cheerio.load(html);

// test 1: GFM autolink applied correctly
if (gfm === true) {
expect($('a[href="https://example.com"]')).to.have.lengthOf(1);
} else {
expect($('a[href="https://example.com"]')).to.have.lengthOf(0);
}
expect($('a[href="https://example.com"]')).to.have.lengthOf(1);

testRemark(html);
testRehype(html, '#github-flavored-markdown-test');
});
}

for (const smartypants of [true, false]) {
it(`Handles SmartyPants when smartypants = ${smartypants}`, async () => {
const fixture = await buildFixture({
markdown: {
remarkPlugins: [remarkExamplePlugin],
rehypePlugins: [[addClasses, { 'h1,h2,h3': 'title' }]],
smartypants,
},
});

it(`Handles SmartyPants when smartypants = true`, async () => {
const html = await fixture.readFile('/with-smartypants/index.html');
const $ = cheerio.load(html);

// test 1: GFM autolink applied correctly
if (smartypants === true) {
expect($('p').html()).to.equal('“Smartypants” is — awesome');
} else {
expect($('p').html()).to.equal('"Smartypants" is -- awesome');
}
// test 1: smartypants applied correctly
expect($('p').html()).to.equal('“Smartypants” is — awesome');

testRemark(html);
testRehype(html, '#smartypants-test');
});
}
});

it(`Handles GFM when gfm = false`, async () => {
const fixture = await loadFixture({
root: './fixtures/astro-markdown-plugins/',
markdown: { ...defaultMarkdownConfig, gfm: false },
});
await fixture.build();

const html = await fixture.readFile('/with-gfm/index.html');
const $ = cheerio.load(html);

expect($('a[href="https://example.com"]')).to.have.lengthOf(0);

testRemark(html);
testRehype(html, '#github-flavored-markdown-test');
});

it(`Handles SmartyPants when smartypants = false`, async () => {
const fixture = await loadFixture({
root: './fixtures/astro-markdown-plugins/',
markdown: { ...defaultMarkdownConfig, smartypants: false },
});
await fixture.build();

const html = await fixture.readFile('/with-smartypants/index.html');
const $ = cheerio.load(html);

expect($('p').html()).to.equal('"Smartypants" is -- awesome');

testRemark(html);
testRehype(html, '#smartypants-test');
});
});

function testRehype(html, headingId) {
Expand Down
20 changes: 0 additions & 20 deletions packages/astro/test/cli.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -183,23 +183,3 @@ describe('astro cli', () => {
});
});
});

describe('astro cli i18n', () => {
const LOCALES = ['en_US', 'sv_SE', 'es_419.UTF-8', 'es_ES@euro', 'C'];
LOCALES.forEach((locale) => {
it(`astro does NOT throw on "${locale}" locales`, async () => {
const projectRootURL = new URL('./fixtures/astro-basic/', import.meta.url);
let error = null;
try {
const proc = cli('dev', '--root', fileURLToPath(projectRootURL), {
env: { LANG: locale },
});
await parseCliDevStart(proc);
} catch (e) {
console.log(e);
error = e.message;
}
expect(error).to.be.null;
});
});
});
9 changes: 2 additions & 7 deletions packages/astro/test/client-address.test.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import { expect } from 'chai';
import { loadFixture } from './test-utils.js';
import { loadFixture, silentLogging } from './test-utils.js';
import testAdapter from './test-adapter.js';
import { nodeLogDestination } from '../dist/core/logger/node.js';
import * as cheerio from 'cheerio';

describe('Astro.clientAddress', () => {
Expand Down Expand Up @@ -110,11 +109,7 @@ describe('Astro.clientAddress', () => {

before(async () => {
// We expect an error, so silence the output
const logging = {
dest: nodeLogDestination,
level: 'silent',
};
devServer = await fixture.startDevServer({ logging });
devServer = await fixture.startDevServer({ logging: silentLogging });
});

after(async () => {
Expand Down
Loading

0 comments on commit 9c525d3

Please sign in to comment.