From e09ae47229f33634145d1ce6087720a8eeed611c Mon Sep 17 00:00:00 2001 From: "JHM Darbyshire (iMac)" Date: Sun, 21 Mar 2021 08:38:12 +0100 Subject: [PATCH 1/3] test_tooltip convert to functional tests not class --- pandas/tests/io/formats/style/test_tooltip.py | 170 ++++++++---------- 1 file changed, 75 insertions(+), 95 deletions(-) diff --git a/pandas/tests/io/formats/style/test_tooltip.py b/pandas/tests/io/formats/style/test_tooltip.py index 9539780287f15..cccf5e92bae68 100644 --- a/pandas/tests/io/formats/style/test_tooltip.py +++ b/pandas/tests/io/formats/style/test_tooltip.py @@ -7,99 +7,79 @@ from pandas.io.formats.style import Styler -class TestStylerTooltip: - @pytest.mark.parametrize( - "ttips", - [ - DataFrame( - data=[["Min", "Max"], [np.nan, ""]], - columns=["A", "B"], - index=["a", "b"], - ), - DataFrame(data=[["Max", "Min"]], columns=["B", "A"], index=["a"]), - DataFrame( - data=[["Min", "Max", None]], columns=["A", "B", "C"], index=["a"] - ), - ], +@pytest.fixture +def df(): + return DataFrame( + data=[[0, 1, 2], [3, 4, 5], [6, 7, 8]], + columns=["A", "B", "C"], + index=["x", "y", "z"], ) - def test_tooltip_render(self, ttips): - # GH 21266 - df = DataFrame(data=[[0, 3], [1, 2]], columns=["A", "B"], index=["a", "b"]) - s = Styler(df, uuid_len=0).set_tooltips(ttips).render() - - # test tooltip table level class - assert "#T__ .pd-t {\n visibility: hidden;\n" in s - - # test 'Min' tooltip added - assert ( - "#T__ #T__row0_col0:hover .pd-t {\n visibility: visible;\n}\n" - + '#T__ #T__row0_col0 .pd-t::after {\n content: "Min";\n}' - in s - ) - assert ( - '0' - + "" - in s - ) - - # test 'Max' tooltip added - assert ( - "#T__ #T__row0_col1:hover .pd-t {\n visibility: visible;\n}\n" - + '#T__ #T__row0_col1 .pd-t::after {\n content: "Max";\n}' - in s - ) - assert ( - '3' - + "" - in s - ) - - def test_tooltip_reindex(self): - # GH 39317 - df = DataFrame( - data=[[0, 1, 2], [3, 4, 5], [6, 7, 8]], columns=[0, 1, 2], index=[0, 1, 2] - ) - ttips = DataFrame( - data=[["Mi", "Ma"], ["Mu", "Mo"]], - columns=[0, 2], - index=[0, 2], - ) - s = Styler(df, uuid_len=0).set_tooltips(DataFrame(ttips)).render() - assert '#T__ #T__row0_col0 .pd-t::after {\n content: "Mi";\n}' in s - assert '#T__ #T__row0_col2 .pd-t::after {\n content: "Ma";\n}' in s - assert '#T__ #T__row2_col0 .pd-t::after {\n content: "Mu";\n}' in s - assert '#T__ #T__row2_col2 .pd-t::after {\n content: "Mo";\n}' in s - - def test_tooltip_ignored(self): - # GH 21266 - df = DataFrame(data=[[0, 1], [2, 3]]) - s = Styler(df).render() # no set_tooltips() creates no - assert '' in s - assert '' not in s - - def test_tooltip_css_class(self): - # GH 21266 - df = DataFrame(data=[[0, 1], [2, 3]]) - s = ( - Styler(df, uuid_len=0) - .set_tooltips( - DataFrame([["tooltip"]]), - css_class="other-class", - props=[("color", "green")], - ) - .render() - ) - assert "#T__ .other-class {\n color: green;\n" in s - assert '#T__ #T__row0_col0 .other-class::after {\n content: "tooltip";\n' in s - - # GH 39563 - s = ( - Styler(df, uuid_len=0) - .set_tooltips( - DataFrame([["tooltip"]]), - css_class="other-class", - props="color:green;color:red;", - ) - .render() - ) - assert "#T__ .other-class {\n color: green;\n color: red;\n}" in s + + +@pytest.fixture +def s(df): + return Styler(df, uuid_len=0) + + +@pytest.mark.parametrize( + "ttips", + [ + DataFrame( # Test basic and ignoring blank + data=[["Min", "Max"], [np.nan, ""]], + columns=["A", "B"], + index=["x", "y"], + ), + DataFrame( # Test non-referenced columns and reversed col names reindex + data=[["Max", "Min", "Bad-Col"]], columns=["B", "A", "D"], index=["x"] + ), + ], +) +def test_tooltip_render(ttips, s): + # GH 21266 + result = s.set_tooltips(ttips).render() + + # test tooltip table level class + assert "#T__ .pd-t {\n visibility: hidden;\n" in result + + # test 'Min' tooltip added + assert "#T__ #T__row0_col0:hover .pd-t {\n visibility: visible;\n}" in result + assert '#T__ #T__row0_col0 .pd-t::after {\n content: "Min";\n}' in result + assert 'class="data row0 col0" >0' in result + + # test 'Max' tooltip added + assert "#T__ #T__row0_col1:hover .pd-t {\n visibility: visible;\n}" in result + assert '#T__ #T__row0_col1 .pd-t::after {\n content: "Max";\n}' in result + assert 'class="data row0 col1" >1' in result + + # test Nan, empty string and bad column ignored + assert "#T__ #T__row1_col0:hover .pd-t {\n visibility: visible;\n}" not in result + assert "#T__ #T__row1_col1:hover .pd-t {\n visibility: visible;\n}" not in result + assert "#T__ #T__row0_col2:hover .pd-t {\n visibility: visible;\n}" not in result + assert "#T__ #T__row1_col2:hover .pd-t {\n visibility: visible;\n}" not in result + assert "Bad-Col" not in result + + +def test_tooltip_ignored(s): + # GH 21266 + result = s.render() # no set_tooltips() creates no + assert '' in result + assert '' not in result + + +def test_tooltip_css_class(s): + # GH 21266 + result = s.set_tooltips( + DataFrame([["tooltip"]], index=["x"], columns=["A"]), + css_class="other-class", + props=[("color", "green")], + ).render() + assert "#T__ .other-class {\n color: green;\n" in result + assert '#T__ #T__row0_col0 .other-class::after {\n content: "tooltip";\n' in result + + # GH 39563 + result = s.set_tooltips( # set_tooltips overwrites previous + DataFrame([["tooltip"]], index=["x"], columns=["A"]), + css_class="another-class", + props="color:green;color:red;", + ).render() + assert "#T__ .another-class {\n color: green;\n color: red;\n}" in result From 39c774b3c5a263cd1c26021f03da3cd26d18c8b6 Mon Sep 17 00:00:00 2001 From: "JHM Darbyshire (iMac)" Date: Sun, 21 Mar 2021 09:00:27 +0100 Subject: [PATCH 2/3] test_tooltip convert to functional tests not class --- pandas/tests/io/formats/style/test_tooltip.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/pandas/tests/io/formats/style/test_tooltip.py b/pandas/tests/io/formats/style/test_tooltip.py index cccf5e92bae68..f75d8b3e317d8 100644 --- a/pandas/tests/io/formats/style/test_tooltip.py +++ b/pandas/tests/io/formats/style/test_tooltip.py @@ -24,13 +24,13 @@ def s(df): @pytest.mark.parametrize( "ttips", [ - DataFrame( # Test basic and ignoring blank + DataFrame( # Test basic reindex and ignoring blank data=[["Min", "Max"], [np.nan, ""]], - columns=["A", "B"], + columns=["A", "C"], index=["x", "y"], ), - DataFrame( # Test non-referenced columns and reversed col names reindex - data=[["Max", "Min", "Bad-Col"]], columns=["B", "A", "D"], index=["x"] + DataFrame( # Test non-referenced columns, reversed col names, short index + data=[["Max", "Min", "Bad-Col"]], columns=["C", "A", "D"], index=["x"] ), ], ) @@ -47,14 +47,14 @@ def test_tooltip_render(ttips, s): assert 'class="data row0 col0" >0' in result # test 'Max' tooltip added - assert "#T__ #T__row0_col1:hover .pd-t {\n visibility: visible;\n}" in result - assert '#T__ #T__row0_col1 .pd-t::after {\n content: "Max";\n}' in result - assert 'class="data row0 col1" >1' in result + assert "#T__ #T__row0_col2:hover .pd-t {\n visibility: visible;\n}" in result + assert '#T__ #T__row0_col2 .pd-t::after {\n content: "Max";\n}' in result + assert 'class="data row0 col2" >2' in result # test Nan, empty string and bad column ignored assert "#T__ #T__row1_col0:hover .pd-t {\n visibility: visible;\n}" not in result assert "#T__ #T__row1_col1:hover .pd-t {\n visibility: visible;\n}" not in result - assert "#T__ #T__row0_col2:hover .pd-t {\n visibility: visible;\n}" not in result + assert "#T__ #T__row0_col1:hover .pd-t {\n visibility: visible;\n}" not in result assert "#T__ #T__row1_col2:hover .pd-t {\n visibility: visible;\n}" not in result assert "Bad-Col" not in result From 4b75da6ea5f760308101c4c27f89312f8957fb0f Mon Sep 17 00:00:00 2001 From: "JHM Darbyshire (iMac)" Date: Mon, 22 Mar 2021 15:13:42 +0100 Subject: [PATCH 3/3] name change --- pandas/tests/io/formats/style/test_tooltip.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/pandas/tests/io/formats/style/test_tooltip.py b/pandas/tests/io/formats/style/test_tooltip.py index f75d8b3e317d8..71ce496cca030 100644 --- a/pandas/tests/io/formats/style/test_tooltip.py +++ b/pandas/tests/io/formats/style/test_tooltip.py @@ -17,7 +17,7 @@ def df(): @pytest.fixture -def s(df): +def styler(df): return Styler(df, uuid_len=0) @@ -34,9 +34,9 @@ def s(df): ), ], ) -def test_tooltip_render(ttips, s): +def test_tooltip_render(ttips, styler): # GH 21266 - result = s.set_tooltips(ttips).render() + result = styler.set_tooltips(ttips).render() # test tooltip table level class assert "#T__ .pd-t {\n visibility: hidden;\n" in result @@ -59,16 +59,16 @@ def test_tooltip_render(ttips, s): assert "Bad-Col" not in result -def test_tooltip_ignored(s): +def test_tooltip_ignored(styler): # GH 21266 - result = s.render() # no set_tooltips() creates no + result = styler.render() # no set_tooltips() creates no assert '' in result assert '' not in result -def test_tooltip_css_class(s): +def test_tooltip_css_class(styler): # GH 21266 - result = s.set_tooltips( + result = styler.set_tooltips( DataFrame([["tooltip"]], index=["x"], columns=["A"]), css_class="other-class", props=[("color", "green")], @@ -77,7 +77,7 @@ def test_tooltip_css_class(s): assert '#T__ #T__row0_col0 .other-class::after {\n content: "tooltip";\n' in result # GH 39563 - result = s.set_tooltips( # set_tooltips overwrites previous + result = styler.set_tooltips( # set_tooltips overwrites previous DataFrame([["tooltip"]], index=["x"], columns=["A"]), css_class="another-class", props="color:green;color:red;",