"""
API UNIT TESTS
================
"""
from django.test import TestCase, Client

from gargantext.models import Node
from gargantext.util.db import session

from rest_framework.test import APIClient
from rest_framework.test import APIRequestFactory

# Using the standard RequestFactory API to create a form POST request
#factory = APIRequestFactory()



class APIRecipe(TestCase):
    def setUp(self):
        """
        Will be run before each test
        """
        self.client = Client()
        # login with our fake user
        response = self.client.post(
                            '/auth/login/',
                            {'username': 'pcorser', 'password': 'peter'}
                            )
        self.create_project()
        self.create_corpus()
        self.factory = APIRequestFactory()


    def create_project(self):

        new_project = Node(
            typename = 'PROJECT',
            name = "My project",
        )
        session.add(new_project)
        session.commit()
        self.project = new_project


    def create_corpus(self):
        #create a default corpus

        self.corpus = self.project.add_child(
            name = "My Corpus",
            typename = 'CORPUS',
        )

        session.add(self.corpus)
        session.commit()


    def test_001_post_project(self):
        '''POST /projects'''
        request = self.factory.post('/api/projects/', {'name': 'PROJECT TEST'}, format='json')

    def test_002_get_projects(self):
        '''GET /projects'''
        request = self.factory.get('/api/projects/', format='json')

    def test_003_put_projects(self):
        '''PUT /projects'''
        request = self.factory.put('/api/projects/', {"name": "My TEST PROJECT"}, format='json')

    def test_004_delete_projects(self):
        '''DELETE /projects'''
        request = self.factory.delete('/api/projects/', format='json')


    def test_005_delete_project(self):
        '''DELETE /project'''
        request = self.factory.delete('/api/project/%s' %self.project.id, format='json')
    def test_006_get_project(self):
        '''GET /PROJECT'''
        request = self.factory.get('/api/project/%s' %self.project.id, format='json')

    def test_007_put_project(self):
        ''' PUT /PROJECT '''
        request = self.factory.put('/api/project/%s' %self.project.id, {"name": "My New Project"}, format='json')
    # def test_008_post_corpus(self):
    #     '''POST /project'''
    #     request = self.factory.post('/project/', {'name': 'PROJECT TEST'})