From a1f369f9950481f66640fe605a2db91cab8ef56f Mon Sep 17 00:00:00 2001 From: tplai Date: Tue, 10 Dec 2019 21:18:46 -0500 Subject: [PATCH 1/6] Fixed issue #18344 and added test case for it --- .../src/Autocomplete/Autocomplete.test.js | 21 +++++++++++++++++++ .../src/useAutocomplete/useAutocomplete.js | 2 +- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/packages/material-ui-lab/src/Autocomplete/Autocomplete.test.js b/packages/material-ui-lab/src/Autocomplete/Autocomplete.test.js index 457b1095add98f..9a491a8e43205a 100644 --- a/packages/material-ui-lab/src/Autocomplete/Autocomplete.test.js +++ b/packages/material-ui-lab/src/Autocomplete/Autocomplete.test.js @@ -720,4 +720,25 @@ describe('', () => { expect(options.length).to.equal(1); }); }); + + describe('freeSolo', () => { + it('pressing twice enter should not call onChange listener twice', () => { + render( + option.name} + renderInput={params => } + />, + ); + fireEvent.keyDown(document.activeElement, { key: 'ArrowDown' }); + fireEvent.keyDown(document.activeElement, { key: 'Enter' }); + expect(handleChange.callCount).to.equal(1); + expect(handleChange.args[0][1]).to.equal('foo'); + fireEvent.keyDown(document.activeElement, { key: 'Enter' }); + expect(handleChange.callCount).to.equal(1); + expect(handleChange.args[0][1]).to.equal('foo'); + }); + }); }); diff --git a/packages/material-ui-lab/src/useAutocomplete/useAutocomplete.js b/packages/material-ui-lab/src/useAutocomplete/useAutocomplete.js index 95d714e81d4ec9..38f9ee430afd72 100644 --- a/packages/material-ui-lab/src/useAutocomplete/useAutocomplete.js +++ b/packages/material-ui-lab/src/useAutocomplete/useAutocomplete.js @@ -579,7 +579,7 @@ export default function useAutocomplete(props) { inputRef.current.value.length, ); } - } else if (freeSolo && inputValue !== '') { + } else if (freeSolo && inputValueFilter !== '') { selectNewValue(event, inputValue); } break; From df6ecf7cb9fef95e12e7a2e2f9bd371030c6fac0 Mon Sep 17 00:00:00 2001 From: tplai Date: Tue, 10 Dec 2019 21:26:54 -0500 Subject: [PATCH 2/6] Removed extraneous bracket --- packages/material-ui-lab/src/Autocomplete/Autocomplete.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/material-ui-lab/src/Autocomplete/Autocomplete.test.js b/packages/material-ui-lab/src/Autocomplete/Autocomplete.test.js index 9a491a8e43205a..08f6152458d405 100644 --- a/packages/material-ui-lab/src/Autocomplete/Autocomplete.test.js +++ b/packages/material-ui-lab/src/Autocomplete/Autocomplete.test.js @@ -727,7 +727,7 @@ describe('', () => { option.name} renderInput={params => } />, From 48dd4a2ba8f14897c47fbba2634cef352f49ad6f Mon Sep 17 00:00:00 2001 From: tplai Date: Tue, 10 Dec 2019 21:37:53 -0500 Subject: [PATCH 3/6] Defined handleChange (oops) --- packages/material-ui-lab/src/Autocomplete/Autocomplete.test.js | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/material-ui-lab/src/Autocomplete/Autocomplete.test.js b/packages/material-ui-lab/src/Autocomplete/Autocomplete.test.js index 08f6152458d405..fe6684d99cc81d 100644 --- a/packages/material-ui-lab/src/Autocomplete/Autocomplete.test.js +++ b/packages/material-ui-lab/src/Autocomplete/Autocomplete.test.js @@ -723,6 +723,7 @@ describe('', () => { describe('freeSolo', () => { it('pressing twice enter should not call onChange listener twice', () => { + const handleChange = spy(); render( Date: Tue, 10 Dec 2019 21:48:38 -0500 Subject: [PATCH 4/6] Used deep.equal in expect to verify Autocomplete value --- .../material-ui-lab/src/Autocomplete/Autocomplete.test.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/material-ui-lab/src/Autocomplete/Autocomplete.test.js b/packages/material-ui-lab/src/Autocomplete/Autocomplete.test.js index fe6684d99cc81d..83ab005b3416e8 100644 --- a/packages/material-ui-lab/src/Autocomplete/Autocomplete.test.js +++ b/packages/material-ui-lab/src/Autocomplete/Autocomplete.test.js @@ -724,11 +724,12 @@ describe('', () => { describe('freeSolo', () => { it('pressing twice enter should not call onChange listener twice', () => { const handleChange = spy(); + const options = [{ name: 'foo' }]; render( option.name} renderInput={params => } />, @@ -736,10 +737,10 @@ describe('', () => { fireEvent.keyDown(document.activeElement, { key: 'ArrowDown' }); fireEvent.keyDown(document.activeElement, { key: 'Enter' }); expect(handleChange.callCount).to.equal(1); - expect(handleChange.args[0][1]).to.equal('foo'); + expect(handleChange.args[0][1]).to.deep.equal([options[0]]); fireEvent.keyDown(document.activeElement, { key: 'Enter' }); expect(handleChange.callCount).to.equal(1); - expect(handleChange.args[0][1]).to.equal('foo'); + expect(handleChange.args[0][1]).to.deep.equal([options[0]]); }); }); }); From 61534154fb2881b56e55164a516b13656c757869 Mon Sep 17 00:00:00 2001 From: tplai Date: Tue, 10 Dec 2019 21:55:54 -0500 Subject: [PATCH 5/6] Removed extra set of brackets from assertion --- .../material-ui-lab/src/Autocomplete/Autocomplete.test.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/material-ui-lab/src/Autocomplete/Autocomplete.test.js b/packages/material-ui-lab/src/Autocomplete/Autocomplete.test.js index 83ab005b3416e8..cbc8bd71cb994f 100644 --- a/packages/material-ui-lab/src/Autocomplete/Autocomplete.test.js +++ b/packages/material-ui-lab/src/Autocomplete/Autocomplete.test.js @@ -737,10 +737,10 @@ describe('', () => { fireEvent.keyDown(document.activeElement, { key: 'ArrowDown' }); fireEvent.keyDown(document.activeElement, { key: 'Enter' }); expect(handleChange.callCount).to.equal(1); - expect(handleChange.args[0][1]).to.deep.equal([options[0]]); + expect(handleChange.args[0][1]).to.deep.equal(options[0]); fireEvent.keyDown(document.activeElement, { key: 'Enter' }); expect(handleChange.callCount).to.equal(1); - expect(handleChange.args[0][1]).to.deep.equal([options[0]]); + expect(handleChange.args[0][1]).to.deep.equal(options[0]); }); }); }); From 9ca23a4920b00344926d42312fbf0e2f0580c9d9 Mon Sep 17 00:00:00 2001 From: Olivier Tassinari Date: Wed, 11 Dec 2019 12:04:50 +0100 Subject: [PATCH 6/6] remove redundant assertion --- packages/material-ui-lab/src/Autocomplete/Autocomplete.test.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/material-ui-lab/src/Autocomplete/Autocomplete.test.js b/packages/material-ui-lab/src/Autocomplete/Autocomplete.test.js index cbc8bd71cb994f..3411cdcbf0a4f3 100644 --- a/packages/material-ui-lab/src/Autocomplete/Autocomplete.test.js +++ b/packages/material-ui-lab/src/Autocomplete/Autocomplete.test.js @@ -721,7 +721,7 @@ describe('', () => { }); }); - describe('freeSolo', () => { + describe('prop: freeSolo', () => { it('pressing twice enter should not call onChange listener twice', () => { const handleChange = spy(); const options = [{ name: 'foo' }]; @@ -740,7 +740,6 @@ describe('', () => { expect(handleChange.args[0][1]).to.deep.equal(options[0]); fireEvent.keyDown(document.activeElement, { key: 'Enter' }); expect(handleChange.callCount).to.equal(1); - expect(handleChange.args[0][1]).to.deep.equal(options[0]); }); }); });