From 2ff9cfa6da1d6d30343acb2c4c678eedd39621ff Mon Sep 17 00:00:00 2001 From: "evelyn.graumann" Date: Thu, 23 Jan 2020 17:56:11 +0100 Subject: [PATCH] react tutorial: fix behaviour of 0 and . --- src/components/Calculator/Calculator.jsx | 4 ++-- src/components/Calculator/Calculator.spec.js | 7 ++++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/components/Calculator/Calculator.jsx b/src/components/Calculator/Calculator.jsx index 4ffd396..34dd120 100644 --- a/src/components/Calculator/Calculator.jsx +++ b/src/components/Calculator/Calculator.jsx @@ -87,9 +87,9 @@ class Calculator extends Component { // set displayValue to '0' if displayValue is empty string if (displayValue === '') displayValue = '0'; } else { - // replace displayValue with value if displayValue equal to '0' + // replace displayValue with value if displayValue equal to '0' and it does not include the dot // else concatenate displayValue and value - displayValue === '0' ? displayValue = value : displayValue += value; + displayValue === '0' && value!== '.' ? displayValue = value : displayValue += value; } this.setState({ displayValue }); diff --git a/src/components/Calculator/Calculator.spec.js b/src/components/Calculator/Calculator.spec.js index 9993680..a94ed06 100644 --- a/src/components/Calculator/Calculator.spec.js +++ b/src/components/Calculator/Calculator.spec.js @@ -88,6 +88,12 @@ describe('updateDisplay', () => { expect(wrapper.state('displayValue')).toEqual('0'); }); + it('prevents showing only . when 0 as initial value', () => { + wrapper.instance().updateDisplay('0'); + wrapper.instance().updateDisplay('.'); + expect(wrapper.state('displayValue')).toEqual('0.5'); + }); + it('removes last char of displayValue', () => { wrapper.instance().updateDisplay('5'); wrapper.instance().updateDisplay('0'); @@ -161,7 +167,6 @@ describe('callOperator', () => { expect(wrapper.state('displayValue')).toEqual('6.05'); }); - it('updates displayValue to the sum of storedValue and displayValue', () => { wrapper.setState({ storedValue: '3' }); wrapper.setState({ displayValue: '2' });