|
|
@@ -5,6 +5,7 @@ import {
|
|
|
setAttr,
|
|
|
setClass,
|
|
|
setDOMProp,
|
|
|
+ setDynamicProps,
|
|
|
setHtml,
|
|
|
setStyle,
|
|
|
setText,
|
|
|
@@ -414,6 +415,54 @@ describe('patchProp', () => {
|
|
|
test.todo('should be able to set something on SVG')
|
|
|
})
|
|
|
|
|
|
+ describe('setDynamicProps', () => {
|
|
|
+ test('basic set dynamic props', () => {
|
|
|
+ const el = document.createElement('div')
|
|
|
+ setDynamicProps(el, { foo: 'val' }, { bar: 'val' })
|
|
|
+ expect(el.getAttribute('foo')).toBe('val')
|
|
|
+ expect(el.getAttribute('bar')).toBe('val')
|
|
|
+ })
|
|
|
+
|
|
|
+ test('should merge props', () => {
|
|
|
+ const el = document.createElement('div')
|
|
|
+ setDynamicProps(el, { foo: 'val' }, { foo: 'newVal' })
|
|
|
+ expect(el.getAttribute('foo')).toBe('newVal')
|
|
|
+ })
|
|
|
+
|
|
|
+ test('should reset old props', () => {
|
|
|
+ const el = document.createElement('div')
|
|
|
+
|
|
|
+ setDynamicProps(el, { foo: 'val' })
|
|
|
+ expect(el.attributes.length).toBe(1)
|
|
|
+ expect(el.getAttribute('foo')).toBe('val')
|
|
|
+
|
|
|
+ setDynamicProps(el, { bar: 'val' })
|
|
|
+ expect(el.attributes.length).toBe(1)
|
|
|
+ expect(el.getAttribute('bar')).toBe('val')
|
|
|
+ expect(el.getAttribute('foo')).toBeNull()
|
|
|
+ })
|
|
|
+
|
|
|
+ test('should reset old modifier props', () => {
|
|
|
+ const el = document.createElement('div')
|
|
|
+
|
|
|
+ setDynamicProps(el, { ['.foo']: 'val' })
|
|
|
+ expect((el as any).foo).toBe('val')
|
|
|
+
|
|
|
+ setDynamicProps(el, { ['.bar']: 'val' })
|
|
|
+ expect((el as any).bar).toBe('val')
|
|
|
+ expect((el as any).foo).toBe('')
|
|
|
+
|
|
|
+ setDynamicProps(el, { ['^foo']: 'val' })
|
|
|
+ expect(el.attributes.length).toBe(1)
|
|
|
+ expect(el.getAttribute('foo')).toBe('val')
|
|
|
+
|
|
|
+ setDynamicProps(el, { ['^bar']: 'val' })
|
|
|
+ expect(el.attributes.length).toBe(1)
|
|
|
+ expect(el.getAttribute('bar')).toBe('val')
|
|
|
+ expect(el.getAttribute('foo')).toBeNull()
|
|
|
+ })
|
|
|
+ })
|
|
|
+
|
|
|
describe('setText', () => {
|
|
|
test('should set textContent', () => {
|
|
|
const el = document.createElement('div')
|