11import 'element-internals-polyfill' ;
2+
23import { sleep } from 'web-utility' ;
3- import { observable } from 'mobx' ;
4+ import { configure , observable } from 'mobx' ;
5+
6+ import { observer , reaction } from '../source/decorator' ;
7+ import { component } from '../source/WebCell' ;
8+ import { DOMRenderer } from 'dom-renderer' ;
49
5- import { component , observer , reaction } from '../source/decorator' ;
6- import { WebCell } from '../source/WebCell' ;
7- import { createCell , render } from '../source/renderer' ;
10+ configure ( { enforceActions : 'never' } ) ;
811
912class Test {
1013 @observable
11- count = 0 ;
14+ accessor count = 0 ;
1215}
1316
1417describe ( 'Observer decorator' , ( ) => {
15- const model = new Test ( ) ;
18+ const model = new Test ( ) ,
19+ renderer = new DOMRenderer ( ) ;
1620
1721 it ( 'should re-render Function Component' , ( ) => {
1822 const InlineTag = observer ( ( ) => < i > { model . count } </ i > ) ;
1923
20- render ( < InlineTag /> ) ;
24+ renderer . render ( < InlineTag /> ) ;
2125
2226 expect ( document . body . textContent . trim ( ) ) . toBe ( '0' ) ;
2327
@@ -27,22 +31,18 @@ describe('Observer decorator', () => {
2731 } ) ;
2832
2933 it ( 'should re-render Class Component' , ( ) => {
30- @component ( {
31- tagName : 'test-tag'
32- } )
34+ @component ( { tagName : 'test-tag' } )
3335 @observer
34- class TestTag extends WebCell ( ) {
36+ class TestTag extends HTMLElement {
3537 render ( ) {
3638 return < i > { model . count } </ i > ;
3739 }
3840 }
39-
40- render ( < TestTag /> ) ;
41+ renderer . render ( < TestTag /> ) ;
4142
4243 expect ( document . querySelector ( 'test-tag i' ) . textContent . trim ( ) ) . toBe (
4344 '1'
4445 ) ;
45-
4646 model . count ++ ;
4747
4848 expect ( document . querySelector ( 'test-tag i' ) . textContent . trim ( ) ) . toBe (
@@ -53,31 +53,29 @@ describe('Observer decorator', () => {
5353 it ( 'should register a Reaction with MobX' , async ( ) => {
5454 const handler = jest . fn ( ) ;
5555
56- @component ( {
57- tagName : 'reaction-cell'
58- } )
56+ @component ( { tagName : 'reaction-cell' } )
5957 @observer
60- class ReactionCell extends WebCell ( ) {
58+ class ReactionCell extends HTMLElement {
6159 @observable
62- test = '' ;
60+ accessor test = '' ;
6361
64- @reaction ( ( element : ReactionCell ) => element . test )
62+ @reaction ( ( { test } ) => test )
6563 handleReaction ( value : string ) {
6664 handler ( value ) ;
6765 }
6866 }
69- render ( < ReactionCell /> ) ;
67+ renderer . render ( < ReactionCell /> ) ;
68+
69+ await sleep ( ) ;
7070
7171 const tag = document . querySelector < ReactionCell > ( 'reaction-cell' ) ;
7272 tag . test = 'a' ;
7373
7474 await sleep ( ) ;
7575
76- expect ( handler ) . toBeCalledTimes ( 1 ) ;
77- expect ( handler ) . toBeCalledWith ( 'a' ) ;
76+ expect ( handler ) . toHaveBeenCalledTimes ( 1 ) ;
77+ expect ( handler ) . toHaveBeenCalledWith ( 'a' ) ;
7878
7979 document . body . innerHTML = '' ;
80-
81- expect ( tag . disposers ) . toHaveLength ( 0 ) ;
8280 } ) ;
8381} ) ;
0 commit comments