From 0602a155e12ba718b1a9bc764b93e32c6bd78004 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andre=CC=81=20Rivet?= Date: Wed, 10 Apr 2019 19:44:58 -0400 Subject: [PATCH 1/6] add failing `0` test --- tests/test_render.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/tests/test_render.py b/tests/test_render.py index 61fb8c8..63b9f86 100644 --- a/tests/test_render.py +++ b/tests/test_render.py @@ -104,7 +104,7 @@ def request_queue_assertions( if expected_length is not None: self.assertEqual(len(request_queue), expected_length) - + def test_initial_state(self): app = Dash(__name__) app.layout = html.Div([ @@ -475,6 +475,19 @@ def test_initial_state(self): assert_clean_console(self) + def test_nully_child(self): + app = Dash(__name__) + app.layout = html.Div(id='nully-wrapper', children=[0]) + + self.startServer(app) + + self.wait_for_element_by_css_selector('#nully-wrapper') + wrapper = self.driver.find_element_by_id('nully-wrapper') + + self.assertEqual(wrapper.get_attribute('innerHTML'), '0') + + assert_clean_console(self) + def test_simple_callback(self): app = Dash(__name__) app.layout = html.Div([ From d48e81dd2f52434a7fb86a707a8483e26e779078 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andre=CC=81=20Rivet?= Date: Wed, 10 Apr 2019 20:02:32 -0400 Subject: [PATCH 2/6] 2 nully tests --- tests/test_render.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/tests/test_render.py b/tests/test_render.py index 63b9f86..5452d99 100644 --- a/tests/test_render.py +++ b/tests/test_render.py @@ -475,7 +475,7 @@ def test_initial_state(self): assert_clean_console(self) - def test_nully_child(self): + def test_array_of_nully_child(self): app = Dash(__name__) app.layout = html.Div(id='nully-wrapper', children=[0]) @@ -488,6 +488,19 @@ def test_nully_child(self): assert_clean_console(self) + def test_of_nully_child(self): + app = Dash(__name__) + app.layout = html.Div(id='nully-wrapper', children=0) + + self.startServer(app) + + self.wait_for_element_by_css_selector('#nully-wrapper') + wrapper = self.driver.find_element_by_id('nully-wrapper') + + self.assertEqual(wrapper.get_attribute('innerHTML'), '0') + + assert_clean_console(self) + def test_simple_callback(self): app = Dash(__name__) app.layout = html.Div([ From b600b8cd296dd0ade14737dc6985e4596b10e736 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andre=CC=81=20Rivet?= Date: Wed, 10 Apr 2019 20:21:00 -0400 Subject: [PATCH 3/6] support `0` case --- src/TreeContainer.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/TreeContainer.js b/src/TreeContainer.js index 6083a30..e6244ae 100644 --- a/src/TreeContainer.js +++ b/src/TreeContainer.js @@ -33,7 +33,7 @@ const createContainer = component => isSimpleComponent(component) ? class TreeContainer extends Component { getChildren(components) { - if (!components) { + if (isNil(components)) { return null; } From a71507f9a5c721a8eac6adf3c508150968a66031 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andre=CC=81=20Rivet?= Date: Wed, 10 Apr 2019 20:41:55 -0400 Subject: [PATCH 4/6] changelog entry --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9f8b184..c61267b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). +## [Unreleased] +### Fixed +- Fix regression for `children=0` case [#148](https://github.com/plotly/dash-renderer/issues/148) + ## [0.22.0] - 2019-04-10 ### Added - Added support for clientside callbacks [#143](https://github.com/plotly/dash-renderer/pull/143) From 47c97529f4b2bf2d215f94aeb2a7f326e2f27917 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andre=CC=81=20Rivet?= Date: Wed, 10 Apr 2019 21:50:15 -0400 Subject: [PATCH 5/6] rename tests --- tests/test_render.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_render.py b/tests/test_render.py index 5452d99..a6a0e62 100644 --- a/tests/test_render.py +++ b/tests/test_render.py @@ -475,7 +475,7 @@ def test_initial_state(self): assert_clean_console(self) - def test_array_of_nully_child(self): + def test_array_of_falsy_child(self): app = Dash(__name__) app.layout = html.Div(id='nully-wrapper', children=[0]) @@ -488,7 +488,7 @@ def test_array_of_nully_child(self): assert_clean_console(self) - def test_of_nully_child(self): + def test_of_falsy_child(self): app = Dash(__name__) app.layout = html.Div(id='nully-wrapper', children=0) From 64029e22efec499db07607cf37512da0b54808bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andre=CC=81=20Rivet?= Date: Wed, 10 Apr 2019 22:01:45 -0400 Subject: [PATCH 6/6] simplify tests --- tests/test_render.py | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/tests/test_render.py b/tests/test_render.py index a6a0e62..9b2e04a 100644 --- a/tests/test_render.py +++ b/tests/test_render.py @@ -481,10 +481,7 @@ def test_array_of_falsy_child(self): self.startServer(app) - self.wait_for_element_by_css_selector('#nully-wrapper') - wrapper = self.driver.find_element_by_id('nully-wrapper') - - self.assertEqual(wrapper.get_attribute('innerHTML'), '0') + self.wait_for_text_to_equal('#nully-wrapper', '0') assert_clean_console(self) @@ -494,10 +491,7 @@ def test_of_falsy_child(self): self.startServer(app) - self.wait_for_element_by_css_selector('#nully-wrapper') - wrapper = self.driver.find_element_by_id('nully-wrapper') - - self.assertEqual(wrapper.get_attribute('innerHTML'), '0') + self.wait_for_text_to_equal('#nully-wrapper', '0') assert_clean_console(self)