1+ const React = require ( 'react' ) ;
2+ const ReactDOM = require ( 'react-dom' ) ;
3+ import ReactDOMServer from 'react-dom/server' ;
4+
5+ const TestUtils = require ( 'react-addons-test-utils' ) ;
6+ const Bookie = require ( './Bookie' ) . default ;
7+ const renderer = require ( 'react-test-renderer' ) ;
8+
9+ const Scheduler = require ( '../lib/Scheduler' ) . default ;
10+ const moment = require ( 'moment' ) ;
11+
12+ Scheduler . getCurrentMoment = ( ( ) => moment ( '2017-01-02 17:00' ) ) ;
13+
14+ it ( 'should exists' , ( ) => {
15+ const bookie = TestUtils . renderIntoDocument ( < Bookie /> ) ;
16+ expect ( TestUtils . isCompositeComponent ( bookie ) ) . toBeTruthy ( ) ;
17+ } ) ;
18+
19+ it ( 'markup matches snapshot' , ( ) => {
20+ const tree = renderer . create ( < Bookie /> ) . toJSON ( ) ;
21+ expect ( tree ) . toMatchSnapshot ( ) ;
22+ } ) ;
23+
24+ describe ( 'enabling bookie button' , ( ) => {
25+ // there's a gap on 2017-01-01 at 17:00-18:00
26+ const savedState = require ( './cut_response' ) ;
27+
28+ const createBookieWithState = function ( state ) {
29+ const result = TestUtils . renderIntoDocument ( < Bookie /> ) ;
30+ result . setState ( state ) ;
31+ result . negotiateStateDiff ( { } , true ) ;
32+ return result ;
33+ }
34+
35+ it ( 'is enabled for valid range' , ( ) => {
36+ const bookieComponent = createBookieWithState ( savedState ) ;
37+
38+ // ensure booking is enabled in state
39+ expect ( bookieComponent . state . bookingAllowed ) . toBe ( true ) ;
40+
41+ // ensure booking button is enabled
42+ expect ( ReactDOM . findDOMNode ( bookieComponent ) . querySelector ( 'button' ) . disabled ) . toBe ( false ) ;
43+
44+ // check markup snapshot
45+ const reactElement = bookieComponent . render ( ) ;
46+ const renderedMarkup = ReactDOMServer . renderToStaticMarkup ( reactElement ) ;
47+ expect ( renderedMarkup ) . toMatchSnapshot ( ) ;
48+ } ) ;
49+
50+ it ( 'is disabled for the range with a gap' , ( ) => {
51+ const state = Object . assign ( { } , savedState , {
52+ "hourPicked" : 16 ,
53+ "minutesIdxPicked" : 2 ,
54+ "endVal" : "2017-01-01T18:15:00+02:00" ,
55+ } ) ;
56+
57+ const bookieComponent = createBookieWithState ( state ) ;
58+
59+ expect ( bookieComponent . state . bookingAllowed ) . toBe ( false ) ;
60+ expect ( ReactDOM . findDOMNode ( bookieComponent ) . querySelector ( 'button' ) . disabled ) . toBe ( true ) ;
61+
62+ const reactElement = bookieComponent . render ( ) ;
63+ const renderedMarkup = ReactDOMServer . renderToStaticMarkup ( reactElement ) ;
64+ expect ( renderedMarkup ) . toMatchSnapshot ( ) ;
65+ } ) ;
66+ } ) ;
0 commit comments