Skip to content

Commit

Permalink
Ensure index pages are generated on paginated results (#4426)
Browse files Browse the repository at this point in the history
* Ensure index pages are generated on paginated results

* Changeset
  • Loading branch information
matthewp authored Aug 23, 2022
1 parent 8164fa6 commit f40065f
Show file tree
Hide file tree
Showing 6 changed files with 83 additions and 5 deletions.
5 changes: 5 additions & 0 deletions .changeset/odd-elephants-remember.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'astro': patch
---

Ensure index pages are generated on paginated results
5 changes: 0 additions & 5 deletions packages/astro/src/core/build/generate.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"name": "@test/get-static-paths-pages",
"version": "0.0.0",
"private": true,
"dependencies": {
"astro": "workspace:*"
}
}
Original file line number Diff line number Diff line change
@@ -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 changes: 27 additions & 0 deletions packages/astro/test/get-static-paths-pages.test.js
Original file line number Diff line number Diff line change
@@ -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');
});
});
6 changes: 6 additions & 0 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit f40065f

Please sign in to comment.