add test for question delete; fix bug with delete question

This commit is contained in:
GotPPay
2018-04-05 15:40:10 +02:00
parent 275ab2e9b1
commit 83134841a2
2 changed files with 38 additions and 12 deletions

View File

@@ -72,7 +72,7 @@ class IntentDetails extends Component {
rightIcon={ rightIcon={
<SVGIcon <SVGIcon
onClick={() => { onClick={() => {
this.deleteQuestion (question); this.deleteQuestion (index);
}} }}
> >
{' '} {' '}
@@ -146,12 +146,10 @@ class IntentDetails extends Component {
this.setState ({intent: newIntent}); this.setState ({intent: newIntent});
} }
deleteQuestion (question) { deleteQuestion (index) {
if (this.state.intent.questions.length > 1) { if (this.state.intent.questions.length > 1) {
let newIntent = this.state.intent; let newIntent = this.state.intent;
let removeId = newIntent.questions.indexOf (question); if (index >= 0 && index < newIntent.questions.length) newIntent.questions.splice (index, 1);
if (removeId !== -1) newIntent.questions.splice (removeId, 1);
this.setState ({intent: newIntent}); this.setState ({intent: newIntent});
} }
} }

View File

@@ -99,17 +99,45 @@ describe('complete testing', () => {
}); });
xit ('removes correct text field when delete button on text field is clicked', () => { it ('removes correct text field when delete button on text field is clicked', () => {
const addButton = wrapper.find('button').at(0); const addButton = wrapper.find('button').at(0);
addButton.simulate('click'); addButton.simulate('click');
addButton.simulate('click'); addButton.simulate('click');
const firstQuestionTextField = wrapper.find('TextField').at(2);
const secondQuestionTextField = wrapper.find('TextField').at(3); let firstQuestionTextField = wrapper.find('TextField').at(2);
const thirdQuestionTextField = wrapper.find('TextField').at(4); let secondQuestionTextField = wrapper.find('TextField').at(3);
let thirdQuestionTextField = wrapper.find('TextField').at(4);
firstQuestionTextField.instance().props.onChange('first question');
secondQuestionTextField.instance().props.onChange('second question');
thirdQuestionTextField.instance().props.onChange('third question');
expect(firstQuestionTextField.instance().value).toEqual('first question');
expect(secondQuestionTextField.instance().value).toEqual('second question');
expect(thirdQuestionTextField.instance().value).toEqual('third question');
expect(wrapper.state('intent').questions.length).toBe(3);
const rightIcon = secondQuestionTextField.props().rightIcon;
rightIcon.props.onClick(secondQuestionTextField.props().key);
expect(wrapper.state('intent').questions.length).toBe(2);
expect(secondQuestionTextField.instance().value).toEqual('third question');
expect(thirdQuestionTextField.instance()._field._field).toBeNull();
});
it ('does not remove text field when it is only one left', () => {
let firstQuestionTextField = wrapper.find('TextField').at(2);
firstQuestionTextField.instance().props.onChange('first question');
expect(firstQuestionTextField.props().id).toEqual('intent question'); expect(firstQuestionTextField.props().id).toEqual('intent question');
expect(secondQuestionTextField.props().id).toEqual('intent question'); expect(wrapper.state('intent').questions.length).toBe(1);
expect(thirdQuestionTextField.props().id).toEqual('intent question');
//TODO: simulate click on delete icon inside text field and check if text field is removed const rightIcon = firstQuestionTextField.props().rightIcon;
rightIcon.props.onClick(firstQuestionTextField.props().key);
expect(wrapper.state('intent').questions.length).toBe(1);
expect(firstQuestionTextField.instance().value).toEqual('first question');
}); });
it ('accepts text without special characters for intent explanation', () => { it ('accepts text without special characters for intent explanation', () => {