Ensure index pages are generated on paginated results (#4426)

* Ensure index pages are generated on paginated results

* Changeset
This commit is contained in:
Matthew Phillips 2022-08-23 08:47:20 -04:00 committed by GitHub
parent 8164fa6f1a
commit f40065f510
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 83 additions and 5 deletions

View file

@ -0,0 +1,5 @@
---
'astro': patch
---
Ensure index pages are generated on paginated results

View file

@ -207,11 +207,6 @@ async function getPathsForRoute(
paths = result.staticPaths
.map((staticPath) => staticPath.params && route.generate(staticPath.params))
.filter((staticPath) => {
// Remove empty or undefined paths
if (!staticPath) {
return false;
}
// The path hasn't been built yet, include it
if (!builtPaths.has(removeTrailingForwardSlash(staticPath))) {
return true;

View file

@ -0,0 +1,8 @@
{
"name": "@test/get-static-paths-pages",
"version": "0.0.0",
"private": true,
"dependencies": {
"astro": "workspace:*"
}
}

View file

@ -0,0 +1,37 @@
---
export async function getStaticPaths({ paginate }) {
const astronautPages = [{
astronaut: 'Neil Armstrong',
}, {
astronaut: 'Buzz Aldrin',
}, {
astronaut: 'Sally Ride',
}, {
astronaut: 'John Glenn',
}];
// Generate pages from our array of astronauts, with 2 to a page
return paginate(astronautPages, { pageSize: 2 });
}
// All paginated data is passed on the "page" prop
const { page } = Astro.props;
---
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<meta name="generator" content={Astro.generator} />
<title>Astro</title>
</head>
<body>
<h1>Page {page.currentPage}</h1>
<ul>
<!--List the array of astronaut info-->
{page.data.map(({ astronaut }: { astronaut: string }) => <li>{astronaut}</li>)}
</ul>
</body>
</html>

View file

@ -0,0 +1,27 @@
import { expect } from 'chai';
import * as cheerio from 'cheerio';
import { loadFixture } from './test-utils.js';
describe('getStaticPaths with trailingSlash: ignore', () => {
let fixture;
before(async () => {
fixture = await loadFixture({
root: './fixtures/get-static-paths-pages/',
site: 'https://mysite.dev/',
});
await fixture.build();
});
it('includes index page', async () => {
let html = await fixture.readFile('/index.html');
let $ = cheerio.load(html);
expect($('h1').text()).to.equal('Page 1');
});
it('includes paginated page', async () => {
let html = await fixture.readFile('/2/index.html');
let $ = cheerio.load(html);
expect($('h1').text()).to.equal('Page 2');
});
});

View file

@ -1534,6 +1534,12 @@ importers:
'@fontsource/montserrat': 4.5.11
astro: link:../../..
packages/astro/test/fixtures/get-static-paths-pages:
specifiers:
astro: workspace:*
dependencies:
astro: link:../../..
packages/astro/test/fixtures/glob-pages-css:
specifiers:
astro: workspace:*