|
|
@@ -69,4 +69,23 @@ describe('runtime-dom: attrs patching', () => {
|
|
|
patchProp(el, 'value', null, symbol)
|
|
|
expect(el.value).toBe(symbol.toString())
|
|
|
})
|
|
|
+
|
|
|
+ // #11177
|
|
|
+ test('should allow setting value to object, leaving stringification to the element/browser', () => {
|
|
|
+ // normal behavior
|
|
|
+ const el = document.createElement('div')
|
|
|
+ const obj = { toString: () => 'foo' }
|
|
|
+ patchProp(el, 'data-test', null, obj)
|
|
|
+ expect(el.dataset.test).toBe('foo')
|
|
|
+
|
|
|
+ const el2 = document.createElement('div')
|
|
|
+ let testvalue: null | typeof obj = null
|
|
|
+ // simulating a web component that implements its own setAttribute handler
|
|
|
+ el2.setAttribute = (name, value) => {
|
|
|
+ testvalue = value
|
|
|
+ }
|
|
|
+ patchProp(el2, 'data-test', null, obj)
|
|
|
+ expect(el2.dataset.test).toBe(undefined)
|
|
|
+ expect(testvalue).toBe(obj)
|
|
|
+ })
|
|
|
})
|