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)
Exemple #8
0
    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']], [])