Source code for fireant.tests.slicer.widgets.test_datatables

from datetime import date
from unittest import TestCase
from unittest.mock import Mock

import pandas as pd

from fireant.slicer.widgets.datatables import (
    DataTablesJS,
    _format_metric_cell,
)
from fireant.tests.slicer.mocks import (
    CumSum,
    ElectionOverElection,
    cat_dim_df,
    cont_cat_dim_df,
    cont_dim_df,
    cont_dim_operation_df,
    cont_uni_dim_all_totals_df,
    cont_uni_dim_df,
    cont_uni_dim_ref_df,
    cont_uni_dim_totals_df,
    multi_metric_df,
    single_metric_df,
    slicer,
    uni_dim_df,
)
from fireant.utils import format_dimension_key as fd


[docs]class DataTablesTransformerTests(TestCase): maxDiff = None
[docs] def test_single_metric(self): result = DataTablesJS(slicer.metrics.votes) \ .transform(single_metric_df, slicer, [], []) self.assertEqual({ 'columns': [{ 'data': 'votes', 'title': 'Votes', 'render': {'_': 'value', 'display': 'display'}, }], 'data': [{ 'votes': {'value': 111674336, 'display': '111,674,336'} }], }, result)
[docs] def test_multiple_metrics(self): result = DataTablesJS(slicer.metrics.votes, slicer.metrics.wins) \ .transform(multi_metric_df, slicer, [], []) self.assertEqual({ 'columns': [{ 'data': 'votes', 'title': 'Votes', 'render': {'_': 'value', 'display': 'display'}, }, { 'data': 'wins', 'title': 'Wins', 'render': {'_': 'value', 'display': 'display'}, }], 'data': [{ 'votes': {'value': 111674336, 'display': '111,674,336'}, 'wins': {'value': 12, 'display': '12'}, }], }, result)
[docs] def test_multiple_metrics_reversed(self): result = DataTablesJS(slicer.metrics.wins, slicer.metrics.votes) \ .transform(multi_metric_df, slicer, [], []) self.assertEqual({ 'columns': [{ 'data': 'wins', 'title': 'Wins', 'render': {'_': 'value', 'display': 'display'}, }, { 'data': 'votes', 'title': 'Votes', 'render': {'_': 'value', 'display': 'display'}, }], 'data': [{ 'wins': {'value': 12, 'display': '12'}, 'votes': {'value': 111674336, 'display': '111,674,336'}, }], }, result)
[docs] def test_time_series_dim(self): result = DataTablesJS(slicer.metrics.wins) \ .transform(cont_dim_df, slicer, [slicer.dimensions.timestamp], []) self.assertEqual({ 'columns': [{ 'data': 'timestamp', 'title': 'Timestamp', 'render': {'_': 'value'}, }, { 'data': 'wins', 'title': 'Wins', 'render': {'_': 'value', 'display': 'display'}, }], 'data': [{ 'timestamp': {'value': '1996-01-01'}, 'wins': {'display': '2', 'value': 2} }, { 'timestamp': {'value': '2000-01-01'}, 'wins': {'display': '2', 'value': 2} }, { 'timestamp': {'value': '2004-01-01'}, 'wins': {'display': '2', 'value': 2} }, { 'timestamp': {'value': '2008-01-01'}, 'wins': {'display': '2', 'value': 2} }, { 'timestamp': {'value': '2012-01-01'}, 'wins': {'display': '2', 'value': 2} }, { 'timestamp': {'value': '2016-01-01'}, 'wins': {'display': '2', 'value': 2} }], }, result)
[docs] def test_time_series_dim_with_operation(self): result = DataTablesJS(CumSum(slicer.metrics.votes)) \ .transform(cont_dim_operation_df, slicer, [slicer.dimensions.timestamp], []) self.assertEqual({ 'columns': [{ 'data': 'timestamp', 'title': 'Timestamp', 'render': {'_': 'value'}, }, { 'data': 'cumsum(votes)', 'title': 'CumSum(Votes)', 'render': {'_': 'value', 'display': 'display'}, }], 'data': [{ 'cumsum(votes)': {'display': '15,220,449', 'value': 15220449}, 'timestamp': {'value': '1996-01-01'} }, { 'cumsum(votes)': {'display': '31,882,466', 'value': 31882466}, 'timestamp': {'value': '2000-01-01'} }, { 'cumsum(votes)': {'display': '51,497,398', 'value': 51497398}, 'timestamp': {'value': '2004-01-01'} }, { 'cumsum(votes)': {'display': '72,791,613', 'value': 72791613}, 'timestamp': {'value': '2008-01-01'} }, { 'cumsum(votes)': {'display': '93,363,823', 'value': 93363823}, 'timestamp': {'value': '2012-01-01'} }, { 'cumsum(votes)': {'display': '111,674,336', 'value': 111674336}, 'timestamp': {'value': '2016-01-01'} }], }, result)
[docs] def test_cat_dim(self): result = DataTablesJS(slicer.metrics.wins) \ .transform(cat_dim_df, slicer, [slicer.dimensions.political_party], []) self.assertEqual({ 'columns': [{ 'data': 'political_party', 'title': 'Party', 'render': {'_': 'value', 'display': 'display'}, }, { 'data': 'wins', 'title': 'Wins', 'render': {'_': 'value', 'display': 'display'}, }], 'data': [{ 'political_party': {'display': 'Democrat', 'value': 'd'}, 'wins': {'display': '6', 'value': 6} }, { 'political_party': {'display': 'Independent', 'value': 'i'}, 'wins': {'display': '0', 'value': 0} }, { 'political_party': {'display': 'Republican', 'value': 'r'}, 'wins': {'display': '6', 'value': 6} }], }, result)
[docs] def test_uni_dim(self): result = DataTablesJS(slicer.metrics.wins) \ .transform(uni_dim_df, slicer, [slicer.dimensions.candidate], []) self.assertEqual({ 'columns': [{ 'data': 'candidate', 'render': {'_': 'value', 'display': 'display'}, 'title': 'Candidate' }, { 'data': 'wins', 'render': {'_': 'value', 'display': 'display'}, 'title': 'Wins' }], 'data': [{ 'candidate': {'display': 'Bill Clinton', 'value': 1}, 'wins': {'display': '2', 'value': 2} }, { 'candidate': {'display': 'Bob Dole', 'value': 2}, 'wins': {'display': '0', 'value': 0} }, { 'candidate': {'display': 'Ross Perot', 'value': 3}, 'wins': {'display': '0', 'value': 0} }, { 'candidate': {'display': 'George Bush', 'value': 4}, 'wins': {'display': '4', 'value': 4} }, { 'candidate': {'display': 'Al Gore', 'value': 5}, 'wins': {'display': '0', 'value': 0} }, { 'candidate': {'display': 'John Kerry', 'value': 6}, 'wins': {'display': '0', 'value': 0} }, { 'candidate': {'display': 'Barrack Obama', 'value': 7}, 'wins': {'display': '4', 'value': 4} }, { 'candidate': {'display': 'John McCain', 'value': 8}, 'wins': {'display': '0', 'value': 0} }, { 'candidate': {'display': 'Mitt Romney', 'value': 9}, 'wins': {'display': '0', 'value': 0} }, { 'candidate': {'display': 'Donald Trump', 'value': 10}, 'wins': {'display': '2', 'value': 2} }, { 'candidate': {'display': 'Hillary Clinton', 'value': 11}, 'wins': {'display': '0', 'value': 0} }], }, result)
[docs] def test_uni_dim_no_display_definition(self): import copy candidate = copy.copy(slicer.dimensions.candidate) uni_dim_df_copy = uni_dim_df.copy() del uni_dim_df_copy[fd(slicer.dimensions.candidate.display.key)] del candidate.display result = DataTablesJS(slicer.metrics.wins) \ .transform(uni_dim_df_copy, slicer, [candidate], []) self.assertEqual({ 'columns': [{ 'data': 'candidate', 'render': {'_': 'value'}, 'title': 'Candidate' }, { 'data': 'wins', 'render': {'_': 'value', 'display': 'display'}, 'title': 'Wins' }], 'data': [{ 'candidate': {'value': 1}, 'wins': {'display': '2', 'value': 2} }, { 'candidate': {'value': 2}, 'wins': {'display': '0', 'value': 0} }, { 'candidate': {'value': 3}, 'wins': {'display': '0', 'value': 0} }, { 'candidate': {'value': 4}, 'wins': {'display': '4', 'value': 4} }, { 'candidate': {'value': 5}, 'wins': {'display': '0', 'value': 0} }, { 'candidate': {'value': 6}, 'wins': {'display': '0', 'value': 0} }, { 'candidate': {'value': 7}, 'wins': {'display': '4', 'value': 4} }, { 'candidate': {'value': 8}, 'wins': {'display': '0', 'value': 0} }, { 'candidate': {'value': 9}, 'wins': {'display': '0', 'value': 0} }, { 'candidate': {'value': 10}, 'wins': {'display': '2', 'value': 2} }, { 'candidate': {'value': 11}, 'wins': {'display': '0', 'value': 0} }], }, result)
[docs] def test_multi_dims_time_series_and_uni(self): result = DataTablesJS(slicer.metrics.wins) \ .transform(cont_uni_dim_df, slicer, [slicer.dimensions.timestamp, slicer.dimensions.state], []) self.assertEqual({ 'columns': [{ 'data': 'timestamp', 'title': 'Timestamp', 'render': {'_': 'value'}, }, { 'data': 'state', 'render': {'_': 'value', 'display': 'display'}, 'title': 'State' }, { 'data': 'wins', 'title': 'Wins', 'render': {'_': 'value', 'display': 'display'}, }], 'data': [{ 'timestamp': {'value': '1996-01-01'}, 'state': {'display': 'Texas', 'value': 1}, 'wins': {'display': '1', 'value': 1} }, { 'timestamp': {'value': '1996-01-01'}, 'state': {'display': 'California', 'value': 2}, 'wins': {'display': '1', 'value': 1} }, { 'timestamp': {'value': '2000-01-01'}, 'state': {'display': 'Texas', 'value': 1}, 'wins': {'display': '1', 'value': 1} }, { 'timestamp': {'value': '2000-01-01'}, 'state': {'display': 'California', 'value': 2}, 'wins': {'display': '1', 'value': 1} }, { 'timestamp': {'value': '2004-01-01'}, 'state': {'display': 'Texas', 'value': 1}, 'wins': {'display': '1', 'value': 1} }, { 'timestamp': {'value': '2004-01-01'}, 'state': {'display': 'California', 'value': 2}, 'wins': {'display': '1', 'value': 1} }, { 'timestamp': {'value': '2008-01-01'}, 'state': {'display': 'Texas', 'value': 1}, 'wins': {'display': '1', 'value': 1} }, { 'timestamp': {'value': '2008-01-01'}, 'state': {'display': 'California', 'value': 2}, 'wins': {'display': '1', 'value': 1} }, { 'timestamp': {'value': '2012-01-01'}, 'state': {'display': 'Texas', 'value': 1}, 'wins': {'display': '1', 'value': 1} }, { 'timestamp': {'value': '2012-01-01'}, 'state': {'display': 'California', 'value': 2}, 'wins': {'display': '1', 'value': 1} }, { 'timestamp': {'value': '2016-01-01'}, 'state': {'display': 'Texas', 'value': 1}, 'wins': {'display': '1', 'value': 1} }, { 'timestamp': {'value': '2016-01-01'}, 'state': {'display': 'California', 'value': 2}, 'wins': {'display': '1', 'value': 1} }], }, result)
[docs] def test_multi_dims_with_one_level_totals(self): result = DataTablesJS(slicer.metrics.wins) \ .transform(cont_uni_dim_totals_df, slicer, [slicer.dimensions.timestamp, slicer.dimensions.state.rollup()], []) self.assertEqual({ 'columns': [{ 'data': 'timestamp', 'title': 'Timestamp', 'render': {'_': 'value'}, }, { 'data': 'state', 'render': {'_': 'value', 'display': 'display'}, 'title': 'State' }, { 'data': 'wins', 'title': 'Wins', 'render': {'_': 'value', 'display': 'display'}, }], 'data': [{ 'state': {'display': 'Texas', 'value': 1}, 'timestamp': {'value': '1996-01-01'}, 'wins': {'display': '1', 'value': 1} }, { 'state': {'display': 'California', 'value': 2}, 'timestamp': {'value': '1996-01-01'}, 'wins': {'display': '1', 'value': 1} }, { 'state': {'display': 'Totals', 'value': 'Totals'}, 'timestamp': {'value': '1996-01-01'}, 'wins': {'display': '2', 'value': 2} }, { 'state': {'display': 'Texas', 'value': 1}, 'timestamp': {'value': '2000-01-01'}, 'wins': {'display': '1', 'value': 1} }, { 'state': {'display': 'California', 'value': 2}, 'timestamp': {'value': '2000-01-01'}, 'wins': {'display': '1', 'value': 1} }, { 'state': {'display': 'Totals', 'value': 'Totals'}, 'timestamp': {'value': '2000-01-01'}, 'wins': {'display': '2', 'value': 2} }, { 'state': {'display': 'Texas', 'value': 1}, 'timestamp': {'value': '2004-01-01'}, 'wins': {'display': '1', 'value': 1} }, { 'state': {'display': 'California', 'value': 2}, 'timestamp': {'value': '2004-01-01'}, 'wins': {'display': '1', 'value': 1} }, { 'state': {'display': 'Totals', 'value': 'Totals'}, 'timestamp': {'value': '2004-01-01'}, 'wins': {'display': '2', 'value': 2} }, { 'state': {'display': 'Texas', 'value': 1}, 'timestamp': {'value': '2008-01-01'}, 'wins': {'display': '1', 'value': 1} }, { 'state': {'display': 'California', 'value': 2}, 'timestamp': {'value': '2008-01-01'}, 'wins': {'display': '1', 'value': 1} }, { 'state': {'display': 'Totals', 'value': 'Totals'}, 'timestamp': {'value': '2008-01-01'}, 'wins': {'display': '2', 'value': 2} }, { 'state': {'display': 'Texas', 'value': 1}, 'timestamp': {'value': '2012-01-01'}, 'wins': {'display': '1', 'value': 1} }, { 'state': {'display': 'California', 'value': 2}, 'timestamp': {'value': '2012-01-01'}, 'wins': {'display': '1', 'value': 1} }, { 'state': {'display': 'Totals', 'value': 'Totals'}, 'timestamp': {'value': '2012-01-01'}, 'wins': {'display': '2', 'value': 2} }, { 'state': {'display': 'Texas', 'value': 1}, 'timestamp': {'value': '2016-01-01'}, 'wins': {'display': '1', 'value': 1} }, { 'state': {'display': 'California', 'value': 2}, 'timestamp': {'value': '2016-01-01'}, 'wins': {'display': '1', 'value': 1} }, { 'state': {'display': 'Totals', 'value': 'Totals'}, 'timestamp': {'value': '2016-01-01'}, 'wins': {'display': '2', 'value': 2} }], }, result)
[docs] def test_multi_dims_with_all_levels_totals(self): result = DataTablesJS(slicer.metrics.wins) \ .transform(cont_uni_dim_all_totals_df, slicer, [slicer.dimensions.timestamp.rollup(), slicer.dimensions.state.rollup()], []) self.assertEqual({ 'columns': [{ 'data': 'timestamp', 'title': 'Timestamp', 'render': {'_': 'value'}, }, { 'data': 'state', 'render': {'_': 'value', 'display': 'display'}, 'title': 'State' }, { 'data': 'wins', 'title': 'Wins', 'render': {'_': 'value', 'display': 'display'}, }], 'data': [{ 'state': {'display': 'Texas', 'value': 1}, 'timestamp': {'value': '1996-01-01'}, 'wins': {'display': '1', 'value': 1} }, { 'state': {'display': 'California', 'value': 2}, 'timestamp': {'value': '1996-01-01'}, 'wins': {'display': '1', 'value': 1} }, { 'state': {'display': 'Totals', 'value': 'Totals'}, 'timestamp': {'value': '1996-01-01'}, 'wins': {'display': '2', 'value': 2} }, { 'state': {'display': 'Texas', 'value': 1}, 'timestamp': {'value': '2000-01-01'}, 'wins': {'display': '1', 'value': 1} }, { 'state': {'display': 'California', 'value': 2}, 'timestamp': {'value': '2000-01-01'}, 'wins': {'display': '1', 'value': 1} }, { 'state': {'display': 'Totals', 'value': 'Totals'}, 'timestamp': {'value': '2000-01-01'}, 'wins': {'display': '2', 'value': 2} }, { 'state': {'display': 'Texas', 'value': 1}, 'timestamp': {'value': '2004-01-01'}, 'wins': {'display': '1', 'value': 1} }, { 'state': {'display': 'California', 'value': 2}, 'timestamp': {'value': '2004-01-01'}, 'wins': {'display': '1', 'value': 1} }, { 'state': {'display': 'Totals', 'value': 'Totals'}, 'timestamp': {'value': '2004-01-01'}, 'wins': {'display': '2', 'value': 2} }, { 'state': {'display': 'Texas', 'value': 1}, 'timestamp': {'value': '2008-01-01'}, 'wins': {'display': '1', 'value': 1} }, { 'state': {'display': 'California', 'value': 2}, 'timestamp': {'value': '2008-01-01'}, 'wins': {'display': '1', 'value': 1} }, { 'state': {'display': 'Totals', 'value': 'Totals'}, 'timestamp': {'value': '2008-01-01'}, 'wins': {'display': '2', 'value': 2} }, { 'state': {'display': 'Texas', 'value': 1}, 'timestamp': {'value': '2012-01-01'}, 'wins': {'display': '1', 'value': 1} }, { 'state': {'display': 'California', 'value': 2}, 'timestamp': {'value': '2012-01-01'}, 'wins': {'display': '1', 'value': 1} }, { 'state': {'display': 'Totals', 'value': 'Totals'}, 'timestamp': {'value': '2012-01-01'}, 'wins': {'display': '2', 'value': 2} }, { 'state': {'display': 'Texas', 'value': 1}, 'timestamp': {'value': '2016-01-01'}, 'wins': {'display': '1', 'value': 1} }, { 'state': {'display': 'California', 'value': 2}, 'timestamp': {'value': '2016-01-01'}, 'wins': {'display': '1', 'value': 1} }, { 'state': {'display': 'Totals', 'value': 'Totals'}, 'timestamp': {'value': '2016-01-01'}, 'wins': {'display': '2', 'value': 2} }, { 'state': {'display': 'Totals', 'value': 'Totals'}, 'timestamp': {'value': 'Totals'}, 'wins': {'display': '12', 'value': 12} }], }, result)
[docs] def test_pivoted_single_dimension_no_effect(self): result = DataTablesJS(slicer.metrics.wins, pivot=True) \ .transform(cat_dim_df, slicer, [slicer.dimensions.political_party], []) self.assertEqual({ 'columns': [{ 'data': 'political_party', 'title': 'Party', 'render': {'_': 'value', 'display': 'display'}, }, { 'data': 'wins', 'title': 'Wins', 'render': {'_': 'value', 'display': 'display'}, }], 'data': [{ 'political_party': {'display': 'Democrat', 'value': 'd'}, 'wins': {'display': '6', 'value': 6} }, { 'political_party': {'display': 'Independent', 'value': 'i'}, 'wins': {'display': '0', 'value': 0} }, { 'political_party': {'display': 'Republican', 'value': 'r'}, 'wins': {'display': '6', 'value': 6} }], }, result)
[docs] def test_pivoted_multi_dims_time_series_and_cat(self): result = DataTablesJS(slicer.metrics.wins, pivot=True) \ .transform(cont_cat_dim_df, slicer, [slicer.dimensions.timestamp, slicer.dimensions.political_party], []) self.assertEqual({ 'columns': [{ 'data': 'timestamp', 'title': 'Timestamp', 'render': {'_': 'value'}, }, { 'data': 'wins.d', 'title': 'Democrat', 'render': {'_': 'value', 'display': 'display'}, }, { 'data': 'wins.i', 'title': 'Independent', 'render': {'_': 'value', 'display': 'display'}, }, { 'data': 'wins.r', 'title': 'Republican', 'render': {'_': 'value', 'display': 'display'}, }], 'data': [{ 'timestamp': {'value': '1996-01-01'}, 'wins': { 'd': {'display': '2', 'value': 2.0}, 'i': {'display': '0', 'value': 0.0}, 'r': {'display': '0', 'value': 0.0} } }, { 'timestamp': {'value': '2000-01-01'}, 'wins': { 'd': {'display': '0', 'value': 0.0}, 'i': {'display': '0', 'value': 0.0}, 'r': {'display': '2', 'value': 2.0} } }, { 'timestamp': {'value': '2004-01-01'}, 'wins': { 'd': {'display': '0', 'value': 0.0}, 'i': {'display': '0', 'value': 0.0}, 'r': {'display': '2', 'value': 2.0} } }, { 'timestamp': {'value': '2008-01-01'}, 'wins': { 'd': {'display': '2', 'value': 2.0}, 'i': {'display': '0', 'value': 0.0}, 'r': {'display': '0', 'value': 0.0} } }, { 'timestamp': {'value': '2012-01-01'}, 'wins': { 'd': {'display': '2', 'value': 2.0}, 'i': {'display': '0', 'value': 0.0}, 'r': {'display': '0', 'value': 0.0} } }, { 'timestamp': {'value': '2016-01-01'}, 'wins': { 'd': {'display': '0', 'value': 0.0}, 'i': {'display': '0', 'value': 0.0}, 'r': {'display': '2', 'value': 2.0} } }], }, result)
[docs] def test_pivoted_multi_dims_time_series_and_uni(self): result = DataTablesJS(slicer.metrics.votes, pivot=True) \ .transform(cont_uni_dim_df, slicer, [slicer.dimensions.timestamp, slicer.dimensions.state], []) self.assertEqual({ 'columns': [{ 'data': 'timestamp', 'title': 'Timestamp', 'render': {'_': 'value'}, }, { 'data': 'votes.1', 'title': 'Texas', 'render': {'_': 'value', 'display': 'display'}, }, { 'data': 'votes.2', 'title': 'California', 'render': {'_': 'value', 'display': 'display'}, }], 'data': [{ 'timestamp': {'value': '1996-01-01'}, 'votes': { '1': {'display': '5,574,387', 'value': 5574387}, '2': {'display': '9,646,062', 'value': 9646062} } }, { 'timestamp': {'value': '2000-01-01'}, 'votes': { '1': {'display': '6,233,385', 'value': 6233385}, '2': {'display': '10,428,632', 'value': 10428632} } }, { 'timestamp': {'value': '2004-01-01'}, 'votes': { '1': {'display': '7,359,621', 'value': 7359621}, '2': {'display': '12,255,311', 'value': 12255311} } }, { 'timestamp': {'value': '2008-01-01'}, 'votes': { '1': {'display': '8,007,961', 'value': 8007961}, '2': {'display': '13,286,254', 'value': 13286254} } }, { 'timestamp': {'value': '2012-01-01'}, 'votes': { '1': {'display': '7,877,967', 'value': 7877967}, '2': {'display': '12,694,243', 'value': 12694243} } }, { 'timestamp': {'value': '2016-01-01'}, 'votes': { '1': {'display': '5,072,915', 'value': 5072915}, '2': {'display': '13,237,598', 'value': 13237598} } }], }, result)
[docs] def test_time_series_ref(self): result = DataTablesJS(slicer.metrics.votes) \ .transform(cont_uni_dim_ref_df, slicer, [ slicer.dimensions.timestamp, slicer.dimensions.state ], [ ElectionOverElection(slicer.dimensions.timestamp) ]) self.assertEqual({ 'columns': [{ 'data': 'timestamp', 'title': 'Timestamp', 'render': {'_': 'value'}, }, { 'data': 'state', 'render': {'_': 'value', 'display': 'display'}, 'title': 'State' }, { 'data': 'votes', 'title': 'Votes', 'render': {'_': 'value', 'display': 'display'}, }, { 'data': 'votes_eoe', 'title': 'Votes (EoE)', 'render': {'_': 'value', 'display': 'display'}, }], 'data': [{ 'timestamp': {'value': '2000-01-01'}, 'state': {'display': 'Texas', 'value': 1}, 'votes': {'display': '6,233,385', 'value': 6233385.}, 'votes_eoe': {'display': '5,574,387', 'value': 5574387.}, }, { 'timestamp': {'value': '2000-01-01'}, 'state': {'display': 'California', 'value': 2}, 'votes': {'display': '10,428,632', 'value': 10428632.}, 'votes_eoe': {'display': '9,646,062', 'value': 9646062.}, }, { 'timestamp': {'value': '2004-01-01'}, 'state': {'display': 'Texas', 'value': 1}, 'votes': {'display': '7,359,621', 'value': 7359621.}, 'votes_eoe': {'display': '6,233,385', 'value': 6233385.}, }, { 'timestamp': {'value': '2004-01-01'}, 'state': {'display': 'California', 'value': 2}, 'votes': {'display': '12,255,311', 'value': 12255311.}, 'votes_eoe': {'display': '10,428,632', 'value': 10428632.}, }, { 'timestamp': {'value': '2008-01-01'}, 'state': {'display': 'Texas', 'value': 1}, 'votes': {'display': '8,007,961', 'value': 8007961.}, 'votes_eoe': {'display': '7,359,621', 'value': 7359621.}, }, { 'timestamp': {'value': '2008-01-01'}, 'state': {'display': 'California', 'value': 2}, 'votes': {'display': '13,286,254', 'value': 13286254.}, 'votes_eoe': {'display': '12,255,311', 'value': 12255311.}, }, { 'timestamp': {'value': '2012-01-01'}, 'state': {'display': 'Texas', 'value': 1}, 'votes': {'display': '7,877,967', 'value': 7877967.}, 'votes_eoe': {'display': '8,007,961', 'value': 8007961.}, }, { 'timestamp': {'value': '2012-01-01'}, 'state': {'display': 'California', 'value': 2}, 'votes': {'display': '12,694,243', 'value': 12694243.}, 'votes_eoe': {'display': '13,286,254', 'value': 13286254.}, }, { 'timestamp': {'value': '2016-01-01'}, 'state': {'display': 'Texas', 'value': 1}, 'votes': {'display': '5,072,915', 'value': 5072915.}, 'votes_eoe': {'display': '7,877,967', 'value': 7877967.}, }, { 'timestamp': {'value': '2016-01-01'}, 'state': {'display': 'California', 'value': 2}, 'votes': {'display': '13,237,598', 'value': 13237598.}, 'votes_eoe': {'display': '12,694,243', 'value': 12694243.}, }], }, result)
[docs]class MetricCellFormatTests(TestCase): def _mock_metric(self, prefix=None, suffix=None, precision=None): mock_metric = Mock() mock_metric.prefix = prefix mock_metric.suffix = suffix mock_metric.precision = precision return mock_metric
[docs] def test_does_not_prettify_none_string(self): value = _format_metric_cell('None', self._mock_metric()) self.assertDictEqual(value, {'value': 'None', 'display': 'None'})
[docs] def test_does_prettify_non_none_strings(self): value = _format_metric_cell('abcde', self._mock_metric()) self.assertDictEqual(value, {'value': 'abcde', 'display': 'abcde'})
[docs] def test_does_prettify_int_values(self): value = _format_metric_cell(123, self._mock_metric()) self.assertDictEqual(value, {'value': 123, 'display': '123'})
[docs] def test_does_prettify_pandas_date_objects(self): value = _format_metric_cell(pd.Timestamp(date(2016, 5, 10)), self._mock_metric()) self.assertDictEqual(value, {'value': '2016-05-10', 'display': '2016-05-10'})