var chakram = require('chakram'), expect = chakram.expect;
var env = require('../enviroment');
const URL = env.URL;

describe('Categories', function() {
  it('should return all categories', function() {
    return chakram.get(`${URL}categories`).then(function(myResponse) {
      expect(myResponse).to.have.status(200);
      expect(myResponse.body.result).to.be.a('array');
    });
  });
  it('should return one category', function() {
    return chakram.get(`${URL}categories`).then(function(myResponse) {
      let category = myResponse.body.result[0];
      return chakram.get(`${URL}categories/${myResponse.body.result[0].id}`).then(function(myResponse2) {
        expect(myResponse2).to.have.status(200);
        expect(myResponse2.body.result.category_name).to.contain(category.category_name);
      });
    });
  });
  it('should try to create a new category', function() {
    let testObject = {
      'category_name': 'Terreiro',
      'category_description': 'Lugar que mantém as tradições dos afrodescendentes',
    };
    return chakram.post(`${URL}categories`, testObject).then(function(myResponse) {
      expect(myResponse).to.have.status(401);
      expect(myResponse.body.error.code).to.contain('AUTHORIZATION_REQUIRED');
    });
  });
  it('should try to create a new category as user', function(){
    let testObject = {
      'email': 'user@user.com',
      'password': 'user',
    };

    let testObject2 = {
      'category_name': 'Terreiro',
      'category_description': 'Lugar que mantém as tradições dos afrodescendentes',
    };
    return chakram.post(`${URL}end_users/login`, testObject).then(function(myResponse) {
      return chakram.post(`${URL}categories?access_token=${myResponse.body.result.id}`, testObject2).then(function(myResponse2) {
        expect(myResponse2).to.have.status(401);
        expect(myResponse2.body.error.code).to.contain('AUTHORIZATION_REQUIRED');
      });
    });
  });
  it('should create a new category as admin', function() {
    let testObject = {
      'email': 'abc@admin.com',
      'password': 'admin',
    };

    let testObject2 = {
      'category_name': 'Terreiro' + env.randomWord(15, true),
      'category_description': 'Lugar que mantém as tradições dos afrodescendentes',
    };
    return chakram.post(`${URL}end_users/login`, testObject).then(function(myResponse) {
      return chakram.post(`${URL}categories?access_token=${myResponse.body.result.id}`, testObject2).then(function(myResponse2) {
        expect(myResponse2).to.have.status(200);
        expect(myResponse2.body.result).to.be.a('object');
      });
    });
  });
});