def test_get_item_key_slice_using_start_only(self): """ Test getting a key slice by using the start slice value only. """ result = Result(self.view001) expected = [{'key': 'julia097', 'id': 'julia097', 'value': 1}, {'key': 'julia098', 'id': 'julia098', 'value': 1}, {'key': 'julia099', 'id': 'julia099', 'value': 1}] self.assertEqual(result['julia097':], expected) self.assertEqual(result[ResultByKey('julia097'):], expected) self.assertEqual(result['ruby':], []) result = Result(self.view003) expected = [{'key': 47, 'id': 'julia094', 'value': 1}, {'key': 47, 'id': 'julia095', 'value': 1}, {'key': 48, 'id': 'julia096', 'value': 1}, {'key': 48, 'id': 'julia097', 'value': 1}, {'key': 49, 'id': 'julia098', 'value': 1}, {'key': 49, 'id': 'julia099', 'value': 1}] self.assertEqual(result[ResultByKey(47):], expected) self.assertEqual(result[ResultByKey(52):], []) result = Result(self.view005) expected = [{'key': ['julia', 97], 'id': 'julia097', 'value': 1}, {'key': ['julia', 98], 'id': 'julia098', 'value': 1}, {'key': ['julia', 99], 'id': 'julia099', 'value': 1}] self.assertEqual(result[['julia', 97]:], expected) self.assertEqual(result[ResultByKey(['julia', 97]):], expected) self.assertEqual(result[ResultByKey(['ruby', 'foo']):], [])
def test_get_item_by_missing_integer_key(self): """ Test retrieving a result using an integer value that refers to a key that does not exist in the result. """ result = Result(self.view003) self.assertEqual(result[ResultByKey(99)], [])
def test_get_item_by_missing_key(self): """ Test retrieving a result using value that refers to a key that does not exist in the result. """ result = Result(self.view001) self.assertEqual(result['ruby010'], []) self.assertEqual(result[ResultByKey('ruby010')], [])
def test_get_item_by_integer_key(self): """ Test retrieving a result using an integer value that refers to a key of the result. """ result = Result(self.view003) expected = [{'key': 10, 'id': 'julia020', 'value': 1}, {'key': 10, 'id': 'julia021', 'value': 1}] self.assertEqual(result[ResultByKey(10)], expected)
def test_get_item_by_complex_key(self): """ Test retrieving a result using value that refers to a complex key of the result. """ result = Result(self.view005) expected = [{'key': ['julia', 10], 'id': 'julia010', 'value': 1}] self.assertEqual(result[['julia', 10]], expected) self.assertEqual(result[ResultByKey(['julia', 10])], expected)
def test_get_item_by_key(self): """ Test retrieving a result using value that refers to a key of the result. """ result = Result(self.view001) expected = [{'key': 'julia010', 'id': 'julia010', 'value': 1}] self.assertEqual(result['julia010'], expected) self.assertEqual(result[ResultByKey('julia010')], expected)
def test_get_item_invalid_key_slice(self): """ Test that when invalid start and stop values are provided in a slice an exception is raised. Specifically this happens when the slice start and stop are different types. """ result = Result(self.view001) with self.assertRaises(ResultException) as cm: invalid_result = result['foo': ['bar', 'baz']] self.assertEqual(cm.exception.status_code, 101) ten = ResultByKey(10) with self.assertRaises(ResultException) as cm: invalid_result = result['foo': ten] self.assertEqual(cm.exception.status_code, 101)
def search_feature(self, key, database_name): #key=languvage, #database_name c = dbservice() client = c.connection() my_database = client[database_name] result = Result(my_database.all_docs, include_docs=True) my_document = result[ResultByKey(key)] if len(my_document) != 0: for key, value in my_document[0].items(): if key == 'doc': doc = value return doc else: return my_document client.disconnect()
def test_get_item_key_slice_using_stop_only(self): """ Test getting a key slice by using the stop slice value only. """ result = Result(self.view001) expected = [{'key': 'julia000', 'id': 'julia000', 'value': 1}, {'key': 'julia001', 'id': 'julia001', 'value': 1}, {'key': 'julia002', 'id': 'julia002', 'value': 1}] self.assertEqual(result[:'julia002'], expected) self.assertEqual(result[:ResultByKey('julia002')], expected) self.assertEqual( result[:'ruby'], [{'key': 'julia{0:03d}'.format(x), 'id': 'julia{0:03d}'.format(x), 'value': 1} for x in range(100)] ) self.assertEqual(result[:'foo'], []) result = Result(self.view003) expected = [{'key': 0, 'id': 'julia000', 'value': 1}, {'key': 0, 'id': 'julia001', 'value': 1}, {'key': 1, 'id': 'julia002', 'value': 1}, {'key': 1, 'id': 'julia003', 'value': 1}, {'key': 2, 'id': 'julia004', 'value': 1}, {'key': 2, 'id': 'julia005', 'value': 1}] self.assertEqual(result[:ResultByKey(2)], expected) self.assertEqual( result[:ResultByKey(51)], [{'key': x // 2, 'id': 'julia{0:03d}'.format(x), 'value': 1} for x in range(100)] ) self.assertEqual(result[:ResultByKey(-10)], []) result = Result(self.view005) expected = [{'key': ['julia', 0], 'id': 'julia000', 'value': 1}, {'key': ['julia', 1], 'id': 'julia001', 'value': 1}, {'key': ['julia', 2], 'id': 'julia002', 'value': 1}] self.assertEqual(result[:['julia', 2]], expected) self.assertEqual(result[:ResultByKey(['julia', 2])], expected) self.assertEqual( result[:['julia', 102]], [{'key': ['julia', x], 'id': 'julia{0:03d}'.format(x), 'value': 1} for x in range(100)] ) self.assertEqual(result[:ResultByKey(['foo', 'bar'])], [])
def test_get_item_key_slice_using_start_stop(self): """ Test getting a key slice by using start and stop slice values. """ result = Result(self.view001) expected = [{'key': 'julia097', 'id': 'julia097', 'value': 1}, {'key': 'julia098', 'id': 'julia098', 'value': 1}, {'key': 'julia099', 'id': 'julia099', 'value': 1}] self.assertEqual(result['julia097': 'julia099'], expected) self.assertEqual( result[ResultByKey('julia097'): ResultByKey('julia099')], expected ) self.assertEqual(result['julia097': 'ruby'], expected) self.assertEqual( result['julia098': 'julia098'], [{'key': 'julia098', 'id': 'julia098', 'value': 1}] ) self.assertEqual(result['bar': 'foo'], []) result = Result(self.view003) expected = [{'key': 47, 'id': 'julia094', 'value': 1}, {'key': 47, 'id': 'julia095', 'value': 1}, {'key': 48, 'id': 'julia096', 'value': 1}, {'key': 48, 'id': 'julia097', 'value': 1}, {'key': 49, 'id': 'julia098', 'value': 1}, {'key': 49, 'id': 'julia099', 'value': 1}] self.assertEqual(result[ResultByKey(47): ResultByKey(49)], expected) self.assertEqual(result[ResultByKey(47): ResultByKey(52)], expected) self.assertEqual( result[ResultByKey(48): ResultByKey(48)], [{'key': 48, 'id': 'julia096', 'value': 1}, {'key': 48, 'id': 'julia097', 'value': 1}] ) self.assertEqual(result[ResultByKey(52): ResultByKey(54)], []) result = Result(self.view005) expected = [{'key': ['julia', 97], 'id': 'julia097', 'value': 1}, {'key': ['julia', 98], 'id': 'julia098', 'value': 1}, {'key': ['julia', 99], 'id': 'julia099', 'value': 1}] self.assertEqual(result[['julia', 97]: ['julia', 99]], expected) self.assertEqual( result[ResultByKey(['julia', 97]): ResultByKey(['julia', 99])], expected ) self.assertEqual(result[['julia', 97]: ['ruby', 97]], expected) self.assertEqual( result[['julia', 98]: ['julia', 98]], [{'key': ['julia', 98], 'id': 'julia098', 'value': 1}] ) self.assertEqual(result[['ruby', 'bar']: ['ruby', 'foo']], [])