Ensure index pages are generated on paginated results (#4426)
* Ensure index pages are generated on paginated results * Changeset
This commit is contained in:
parent
8164fa6f1a
commit
f40065f510
6 changed files with 83 additions and 5 deletions
5
.changeset/odd-elephants-remember.md
Normal file
5
.changeset/odd-elephants-remember.md
Normal file
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
'astro': patch
|
||||
---
|
||||
|
||||
Ensure index pages are generated on paginated results
|
|
@ -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;
|
||||
|
|
8
packages/astro/test/fixtures/get-static-paths-pages/package.json
vendored
Normal file
8
packages/astro/test/fixtures/get-static-paths-pages/package.json
vendored
Normal file
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"name": "@test/get-static-paths-pages",
|
||||
"version": "0.0.0",
|
||||
"private": true,
|
||||
"dependencies": {
|
||||
"astro": "workspace:*"
|
||||
}
|
||||
}
|
37
packages/astro/test/fixtures/get-static-paths-pages/src/pages/[...page].astro
vendored
Normal file
37
packages/astro/test/fixtures/get-static-paths-pages/src/pages/[...page].astro
vendored
Normal 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>
|
27
packages/astro/test/get-static-paths-pages.test.js
Normal file
27
packages/astro/test/get-static-paths-pages.test.js
Normal 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');
|
||||
});
|
||||
});
|
|
@ -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:*
|
||||
|
|
Loading…
Reference in a new issue