浏览代码

Test sync worker dependency ordering

彭峰 3 周之前
父节点
当前提交
b6410f3c9b
共有 1 个文件被更改,包括 17 次插入 和 0 次删除
  1. 17 0
      scripts/tests/legacy-sync-worker.test.mjs

+ 17 - 0
scripts/tests/legacy-sync-worker.test.mjs

@@ -42,3 +42,20 @@ test('one worker tick requests every configured data set exactly once', async ()
   assert(requests.every((entry) => entry.body.params.operation === 'ops/sync/run'));
   assert(requests.every((entry) => entry.body.token === 'test-session'));
 });
+
+test('dependent review records wait until learning history is fully caught up', async () => {
+  const requested=[];
+  const server=createServer((request,response)=>{
+    let body='';request.setEncoding('utf8');request.on('data',(chunk)=>{body+=chunk;});request.on('end',()=>{
+      const dataset=JSON.parse(body).params.dataset;requested.push(dataset);
+      response.writeHead(200,{'Content-Type':'application/json'});
+      response.end(JSON.stringify({success:true,data:{processed:1,failures:0,hasMore:dataset==='learning-records'}}));
+    });
+  });
+  await new Promise((resolve)=>server.listen(0,'127.0.0.1',resolve));
+  const address=server.address();assert(address&&typeof address==='object');
+  const child=spawn(process.execPath,['scripts/run-legacy-sync-worker.mjs','--once'],{cwd:process.cwd(),env:{...process.env,XIAOSHU_FUNCTION_URL:`http://127.0.0.1:${address.port}`,XIAOSHU_SYNC_OPERATOR_TOKEN:'test-session',XIAOSHU_SYNC_DATASETS:'memory-records,learning-records,lessons,appointments',XIAOSHU_SYNC_HEALTH_PORT:'0'},stdio:['ignore','pipe','pipe']});
+  let stderr='';child.stderr.on('data',(chunk)=>{stderr+=chunk;});
+  const exitCode=await new Promise((resolve)=>child.on('close',resolve));await new Promise((resolve)=>server.close(resolve));
+  assert.equal(exitCode,0,stderr);assert(requested.includes('learning-records'));assert(requested.includes('appointments'));assert(requested.includes('lessons'));assert(!requested.includes('memory-records'));assert(requested.indexOf('appointments')<requested.indexOf('lessons'));
+});