mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-07-25 22:06:06 +00:00
38e35d328a
Co-authored-by: dadachann <185672915+dadachann@users.noreply.github.com>
87 lines
2.4 KiB
JavaScript
87 lines
2.4 KiB
JavaScript
import assert from 'node:assert/strict';
|
|
import fs from 'node:fs';
|
|
import path from 'node:path';
|
|
import test from 'node:test';
|
|
import { fileURLToPath } from 'node:url';
|
|
|
|
const webRoot = path.resolve(
|
|
path.dirname(fileURLToPath(import.meta.url)),
|
|
'../..',
|
|
);
|
|
const read = (relativePath) =>
|
|
fs.readFileSync(path.join(webRoot, relativePath), 'utf8');
|
|
|
|
test('marketplace defaults to shared hot sorting and cards support fingerprint likes', () => {
|
|
const market = read(
|
|
'src/app/home/plugins/components/plugin-market/PluginMarketComponent.tsx',
|
|
);
|
|
const card = read(
|
|
'src/app/home/plugins/components/plugin-market/plugin-market-card/PluginMarketCardComponent.tsx',
|
|
);
|
|
const cardVO = read(
|
|
'src/app/home/plugins/components/plugin-market/plugin-market-card/PluginMarketCardVO.ts',
|
|
);
|
|
const entity = read('src/app/infra/entities/plugin/index.ts');
|
|
const client = read('src/app/infra/http/CloudServiceClient.ts');
|
|
const likes = read(
|
|
'src/app/home/plugins/components/plugin-market/marketplace-likes.ts',
|
|
);
|
|
|
|
assert.match(
|
|
market,
|
|
/hot_score_desc/,
|
|
'market must expose and default to hot-score sorting',
|
|
);
|
|
assert.match(
|
|
market,
|
|
/sortBy:\s*['"]hot_score['"]/,
|
|
'hot option must use the shared API field',
|
|
);
|
|
assert.match(
|
|
entity,
|
|
/like_count\??:\s*number/,
|
|
'marketplace extension responses must carry like counts',
|
|
);
|
|
assert.match(
|
|
cardVO,
|
|
/likeCount:\s*number/,
|
|
'market cards must carry like counts',
|
|
);
|
|
assert.match(card, /\bHeart\b/, 'market cards must render a like affordance');
|
|
assert.match(
|
|
card,
|
|
/toggleMarketplaceExtensionLike/,
|
|
'market cards must support liking and unliking',
|
|
);
|
|
assert.match(
|
|
client,
|
|
/marketplace\/extensions\/likes/,
|
|
'client must load browser likes',
|
|
);
|
|
assert.match(
|
|
client,
|
|
/setMarketplaceExtensionLike\(/,
|
|
'client must update likes through the shared API',
|
|
);
|
|
assert.match(
|
|
client,
|
|
/data\.sort_by === ['"]hot_score['"] \? ['"]install_count['"] : data\.sort_by/,
|
|
'older Space servers must fall back from hot score to install sorting',
|
|
);
|
|
assert.match(
|
|
likes,
|
|
/@fingerprintjs\/fingerprintjs/,
|
|
'anonymous likes must use browser fingerprinting',
|
|
);
|
|
assert.match(
|
|
likes,
|
|
/FingerprintJS\.load\(\{/,
|
|
'fingerprint agent must be initialized with options',
|
|
);
|
|
assert.match(
|
|
likes,
|
|
/monitoring:\s*false/,
|
|
'fingerprinting must not send vendor monitoring requests',
|
|
);
|
|
});
|