def test_getOrderValuesFor__decorated_result_set(self): # getOrderValuesFor() knows how to retrieve SQL sort values # from DecoratedResultSets. resultset = self.makeDecoratedStormResultSet() range_factory = StormRangeFactory(resultset) self.assertEqual( [resultset[0].id], range_factory.getOrderValuesFor(resultset[0]))
def test_getOrderValuesFor__two_sort_columns(self): # Sorting by more than one column is supported. resultset = self.makeStormResultSet() resultset.order_by(Person.displayname, Person.name) range_factory = StormRangeFactory(resultset) order_values = range_factory.getOrderValuesFor(resultset[0]) self.assertEqual( [resultset[0].displayname, resultset[0].name], order_values)
def test_getOrderValuesFor__descending_sort_order(self): # getOrderValuesFor() can retrieve values from reverse sorted # columns. resultset = self.makeStormResultSet() resultset = resultset.order_by(Desc(Person.id)) range_factory = StormRangeFactory(resultset) self.assertEqual( [resultset[0].id], range_factory.getOrderValuesFor(resultset[0]))
def test_getOrderValuesFor__one_sort_column(self): # StormRangeFactory.getOrderValuesFor() returns the values # of the fields used in order_by expresssions for a given # result row. resultset = self.makeStormResultSet() resultset.order_by(Person.id) range_factory = StormRangeFactory(resultset) order_values = range_factory.getOrderValuesFor(resultset[0]) self.assertEqual([resultset[0].id], order_values)
def test_getOrderValuesFor__value_from_second_element_of_result_row(self): # getOrderValuesFor() can retrieve values from attributes # of any Storm table class instance which appear in a result row. resultset = self.makeDecoratedStormResultSet() resultset = resultset.order_by(LibraryFileAlias.id) plain_resultset = resultset.get_plain_result_set() range_factory = StormRangeFactory(resultset) self.assertEqual([plain_resultset[0][1].id], range_factory.getOrderValuesFor(plain_resultset[0]))
def test_getOrderValuesFor__value_from_second_element_of_result_row(self): # getOrderValuesFor() can retrieve values from attributes # of any Storm table class instance which appear in a result row. resultset = self.makeDecoratedStormResultSet() resultset = resultset.order_by(LibraryFileAlias.id) plain_resultset = resultset.get_plain_result_set() range_factory = StormRangeFactory(resultset) self.assertEqual( [plain_resultset[0][1].id], range_factory.getOrderValuesFor(plain_resultset[0]))
def test_getEndpointMemos(self): # getEndpointMemos() returns JSON representations of the # sort fields of the first and last element of a batch. resultset = self.makeStormResultSet() resultset.order_by(Person.name) range_factory = StormRangeFactory(resultset) memo_value = range_factory.getOrderValuesFor(resultset[0]) request = LaunchpadTestRequest( QUERY_STRING='memo=%s' % simplejson.dumps(memo_value)) batchnav = BatchNavigator( resultset, request, size=3, range_factory=range_factory) first, last = range_factory.getEndpointMemos(batchnav.batch) expected_first = simplejson.dumps( [resultset[1].name], cls=DateTimeJSONEncoder) expected_last = simplejson.dumps( [resultset[3].name], cls=DateTimeJSONEncoder) self.assertEqual(expected_first, first) self.assertEqual(expected_last, last)