47 lines
2.0 KiB
JavaScript
47 lines
2.0 KiB
JavaScript
const test = require('node:test');
|
|
const assert = require('node:assert/strict');
|
|
const fs = require('node:fs');
|
|
const os = require('node:os');
|
|
const path = require('node:path');
|
|
|
|
const source = require('../hermes_weixin_source');
|
|
|
|
test('parseInboundWeixinLine extracts sender and chat ids', () => {
|
|
const entry = source.parseInboundWeixinLine(
|
|
"2026-06-20 22:48:50,823 INFO gateway.run: inbound message: platform=weixin user=o9cq807rsTpn95TrggbxwaMWWg8Q@im.wechat chat=o9cq807rsTpn95TrggbxwaMWWg8Q@im.wechat msg='下单模式:散拼-拼单/录入子单;订单性质:测试' reply_to_id=None reply_to_text=''"
|
|
);
|
|
|
|
assert.equal(entry.senderId, 'o9cq807rsTpn95TrggbxwaMWWg8Q@im.wechat');
|
|
assert.equal(entry.chatId, 'o9cq807rsTpn95TrggbxwaMWWg8Q@im.wechat');
|
|
assert.match(entry.messageSnippet, /散拼/);
|
|
});
|
|
|
|
test('findLatestSource matches a recent order against Hermes agent log', () => {
|
|
const tmp = fs.mkdtempSync(path.join(os.tmpdir(), 'hermes-weixin-source-'));
|
|
const logPath = path.join(tmp, 'agent.log');
|
|
const orderText = [
|
|
'下单模式:散拼-拼单/录入子单',
|
|
'订单性质:测试',
|
|
'母团号:LW-260830A-A',
|
|
].join('\n');
|
|
|
|
fs.writeFileSync(
|
|
logPath,
|
|
[
|
|
"2026-06-20 22:40:00,000 INFO gateway.run: inbound message: platform=weixin user=old@im.wechat chat=old@im.wechat msg='下单模式:团队-批量下单 订单性质:测试' reply_to_id=None reply_to_text=''",
|
|
"2026-06-20 22:48:50,823 INFO gateway.run: inbound message: platform=weixin user=o9cq807rsTpn95TrggbxwaMWWg8Q@im.wechat chat=o9cq807rsTpn95TrggbxwaMWWg8Q@im.wechat msg='下单模式:散拼-拼单/录入子单 订单性质:测试 母团号:LW-260830A-A' reply_to_id=None reply_to_text=''",
|
|
].join('\n'),
|
|
'utf8'
|
|
);
|
|
|
|
const result = source.findLatestSource({
|
|
orderText,
|
|
logPath,
|
|
maxAgeMinutes: 60,
|
|
nowMs: Date.parse('2026-06-20T23:00:00+08:00'),
|
|
});
|
|
|
|
assert.equal(result.ok, true);
|
|
assert.equal(result.senderId, 'o9cq807rsTpn95TrggbxwaMWWg8Q@im.wechat');
|
|
});
|