From e18502ee67f72c3f8c019e7bd59b86d540c8f725 Mon Sep 17 00:00:00 2001 From: ila <2+ila@noreply.git.ilapage.cn> Date: Thu, 13 Aug 2026 22:40:16 +0800 Subject: [PATCH] test: cover device payload field boundaries (#56) --- Sense/ui/tests/devicePayload.test.mjs | 34 +++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 Sense/ui/tests/devicePayload.test.mjs diff --git a/Sense/ui/tests/devicePayload.test.mjs b/Sense/ui/tests/devicePayload.test.mjs new file mode 100644 index 0000000..9c8c2eb --- /dev/null +++ b/Sense/ui/tests/devicePayload.test.mjs @@ -0,0 +1,34 @@ +import assert from 'node:assert/strict' +import test from 'node:test' + +import { createDevicePayload, updateDevicePayload } from '../src/views/sense/device/devicePayload.mjs' + +const form = { + name: '东门摄像机', + location: '教学楼一楼东门', + modality: 'video', + capabilities: ['video'], + id: 'read-only-id' +} + +test('create payload keeps Chinese values and includes modality', () => { + assert.deepEqual(createDevicePayload(form), { + name: '东门摄像机', + location: '教学楼一楼东门', + modality: 'video', + capabilities: ['video'] + }) +}) + +test('update payload uses the PATCH allowlist and excludes modality', () => { + const payload = updateDevicePayload(form, 9) + assert.deepEqual(payload, { + name: '东门摄像机', + location: '教学楼一楼东门', + capabilities: ['video'], + version: 9 + }) + assert.equal('modality' in payload, false) + assert.equal('id' in payload, false) +}) +