Exemplo n.º 1
0
 def test_create_a_search_index_no_kwargs(self):
     """
     Test that a TEXT index is created in the remote database.
     """
     index = TextIndex(self.db, 'ddoc001', 'index001')
     index.create()
     self.assertEqual(index.design_document_id, '_design/ddoc001')
     self.assertEqual(index.name, 'index001')
     with DesignDocument(self.db, index.design_document_id) as ddoc:
         self.assertEqual(ddoc['language'], 'query')
         self.assertListEqual(list(ddoc['indexes'].keys()), ['index001'])
         self.assertTrue(ddoc['_rev'].startswith('1-'))
         self.assertEqual(ddoc,
             {'_id': '_design/ddoc001',
              '_rev': ddoc['_rev'],
              'language': 'query',
              'views': {},
              'indexes': {'index001': 
                  {'index': {'index_array_lengths': True,
                             'fields': 'all_fields',
                             'default_field': {},
                             'default_analyzer': 'keyword',
                             'selector': {}},
                   'analyzer': {'name': 'perfield',
                                'default': 'keyword',
                                'fields': {'$default': 'standard'}}}},
              'lists': {},
              'shows': {}
              }
         )
Exemplo n.º 2
0
    def test_create_a_search_index_no_kwargs(self):
        """
        Test that a TEXT index is created in the remote database.
        """
        index = TextIndex(self.db, 'ddoc001', 'index001')
        index.create()
        self.assertEqual(index.design_document_id, '_design/ddoc001')
        self.assertEqual(index.name, 'index001')
        with DesignDocument(self.db, index.design_document_id) as ddoc:
            self.assertEquals(ddoc['_id'], index.design_document_id)
            self.assertTrue(ddoc['_rev'].startswith('1-'))

            self.assertEquals(ddoc['language'], 'query')
            self.assertEquals(ddoc['lists'], {})
            self.assertEquals(ddoc['shows'], {})
            self.assertEquals(ddoc['views'], {})

            index = ddoc['indexes']['index001']
            self.assertEquals(index['analyzer']['default'], 'keyword')
            self.assertEquals(index['analyzer']['fields']['$default'],
                              'standard')
            self.assertEquals(index['analyzer']['name'], 'perfield')
            self.assertEquals(index['index']['default_analyzer'], 'keyword')
            self.assertEquals(index['index']['default_field'], {})
            self.assertEquals(index['index']['fields'], 'all_fields')
            self.assertEquals(index['index']['selector'], {})
            self.assertTrue(index['index']['index_array_lengths'])
Exemplo n.º 3
0
 def test_create_a_search_index_no_kwargs(self):
     """
     Test that a TEXT index is created in the remote database.
     """
     index = TextIndex(self.db, 'ddoc001', 'index001')
     index.create()
     self.assertEqual(index.design_document_id, '_design/ddoc001')
     self.assertEqual(index.name, 'index001')
     with DesignDocument(self.db, index.design_document_id) as ddoc:
         self.assertEqual(ddoc['language'], 'query')
         self.assertListEqual(list(ddoc['indexes'].keys()), ['index001'])
         self.assertTrue(ddoc['_rev'].startswith('1-'))
         self.assertEqual(ddoc,
             {'_id': '_design/ddoc001',
              '_rev': ddoc['_rev'],
              'language': 'query',
              'views': {},
              'indexes': {'index001': 
                  {'index': {'index_array_lengths': True,
                             'fields': 'all_fields',
                             'default_field': {},
                             'default_analyzer': 'keyword',
                             'selector': {}},
                   'analyzer': {'name': 'perfield',
                                'default': 'keyword',
                                'fields': {'$default': 'standard'}}}},
              'lists': {},
              'shows': {}
              }
         )
Exemplo n.º 4
0
    def test_create_a_search_index_with_kwargs(self):
        """
        Test that a TEXT index is created in the remote database.
        """
        index = TextIndex(
            self.db,
            'ddoc001',
            'index001',
            fields=[{'name': 'name', 'type':'string'},
                    {'name': 'age', 'type':'number'}],
            selector={},
            default_field={'enabled': True, 'analyzer': 'german'})
        index.create()
        self.assertEqual(index.design_document_id, '_design/ddoc001')
        self.assertEqual(index.name, 'index001')
        with DesignDocument(self.db, index.design_document_id) as ddoc:
            self.assertEquals(ddoc['_id'], index.design_document_id)
            self.assertTrue(ddoc['_rev'].startswith('1-'))

            self.assertEquals(ddoc['language'], 'query')
            self.assertEquals(ddoc['lists'], {})
            self.assertEquals(ddoc['shows'], {})
            self.assertEquals(ddoc['views'], {})

            index = ddoc['indexes']['index001']
            self.assertEquals(index['analyzer']['default'], 'keyword')
            self.assertEquals(index['analyzer']['fields']['$default'], 'german')
            self.assertEquals(index['analyzer']['name'], 'perfield')
            self.assertEquals(index['index']['default_analyzer'], 'keyword')
            self.assertEquals(index['index']['default_field']['analyzer'], 'german')
            self.assertEquals(index['index']['fields'], [{'name': 'name', 'type': 'string'}, {'name': 'age', 'type': 'number'}])
            self.assertEquals(index['index']['selector'], {})
            self.assertTrue(index['index']['default_field']['enabled'])
            self.assertTrue(index['index']['index_array_lengths'])
Exemplo n.º 5
0
 def test_create_a_search_index_invalid_argument(self):
     """
     Test that a TEXT index is not created when an invalid argument is given.
     """
     index = TextIndex(self.db, 'ddoc001', 'index001', foo='bar')
     with self.assertRaises(CloudantArgumentError) as cm:
         index.create()
     err = cm.exception
     self.assertEqual(str(err), 'Invalid argument: foo')
Exemplo n.º 6
0
 def test_create_a_search_index_invalid_argument(self):
     """
     Test that a TEXT index is not created when an invalid argument is given.
     """
     index = TextIndex(self.db, 'ddoc001', 'index001', foo='bar')
     with self.assertRaises(CloudantArgumentError) as cm:
         index.create()
     err = cm.exception
     self.assertEqual(str(err), 'Invalid argument: foo')
Exemplo n.º 7
0
 def test_search_index_via_query(self):
     """
     Test that a created TEXT index will produce expected query results.
     """
     index = TextIndex(self.db, 'ddoc001', 'index001')
     index.create()
     self.populate_db_with_documents(100)
     with Document(self.db, 'julia006') as doc:
         doc['name'] = 'julia isabel'
     query = Query(self.db)
     resp = query(fields=['name', 'age'], selector={'$text': 'isabel'})
     self.assertEqual(resp['docs'], [{'name': 'julia isabel', 'age': 6}])
Exemplo n.º 8
0
 def test_create_a_search_index_invalid_selector_value(self):
     """
     Test that a TEXT index is not created when an invalid selector
     value is given.
     """
     index = TextIndex(self.db, 'ddoc001', 'index001', selector=5)
     with self.assertRaises(CloudantArgumentError) as cm:
         index.create()
     err = cm.exception
     self.assertEqual(
         str(err), 'Argument selector is not an instance of expected type: '
         '<{} \'dict\'>'.format('type' if PY2 else 'class'))
Exemplo n.º 9
0
 def test_create_a_search_index_invalid_selector_value(self):
     """
     Test that a TEXT index is not created when an invalid selector
     value is given.
     """
     index = TextIndex(self.db, 'ddoc001', 'index001', selector=5)
     with self.assertRaises(CloudantArgumentError) as cm:
         index.create()
     err = cm.exception
     self.assertEqual(
         str(err),
         'Argument selector is not an instance of expected type: '
         '<{} \'dict\'>'.format('type' if PY2 else 'class')
     )
Exemplo n.º 10
0
 def test_search_index_via_query(self):
     """
     Test that a created TEXT index will produce expected query results.
     """
     index = TextIndex(self.db, 'ddoc001', 'index001')
     index.create()
     self.populate_db_with_documents(100)
     with Document(self.db, 'julia006') as doc:
         doc['name'] = 'julia isabel'
     query = Query(self.db)
     resp = query(
         fields=['name', 'age'],
         selector={'$text': 'isabel'}
     )
     self.assertEqual(resp['docs'], [{'name': 'julia isabel', 'age': 6}])
Exemplo n.º 11
0
 def test_constructor_with_only_a_db(self):
     """
     Test instantiating an TextIndex with a database only.  As a side effect
     this test also tests the design_document_id, name, type, and definition
     property methods.
     """
     index = TextIndex(self.db)
     self.assertIsInstance(index, TextIndex)
     self.assertIsNone(index.design_document_id)
     self.assertIsNone(index.name)
     self.assertEqual(index.type, 'text')
     self.assertEqual(index.definition, {})
Exemplo n.º 12
0
 def test_constructor_with_args(self):
     """
     Test instantiating a TextIndex by passing in arguments.  As a side effect
     this test also tests the design_document_id, name, type, and definition
     property methods.
     """
     index = TextIndex(self.db, 'ddoc-id', 'index-name', foo={'bar': 'baz'})
     self.assertIsInstance(index, TextIndex)
     self.assertEqual(index.design_document_id, 'ddoc-id')
     self.assertEqual(index.name, 'index-name')
     self.assertEqual(index.type, 'text')
     self.assertEqual(index.definition, {'foo': {'bar': 'baz'}})