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'})