fix(core): guard material-ref parsers against non-string values (Sentry MONOREPO-EDITOR-EM) (#486)
* fix(core): guard material-ref parsers against non-string values (Sentry MONOREPO-EDITOR-EM) getLibraryMaterialIdFromRef and getSceneMaterialIdFromRef only guarded against null/undefined, then called .startsWith(). When a non-string material ref reaches them (legacy/malformed wall material slot ref), .startsWith is undefined -> TypeError: e.startsWith is not a function. Narrow with typeof !== 'string' -> return null, so a bad ref degrades to 'no library/scene material' instead of throwing during wall material resolution (packages/viewer wall-materials.ts -> parseMaterialRef). * test(core): cover malformed material refs --------- Co-authored-by: Aymeric Rabot <aymeric.rabot@gmail.com>
This commit is contained in:
@@ -0,0 +1,13 @@
|
||||
import { describe, expect, test } from 'bun:test'
|
||||
import { getLibraryMaterialIdFromRef, getSceneMaterialIdFromRef } from './material-library'
|
||||
|
||||
describe('material references', () => {
|
||||
test('rejects malformed runtime values instead of calling string methods', () => {
|
||||
const malformedRefs: unknown[] = [42, true, {}, []]
|
||||
|
||||
for (const ref of malformedRefs) {
|
||||
expect(getLibraryMaterialIdFromRef(ref as string)).toBeNull()
|
||||
expect(getSceneMaterialIdFromRef(ref as string)).toBeNull()
|
||||
}
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user