Add: selections to facets; row index to RefineRow; reference to sections of tutorial '{n}' into tests; {7} adding a selection to a facet
This commit is contained in:
parent
26bc2030a2
commit
c7b445e851
|
@ -23,6 +23,7 @@ class Facet(object):
|
|||
def __init__(self, column, expression='value', omit_blank=False, omit_error=False, select_blank=False, select_error=False, invert=False):
|
||||
self.column = column
|
||||
self.name = column # XXX not sure what the difference is yet
|
||||
self.selections = []
|
||||
self.expression = expression
|
||||
self.invert = invert
|
||||
self.omit_blank = omit_blank
|
||||
|
@ -36,13 +37,23 @@ class Facet(object):
|
|||
'name': self.column,
|
||||
'columnName': self.column,
|
||||
'expression': self.expression,
|
||||
'selection': [], # XXX what is this?
|
||||
'selection': self.selections,
|
||||
'omitBlank': self.omit_blank,
|
||||
'omitError': self.omit_error,
|
||||
'selectBlank': self.select_blank,
|
||||
'selectError': self.select_error,
|
||||
'invert': self.invert,
|
||||
}
|
||||
|
||||
def include(self, selection):
|
||||
for s in self.selections:
|
||||
if s['v']['v'] == selection:
|
||||
return
|
||||
self.selections.append({'v': {'v': selection, 'l': selection}})
|
||||
|
||||
def exclude(self, selection):
|
||||
self.selections = [s for s in self.selections if s['v']['v'] != selection]
|
||||
|
||||
|
||||
|
||||
class FacetResponse(object):
|
||||
|
@ -229,6 +240,7 @@ class RowsResponse(object):
|
|||
def __init__(self, row_response):
|
||||
self.flagged = row_response['flagged']
|
||||
self.starred = row_response['starred']
|
||||
self.index = row_response['i']
|
||||
self.row = [c['v'] if c else None for c in row_response['cells']]
|
||||
|
||||
def __init__(self, rows_response):
|
||||
|
@ -336,6 +348,8 @@ class RefineProject:
|
|||
return FacetsResponse(response)
|
||||
|
||||
def get_rows(self, engine=None, start=0, limit=10):
|
||||
response = self.do_json('get-rows', {'start': start, 'limit': limit})
|
||||
response = self.do_json('get-rows', {
|
||||
'sorting': "{'criteria': []}", 'engine': self.engine.as_json(),
|
||||
'start': start, 'limit': limit})
|
||||
return RowsResponse(response)
|
||||
|
||||
|
|
|
@ -36,6 +36,15 @@ class FacetTest(unittest.TestCase):
|
|||
engine.add_facet(Facet(column='Ethnicity'))
|
||||
self.assertEqual(len(engine.facets), 2)
|
||||
|
||||
def test_selections(self):
|
||||
facet = Facet('column name')
|
||||
facet.include('element')
|
||||
self.assertEqual(len(facet.selections), 1)
|
||||
facet.include('element 2')
|
||||
self.assertEqual(len(facet.selections), 2)
|
||||
facet.exclude('element')
|
||||
self.assertEqual(len(facet.selections), 1)
|
||||
|
||||
def test_facets_response(self):
|
||||
response = """{"facets":[{"name":"Party Code","expression":"value","columnName":"Party Code","invert":false,"choices":[{"v":{"v":"D","l":"D"},"c":3700,"s":false},{"v":{"v":"R","l":"R"},"c":1613,"s":false},{"v":{"v":"N","l":"N"},"c":15,"s":false},{"v":{"v":"O","l":"O"},"c":184,"s":false}],"blankChoice":{"s":false,"c":1446}}],"mode":"row-based"}"""
|
||||
response = json.loads(response)
|
||||
|
|
|
@ -19,6 +19,7 @@ PATH_TO_TEST_DATA = os.path.join('google', 'test', 'data')
|
|||
class RefineTestCase(unittest.TestCase):
|
||||
project_file = None
|
||||
project = None
|
||||
# {1}, {2}
|
||||
def setUp(self):
|
||||
self.server = RefineServer()
|
||||
self.refine = Refine(self.server)
|
||||
|
@ -67,6 +68,7 @@ class TutorialTestFacets(RefineTestCase):
|
|||
project_file = 'louisiana-elected-officials.csv'
|
||||
|
||||
def test_get_rows(self):
|
||||
# {3}
|
||||
response = self.project.get_rows(limit=10)
|
||||
self.assertEqual(len(response.rows), 10)
|
||||
self.assertEqual(response.limit, 10)
|
||||
|
@ -76,6 +78,7 @@ class TutorialTestFacets(RefineTestCase):
|
|||
self.assertFalse(row.starred)
|
||||
|
||||
def test_basic_facet(self):
|
||||
# {4}
|
||||
facet = Facet(column='Party Code')
|
||||
facets = self.project.text_facet(facet)
|
||||
pc = facets.facets[0]
|
||||
|
@ -83,14 +86,22 @@ class TutorialTestFacets(RefineTestCase):
|
|||
self.assertEqual(pc.choices['D'].count, 3700)
|
||||
self.assertEqual(pc.choices['N'].count, 15)
|
||||
self.assertEqual(pc.blank_choice.count, 1446)
|
||||
# {5}, {6}
|
||||
engine = Engine(facet)
|
||||
engine.add_facet(Facet(column='Ethnicity'))
|
||||
ethnicity_facet = Facet(column='Ethnicity')
|
||||
engine.add_facet(ethnicity_facet)
|
||||
self.project.engine = engine
|
||||
facets = self.project.text_facet()
|
||||
e = facets.facets[1]
|
||||
self.assertEqual(e.choices['B'].count, 1255)
|
||||
self.assertEqual(e.choices['W'].count, 4469)
|
||||
|
||||
# {7}
|
||||
ethnicity_facet.include('B')
|
||||
facets = self.project.text_facet()
|
||||
response = self.project.get_rows()
|
||||
self.assertEqual(response.filtered, 1255)
|
||||
indexes = [r.index for r in response.rows]
|
||||
self.assertEqual(indexes, [1, 2, 3, 4, 6, 12, 18, 26, 28, 32])
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
Loading…
Reference in New Issue