返回 CodeWhale
web-extract.test.mjs
根目录 / crates / tui / extension-host / test / web-extract.test.mjs
1 import test from 'node:test'
2 import assert from 'node:assert/strict'
3 import { transformStockSnapshot } from '../dist/stock-adapters.mjs'
4 const choose=candidates=>transformStockSnapshot({kind:'stock_adapter',operation:'web_extract',input:{candidates}}).result.metadata
5 const region=(id,non_whitespace=32,words=5)=>({id,non_whitespace,words})
6 test('article/main/body choice follows captured legacy order',()=>{assert.equal(choose([region(0),region(1),region(2)]).candidate,0);assert.equal(choose([region(0,31),region(1),region(2)]).candidate,1);assert.equal(choose([region(0,32,4),region(2)]).candidate,2)})
7 test('threshold uses scalar facts and large complete regions never cross IPC',()=>{assert.deepEqual(choose([region(0,31,100),region(1,999,4)]),{kind:'web_extract',candidate:null});assert.equal(choose([region(0,10_000_000,50_000)]).candidate,0)})
8 test('every region is validated before choosing, including malformed later and duplicate IDs',()=>{for(const candidates of [[region(0),region(1,-1)],[region(1),region(0)],[region(0),region(0)],[region(3)],[{...region(0),html:'private body'}],[region(0,1.2)]])assert.throws(()=>choose(candidates))})
9 test('missing regions are not invented and empty capture is the ordinary shell result',()=>{assert.equal(choose([]).candidate,null);assert.equal(choose([region(2)]).candidate,2);assert.equal(choose([region(0,0,0)]).candidate,null)})
10
10 lines Plain Text