Skip to content

Commit 9391526

Browse files
committed
Add new entry to list
1 parent 5621fe6 commit 9391526

File tree

4 files changed

+58
-13
lines changed

4 files changed

+58
-13
lines changed

e2e/integration/journey.test.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,16 @@ it('requires employee selection', () => {
123123
})
124124
})
125125

126+
it('can create a new employer', () => {
127+
cy.findByRole('combobox', { name: /hear about code your future/i }).select(
128+
'Employer'
129+
)
130+
cy.findByRole('combobox', { name: /who is your employer/i }).type(
131+
'Weyland Yutani{enter}'
132+
)
133+
cy.findByText('Weyland Yutani').should('exist')
134+
})
135+
126136
const setExperience = (topic, level) => {
127137
cy.findByRole('checkbox', { name: new RegExp(topic, 'i') })
128138
.check()

src/Components/forms/inputs/EmployerDropDown.js

Lines changed: 27 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,21 @@
1-
import React from 'react'
1+
import { useEffect, useState } from 'react'
22
import { Label } from 'reactstrap'
33
import Select from 'react-select/creatable'
44

5-
const EmployerDropDown = ({ onChange, isEmpty, arrayList }) => {
6-
const employersList = arrayList.map(({ _id, name }) => ({
7-
value: _id,
8-
label: name
9-
}))
5+
const EmployerDropDown = ({ arrayList, isEmpty, onChange, value }) => {
6+
const [employersList, setEmployersList] = useState([])
7+
useEffect(() => {
8+
setEmployersList(
9+
arrayList.map(({ _id, name }) => ({
10+
value: _id,
11+
label: name
12+
}))
13+
)
14+
}, [arrayList])
15+
const handleChange = e =>
16+
onChange({
17+
target: { name: 'employer', type: 'text', value: e.value }
18+
})
1019
return (
1120
<div className="form-group">
1221
<Label htmlFor="employer">Who is your employer? *</Label>
@@ -15,13 +24,20 @@ const EmployerDropDown = ({ onChange, isEmpty, arrayList }) => {
1524
inputId="employer"
1625
isSearchable
1726
options={employersList}
18-
onChange={e =>
19-
onChange({
20-
target: { name: 'employer', type: 'text', value: e.value }
21-
})
22-
}
27+
onChange={handleChange}
28+
onCreateOption={newEmployer => {
29+
setEmployersList(oldList => [
30+
...oldList,
31+
{
32+
label: newEmployer,
33+
value: newEmployer
34+
}
35+
])
36+
handleChange({ value: newEmployer })
37+
}}
2338
name="employer"
2439
placeholder="Type your employer name here"
40+
value={employersList.find(employer => employer.value === value)}
2541
/>
2642
</div>
2743
)

src/Components/forms/inputs/EmployerDropDown.test.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,23 @@ describe('EmployerDropDown', () => {
6262
})
6363
})
6464

65+
it('adds the new employer to the list', async () => {
66+
const { user } = renderInForm({ employers: ['ABC', 'BBC', 'CBC'] })
67+
await user.type(
68+
screen.getByRole('combobox', { name: /employer/i }),
69+
'Google'
70+
)
71+
await user.click(screen.getByText('Create "Google"'))
72+
await selectEvent.select(
73+
screen.getByLabelText(/who is your employer/i),
74+
'BBC'
75+
)
76+
await selectEvent.select(
77+
screen.getByLabelText(/who is your employer/i),
78+
'Google'
79+
)
80+
})
81+
6582
it('shows the expected values in AC', async () => {
6683
const { user } = renderInForm({
6784
employers: [

src/Components/forms/inputs/index.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ export default class VolunteerForm extends Component {
2929
onChangeCheckList,
3030
guidePeople,
3131
techSkill,
32-
otherSkill
32+
otherSkill,
33+
employer
3334
} = this.props
3435

3536
return (
@@ -122,9 +123,10 @@ export default class VolunteerForm extends Component {
122123
/>
123124
{hearAboutCYFFromEmployer && (
124125
<EmployerDropDown
125-
onChange={onChange}
126126
arrayList={ListsData.employerList}
127127
isEmpty={errors.employer}
128+
onChange={onChange}
129+
value={employer}
128130
/>
129131
)}
130132
<span className="contact-interested">

0 commit comments

Comments
 (0)