Merge pull request 'Hernoem packages endpoint naar /api/v1/offerings' (#11) from feature/offerings-endpoint-rename into master
Continuous Integration / config (push) Successful in 10s
Continuous Integration / prepare (push) Successful in 1m25s
Continuous Integration / build-production (push) Skipped
Continuous Integration / build (push) Successful in 2m5s
Continuous Integration / test (push) Successful in 2m0s
Continuous Integration / deploy-production (push) Skipped
Deploy / deploy (push) Successful in 38s
Continuous Integration / deploy-test (push) Successful in 39s
Continuous Integration / config (push) Successful in 10s
Continuous Integration / prepare (push) Successful in 1m25s
Continuous Integration / build-production (push) Skipped
Continuous Integration / build (push) Successful in 2m5s
Continuous Integration / test (push) Successful in 2m0s
Continuous Integration / deploy-production (push) Skipped
Deploy / deploy (push) Successful in 38s
Continuous Integration / deploy-test (push) Successful in 39s
Reviewed-on: #11
This commit was merged in pull request #11.
This commit is contained in:
+3
-3
@@ -1,4 +1,4 @@
|
||||
# Hand-off: Packages API (`GET /api/v1/packages`)
|
||||
# Hand-off: Packages API (`GET /api/v1/offerings`)
|
||||
|
||||
**Audience**: whoever implements the CMS/backend that will serve package content.
|
||||
**Status**: frontend is already wired up and waiting on this endpoint to exist.
|
||||
@@ -19,10 +19,10 @@ it yet.
|
||||
|
||||
### Endpoint
|
||||
```
|
||||
GET /api/v1/packages
|
||||
GET /api/v1/offerings
|
||||
```
|
||||
|
||||
- **Same domain as the site, relative path.** The frontend calls `fetch('/api/v1/packages')`
|
||||
- **Same domain as the site, relative path.** The frontend calls `fetch('/api/v1/offerings')`
|
||||
with no protocol/host — it relies on the API being reachable under the *same* origin the
|
||||
React app is served from, both on `test.slpsoftware.nl` and on production
|
||||
(`slpsoftware.nl`). Today, both Pis only serve the static React build (see
|
||||
|
||||
@@ -27,7 +27,7 @@ describe('PackagesSection', () => {
|
||||
vi.unstubAllGlobals();
|
||||
});
|
||||
|
||||
it('fetches packages from /api/v1/packages and renders one PackageCard per package', async () => {
|
||||
it('fetches packages from /api/v1/offerings and renders one PackageCard per package', async () => {
|
||||
mockFetchOnce(new Response(JSON.stringify(packages), { status: 200 }));
|
||||
|
||||
renderWithQueryClient();
|
||||
@@ -36,7 +36,7 @@ describe('PackagesSection', () => {
|
||||
expect(screen.getByTestId('packages-grid').children.length).toBe(packages.length);
|
||||
});
|
||||
|
||||
expect(fetch).toHaveBeenCalledWith('/api/v1/packages');
|
||||
expect(fetch).toHaveBeenCalledWith('/api/v1/offerings');
|
||||
for (const pkg of packages) {
|
||||
expect(screen.getByTestId(`package-card-${pkg.id}`)).toBeInTheDocument();
|
||||
expect(screen.getByText(pkg.title)).toBeInTheDocument();
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
*
|
||||
* This module is the source of truth for content that isn't (yet) API-backed
|
||||
* (requirements FR-1/FR-6). `packages` is the exception: it now also doubles as
|
||||
* the reference/seed data for the `/api/v1/packages` contract consumed via
|
||||
* the reference/seed data for the `/api/v1/offerings` contract consumed via
|
||||
* src/features/landing/hooks/usePackagesQuery.ts (requirements FR-5) — see
|
||||
* aidlc-docs/features/react-frontend/construction/react-frontend-app/functional-design/packages-api-handoff.md.
|
||||
*/
|
||||
|
||||
@@ -5,10 +5,10 @@ import type { PackageCardData } from '../data/content';
|
||||
// (test.slpsoftware.nl / slpsoftware.nl) — see aidlc-docs/features/react-frontend/
|
||||
// construction/react-frontend-app/functional-design/packages-api-handoff.md
|
||||
// for the API contract this endpoint must implement.
|
||||
const PACKAGES_ENDPOINT = '/api/v1/packages';
|
||||
const OFFERINGS_ENDPOINT = '/api/v1/offerings';
|
||||
|
||||
async function fetchPackages(): Promise<PackageCardData[]> {
|
||||
const response = await fetch(PACKAGES_ENDPOINT);
|
||||
const response = await fetch(OFFERINGS_ENDPOINT);
|
||||
if (!response.ok) {
|
||||
throw new Error(`Failed to fetch packages: ${response.status} ${response.statusText}`);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user