Skip to content

Commit 3f057a0

Browse files
author
Ethan Jon
committed
decent welcome test
1 parent 0a5d189 commit 3f057a0

File tree

8 files changed

+500
-50
lines changed

8 files changed

+500
-50
lines changed
Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,33 @@
1-
import React from 'react'
1+
// @flow
2+
3+
import {mount, ReactWrapper} from 'enzyme'
24
import {PropTypes as MobxReactPropTypes} from 'mobx-react'
3-
import {mount} from 'enzyme'
5+
import React from 'react'
6+
import ReactModal from 'react-modal'
7+
import sinon from 'sinon'
48

59
import Welcome from '../../../../components/modals/interview/welcome'
610
import PostStore from '../../../../stores/post'
711

8-
test('renders', () => {
12+
test('renders, gets input, closes', () => {
913
const postStore = new PostStore()
14+
const generateInitialResponses = sinon.spy(postStore, 'generateInitialResponses')
15+
1016
const component = mount(<Welcome />, {
1117
childContextTypes: {postStore: MobxReactPropTypes.observableObject},
1218
context: {postStore}
1319
})
14-
expect(component.length).toBeTruthy()
20+
const portal = new ReactWrapper(component.find(ReactModal).node.portal, true)
21+
22+
expect(portal.props().isOpen).toBeTruthy()
23+
portal.find('#welcome-next-button').simulate('click')
24+
portal.find('#welcome-name-input').simulate('change', {target: {value: 'name'}})
25+
portal.find('#welcome-next-button').simulate('click')
26+
portal.find('#welcome-email-input').simulate('change', {target: {value: 'name@domain.com'}})
27+
portal.find('#welcome-next-button').simulate('click')
28+
portal.find('#welcome-current-location-input').simulate('change', {target: {value: 'somewhere, usa'}})
29+
portal.find('#welcome-next-button').simulate('click')
30+
portal.find('#welcome-submit-button').simulate('click')
31+
expect(generateInitialResponses.calledOnce).toBeTruthy()
32+
expect(portal.props().isOpen).toBeFalsy()
1533
})

react/components/modals/interview/welcome.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ const Welcome = observer(({store}: {store: Object}, {postStore}: {postStore: Obj
5353
<div>
5454
<input
5555
className='input h3'
56+
id='welcome-name-input'
5657
onChange={postStore.handleNameChange}
5758
onKeyDown={handleKeyDown}
5859
placeholder='Pat Riley'
@@ -73,6 +74,7 @@ const Welcome = observer(({store}: {store: Object}, {postStore}: {postStore: Obj
7374
<div>
7475
<input
7576
className='input h3'
77+
id='welcome-email-input'
7678
onChange={postStore.handleEmailChange}
7779
onKeyDown={handleKeyDown}
7880
placeholder='you@domain.com'
@@ -88,6 +90,7 @@ const Welcome = observer(({store}: {store: Object}, {postStore}: {postStore: Obj
8890
<div>
8991
<input
9092
className='input h3'
93+
id='welcome-current-location-input'
9194
onChange={postStore.handleCurrentLocationChange}
9295
onKeyDown={handleKeyDown}
9396
placeholder='Coderville, CA'
@@ -127,6 +130,7 @@ const Welcome = observer(({store}: {store: Object}, {postStore}: {postStore: Obj
127130
{store.showNextButton ? (
128131
<button
129132
className='btn btn-primary pr1'
133+
id='welcome-next-button'
130134
onClick={store.handleNextSlideClick}
131135
type='submit'
132136
>
@@ -136,6 +140,7 @@ const Welcome = observer(({store}: {store: Object}, {postStore}: {postStore: Obj
136140
) : (
137141
<button
138142
className='btn btn-primary'
143+
id='welcome-submit-button'
139144
onClick={handleButtonClick}
140145
type='submit'
141146
>
@@ -151,6 +156,8 @@ Welcome.contextTypes = {
151156
postStore: MobxReactPropTypes.observableObject
152157
}
153158

159+
Welcome.displayName = 'Welcome'
160+
154161
export default createModal(Welcome, {
155162
hideCloseButton: true,
156163
isOpen: true,

react/components/submission-status.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@
55

66
import React from 'react'
77
import classNames from 'classnames'
8-
import {PropTypes as MobxReactPropTypes} from 'mobx-react'
8+
import {observer, PropTypes as MobxReactPropTypes} from 'mobx-react'
99

1010
import {minResponsesRequired} from '../stores/post'
1111
import SubmissionStatusItem from '../components/submission-status-item'
1212

13-
const SubmissionStatus = ({className, postData}: {className: string, postData: Object}, {postStore}: {postStore: Object}) => {
13+
const SubmissionStatus = observer(({className, postData}: {className: string, postData: Object}, {postStore}: {postStore: Object}) => {
1414
const isSubmitButtonDisabled = !postStore.isValid || postStore.isSubmitting || postStore.didSubmit
1515

1616
return (
@@ -246,7 +246,7 @@ const SubmissionStatus = ({className, postData}: {className: string, postData: O
246246
</SubmissionStatusItem>
247247
</div>
248248
)
249-
}
249+
})
250250

251251
SubmissionStatus.contextTypes = {
252252
postStore: MobxReactPropTypes.observableObject

react/flow-typed/globals.js

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
1-
declare var AUTOMATED_JWT_TOKEN:string;
2-
declare var G_RECAPTCHA_ENABLED:string;
3-
declare var G_RECAPTCHA_SITEKEY:string;
4-
declare var SENTRY_DSN_REACT:string;
1+
// see env-config.js
2+
declare var AUTOMATED_JWT_TOKEN: string;
3+
declare var G_RECAPTCHA_ENABLED: string;
4+
declare var G_RECAPTCHA_SITEKEY: string;
5+
declare var SENTRY_DSN_REACT: string;
6+
7+
// for jest
8+
declare var test: function;
9+
declare var expect: function;

0 commit comments

Comments
 (0)