Files
memind/learn-assistant-family.test.mjs
john 348e192800 feat(learn): add family learning assistant API routes and public pages
Wire /learn static delivery, parent/child portal routes, and Tang page build scripts for 103 deploy.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-11 17:09:52 +08:00

56 lines
2.1 KiB
JavaScript

import assert from 'node:assert/strict';
import fs from 'node:fs/promises';
import os from 'node:os';
import path from 'node:path';
import test from 'node:test';
import { createLearnAssistantFamilyRegistry } from './learn-assistant-family.mjs';
import { createLearnAssistantService } from './learn-assistant-service.mjs';
test('family registry creates owner family and accepts co-parent invite', async () => {
const dataRoot = await fs.mkdtemp(path.join(os.tmpdir(), 'learn-family-'));
const service = createLearnAssistantService({ dataRoot });
const registry = createLearnAssistantFamilyRegistry({
dataRoot,
seedFamilyDefaults: service.seedFamilyDefaults,
});
const dad = 'dad-user-id-001';
const mom = 'mom-user-id-002';
const { family: dadFamily, created } = await registry.getFamilyForUser(dad, { displayName: '爸爸' });
assert.equal(created, true);
assert.equal(dadFamily.ownerUserId, dad);
const invite = await registry.createInvite(dad, { displayName: '爸爸' });
assert.ok(invite.token);
const joined = await registry.acceptInvite(mom, invite.token, { displayName: '妈妈' });
assert.equal(joined.family.id, dadFamily.id);
assert.equal(joined.family.members.length, 2);
const momFamily = await registry.requireFamilyForUser(mom);
assert.equal(momFamily.id, dadFamily.id);
await service.parentAddChild(dadFamily.id, { name: '宝宝', emoji: '🙂' });
const children = await service.listChildren(dadFamily.id);
assert.equal(children.data.length, 1);
const momView = await service.listChildren((await registry.requireFamilyForUser(mom)).id);
assert.equal(momView.data[0].name, '宝宝');
});
test('legacy tang slug resolves and seeds defaults', async () => {
const dataRoot = await fs.mkdtemp(path.join(os.tmpdir(), 'learn-tang-'));
const service = createLearnAssistantService({ dataRoot });
const registry = createLearnAssistantFamilyRegistry({
dataRoot,
seedFamilyDefaults: service.seedFamilyDefaults,
});
const family = await registry.getFamilyBySlug('tang');
assert.equal(family.slug, 'tang');
const children = await service.listChildren(family.id);
assert.equal(children.data.length, 2);
});