feat(housekeeping): deliver economy vertical
This commit is contained in:
1 parent
1ec05cda39
commit
9c4b973faf
62 files changed
+6306
-1285
No files matched your search
@@ -0,0 +1,119 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { HOUSEKEEPING_MANIFESTS } from "../../manifests";
|
||||
import { economyMigrationEntries } from "../../migration/economy";
|
||||
import { HOUSEKEEPING_ROUTE_HANDLERS } from "../../route-handlers";
|
||||
import { economyManifest } from "./manifest";
|
||||
import {
|
||||
ECONOMY_ROUTE_GROUPS,
|
||||
ECONOMY_ROUTE_IDS,
|
||||
ECONOMY_ROUTES,
|
||||
type EconomyRouteId,
|
||||
economyRouteGroup,
|
||||
} from "./routes";
|
||||
|
||||
const expected = [
|
||||
["economy.catalog.overview", "/ase/economy/catalog", "catalog"],
|
||||
["economy.catalog.detail", "/ase/economy/catalog/:id", "catalog"],
|
||||
[
|
||||
"economy.catalog.builder-club-detail",
|
||||
"/ase/economy/catalog/builder-club/:id",
|
||||
"catalog",
|
||||
],
|
||||
[
|
||||
"economy.catalog.maintenance",
|
||||
"/ase/economy/catalog/maintenance",
|
||||
"catalog",
|
||||
],
|
||||
["economy.items.overview", "/ase/economy/items", "items"],
|
||||
["economy.items.detail", "/ase/economy/items/:id", "items"],
|
||||
["economy.commerce.shop", "/ase/economy/commerce/shop", "commerce"],
|
||||
[
|
||||
"economy.commerce.shop-create",
|
||||
"/ase/economy/commerce/shop/new",
|
||||
"commerce",
|
||||
],
|
||||
[
|
||||
"economy.commerce.shop-detail",
|
||||
"/ase/economy/commerce/shop/:id",
|
||||
"commerce",
|
||||
],
|
||||
[
|
||||
"economy.commerce.marketplace",
|
||||
"/ase/economy/commerce/marketplace",
|
||||
"commerce",
|
||||
],
|
||||
["economy.commerce.vouchers", "/ase/economy/commerce/vouchers", "commerce"],
|
||||
[
|
||||
"economy.commerce.subscriptions",
|
||||
"/ase/economy/commerce/subscriptions",
|
||||
"commerce",
|
||||
],
|
||||
[
|
||||
"economy.history.transactions",
|
||||
"/ase/economy/history/transactions",
|
||||
"history",
|
||||
],
|
||||
["economy.value.rare-values", "/ase/economy/value/rare-values", "value"],
|
||||
["economy.rewards.badges", "/ase/economy/rewards/badges", "rewards"],
|
||||
[
|
||||
"economy.rewards.achievements",
|
||||
"/ase/economy/rewards/achievements",
|
||||
"rewards",
|
||||
],
|
||||
["economy.rewards.sounds", "/ase/economy/rewards/sounds", "rewards"],
|
||||
["economy.rewards.calendar", "/ase/economy/rewards/calendar", "rewards"],
|
||||
[
|
||||
"economy.rewards.calendar-detail",
|
||||
"/ase/economy/rewards/calendar/:id",
|
||||
"rewards",
|
||||
],
|
||||
] as const;
|
||||
|
||||
describe("Economy routes", () => {
|
||||
it("declares the six exact route groups", () => {
|
||||
expect(ECONOMY_ROUTE_GROUPS).toEqual([
|
||||
"catalog",
|
||||
"items",
|
||||
"commerce",
|
||||
"history",
|
||||
"value",
|
||||
"rewards",
|
||||
]);
|
||||
});
|
||||
|
||||
it("maps all 20 matrix rows into 19 canonical workflows", () => {
|
||||
expect(
|
||||
ECONOMY_ROUTES.map((route) => [
|
||||
route.id,
|
||||
route.href,
|
||||
economyRouteGroup(route.id as EconomyRouteId),
|
||||
]),
|
||||
).toEqual(expected);
|
||||
expect(ECONOMY_ROUTE_IDS).toEqual(expected.map(([id]) => id));
|
||||
expect(
|
||||
[...new Set(ECONOMY_ROUTES.map((route) => route.href))].sort(),
|
||||
).toEqual(
|
||||
[
|
||||
...new Set(
|
||||
economyMigrationEntries
|
||||
.filter((entry) => entry.targetPath !== null)
|
||||
.map((entry) => entry.targetPath),
|
||||
),
|
||||
].sort(),
|
||||
);
|
||||
});
|
||||
|
||||
it("keeps manifest routes and real handlers in exact equality", () => {
|
||||
expect(economyManifest.routes).toBe(ECONOMY_ROUTES);
|
||||
expect(economyManifest.routes.map((route) => route.id)).toEqual(
|
||||
HOUSEKEEPING_ROUTE_HANDLERS.filter((handler) =>
|
||||
handler.routeId.startsWith("economy."),
|
||||
).map((handler) => handler.routeId),
|
||||
);
|
||||
expect(
|
||||
HOUSEKEEPING_MANIFESTS.flatMap((manifest) =>
|
||||
manifest.routes.map((route) => route.id),
|
||||
),
|
||||
).toEqual(HOUSEKEEPING_ROUTE_HANDLERS.map((handler) => handler.routeId));
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user