competitor-listing-impact.test.ts 1.1 KB

123
  1. import assert from 'node:assert/strict'; import test from 'node:test'; import { analyzeCompetitorListingImpact } from '../src/modules/competitor-listing-monitor/impact-analysis.js'; import type { CompetitorListingChange } from '../src/modules/competitor-listing-monitor/domain.js';
  2. const change: CompetitorListingChange = { id:'ch',naturalKey:'k',workspaceId:'ws',platform:'jd',productId:'c1',previousSnapshotId:'p',currentSnapshotId:'c',detectedAt:'2026-01-01T00:00:00.000Z',changeTypes:['price','title'],changes:[] };
  3. test('impact analysis is traceable and fails closed without formal score',()=>{ const noScore=analyzeCompetitorListingImpact(change,'own',null); assert.equal(noScore.impactScore,null); assert.equal(noScore.scoreSource,null); const score:any={id:'score',sourceHash:'hash',dimensions:[{dimension:'title',score:50,maxScore:100},{dimension:'images',score:90,maxScore:100}]}; const result=analyzeCompetitorListingImpact(change,'own',score); assert.equal(result.changeId,'ch'); assert.equal(result.currentSnapshotId,'c'); assert.equal(result.weakestDimension,'title'); assert.ok((result.impactScore??0)>0); });