Ejemplo n.º 1
0
Archivo: tests.py Proyecto: crs4/ACTIVE
class ItemSearchTest(TestCase):
    """
    Class used to define all tests related to Item objects search.
    """

    def setUp(self):
        """
        Setup the database and index some objects.
        """
        # create a new user
        user  = User.objects.create_user('root', '*****@*****.**', 'root')
        user.is_superuser = True
        user.save()

        # create the search manager
        self.sm = ESManager()
        
        # create and index some items
        for i in range(100):
            item = Item()
            item.type = 'image'
            item.filename = 'test_' + str(i)
            item.description = 'test'
            item.mime_type = 'image/png'
            item.owner = user
            item.save()

            serializer = ItemSerializer(item)
            self.sm.create({'doc_type' : 'items', 'params' : serializer.data })
        sleep(1)

    def tearDown(self):
        """
        Remove the objects previuosly indexed.
        """
        for i in range(101):
            if self.sm.exists({'doc_type' : 'items', 'params': { 'id' : i+1 }})['results']:
                self.sm.delete({'doc_type' : 'items', 'params': { 'id' : i+1 }})

    def test_filter(self):
        """
        Method used to test the search by filter over Item objects.
        """
        data = { "doc_type": "items",
                 "size": 32,
                 "from": 0,
                 "query_params": { "filter": {"field": "filename", "value": "test_1"}
                 }
	}
        results = self.sm.search(data)
        self.assertEquals(results['count'], 1)


    def test_query(self):
        """
        Method used to test the search by query over Item objects.
        """
        data = { "doc_type": "items",
                 "size": 32,
                 "from": 0,
                 "query_params": { "query": {"text": "test", "fields": ["filename", "description"]}
                 }
	}
        results = self.sm.search(data)
        self.assertEquals(results['count'], 100)

    def test_filtered_query(self):
        """
        Method used to test the search by filtered query over Item objects.
        This search uses both filter and query parameters for retrieving objects.
        """
        data = { "doc_type": "items",
                 "size": 32,
                 "from": 0,
                 "query_params": { 
                     "filter": {"field": "filename", "value": "test_1"},
                     "query" : {"text": "test", "fields": ["filename", "description"]}
                 }
	}
        results = self.sm.search(data)
        self.assertEquals(results['count'], 1)