Initial commit of Descrybe v2 without local scratch artifacts.

Drop one-shot tmp/axe scripts and agent i18n scratch so the Gitea tree is deployable.
This commit is contained in:
2026-08-09 22:47:43 +02:00
commit 8580c996c3
1285 changed files with 325780 additions and 0 deletions
+144
View File
@@ -0,0 +1,144 @@
/**
* store-reconnect unit tests (node:test).
* Pure helpers for store cutover reconnect UX (StoreReconnectBanner / ProductSyncSummary).
*
* Run from apps/web:
* node --experimental-strip-types --test src/lib/store-reconnect.test.ts
*/
import assert from "node:assert/strict";
import { describe, it } from "node:test";
import {
STORE_RECONNECT_TARGETS,
STORE_RECONNECT_WIZARD_HREF,
needsStoreReconnect,
storeConnectorAction,
storeReconnectHref
} from "./store-reconnect.ts";
describe("STORE_RECONNECT_TARGETS", () => {
it("lists WooCommerce and Shopify with connection deep links", () => {
assert.deepEqual(
STORE_RECONNECT_TARGETS.map((t) => t.id),
["woocommerce", "shopify"]
);
const woo = STORE_RECONNECT_TARGETS.find((t) => t.id === "woocommerce");
const shopify = STORE_RECONNECT_TARGETS.find((t) => t.id === "shopify");
assert.ok(woo);
assert.ok(shopify);
assert.equal(woo.href, "/woocommerce?tab=connection#store-reconnect");
assert.equal(shopify.href, "/stores/shopify?tab=connection#store-reconnect");
assert.equal(woo.label, "WooCommerce");
assert.equal(shopify.label, "Shopify");
});
it("exposes guided wizard href", () => {
assert.equal(STORE_RECONNECT_WIZARD_HREF, "/stores/wizard");
});
});
describe("needsStoreReconnect", () => {
it("returns false for missing or empty probes", () => {
assert.equal(needsStoreReconnect(null), false);
assert.equal(needsStoreReconnect(undefined), false);
assert.equal(needsStoreReconnect({}), false);
assert.equal(needsStoreReconnect({ configured: false }), false);
assert.equal(needsStoreReconnect({ store_url: " ", shop_domain: "" }), false);
});
it("returns false when credentials are present", () => {
assert.equal(
needsStoreReconnect({
configured: true,
has_credentials: true,
store_url: "https://shop.example"
}),
false
);
assert.equal(
needsStoreReconnect({
has_credentials: true,
shop_domain: "example.myshopify.com"
}),
false
);
});
it("returns true when configured but secrets are missing", () => {
assert.equal(needsStoreReconnect({ configured: true }), true);
assert.equal(
needsStoreReconnect({ configured: true, has_credentials: false }),
true
);
});
it("returns true when store identity exists without credentials", () => {
assert.equal(
needsStoreReconnect({ store_url: "https://shop.example" }),
true
);
assert.equal(
needsStoreReconnect({ shop_domain: "example.myshopify.com" }),
true
);
assert.equal(
needsStoreReconnect({
store_url: " https://shop.example ",
has_credentials: false
}),
true
);
});
});
describe("storeReconnectHref", () => {
it("resolves known connector ids", () => {
assert.equal(
storeReconnectHref("woocommerce"),
"/woocommerce?tab=connection#store-reconnect"
);
assert.equal(
storeReconnectHref("shopify"),
"/stores/shopify?tab=connection#store-reconnect"
);
});
it("falls back to /stores for unknown ids", () => {
assert.equal(
storeReconnectHref("unknown" as "woocommerce"),
"/stores"
);
});
});
describe("storeConnectorAction", () => {
it("shows connect/reconnect only for company admins", () => {
assert.equal(
storeConnectorAction({ canAdmin: true, connected: false, needsReconnect: false }),
"connect"
);
assert.equal(
storeConnectorAction({ canAdmin: true, connected: false, needsReconnect: true }),
"reconnect"
);
assert.equal(
storeConnectorAction({ canAdmin: false, connected: false, needsReconnect: false }),
"view"
);
assert.equal(
storeConnectorAction({ canAdmin: false, connected: false, needsReconnect: true }),
"view"
);
});
it("keeps open for connected stores regardless of role", () => {
assert.equal(
storeConnectorAction({ canAdmin: false, connected: true, needsReconnect: false }),
"open"
);
assert.equal(
storeConnectorAction({ canAdmin: true, connected: true, needsReconnect: false }),
"open"
);
});
});