/*globals describe, it*/
const assert = require('assert');
const TemplateGenerator = require('../lib/cmds/template_generator');

describe('TemplateGenerator', function () {
  describe('getExternalProject', function () {
    let templateGenerator;

    before(() => {
      templateGenerator = new TemplateGenerator();
    });

    describe('with github link', function () {

      it('return correct zip filename for https link', function () {
        let result = templateGenerator.getExternalProject("https://github.com/embark-framework/embark");
        assert.strictEqual(result.url, "https://github.com/embark-framework/embark/archive/master.zip");
        assert.strictEqual(result.filePath.replace(/\\/g,'/'), ".embark/templates/embark-framework/embark/archive.zip");
      });

      it('return correct zip filename for http link', function () {
        let result = templateGenerator.getExternalProject("http://github.com/embark-framework/embark");
        assert.strictEqual(result.url, "http://github.com/embark-framework/embark/archive/master.zip");
        assert.strictEqual(result.filePath.replace(/\\/g,'/'), ".embark/templates/embark-framework/embark/archive.zip");
      });

      it('return correct zip filename without protocol specified ', function () {
        let result = templateGenerator.getExternalProject("github.com/embark-framework/embark");
        assert.strictEqual(result.url, "https://github.com/embark-framework/embark/archive/master.zip");
        assert.strictEqual(result.filePath.replace(/\\/g,'/'), ".embark/templates/embark-framework/embark/archive.zip");
      });

      it('return correct zip filename without protocol specified ', function () {
        let result = templateGenerator.getExternalProject("github.com/embark-framework/embark");
        assert.strictEqual(result.url, "https://github.com/embark-framework/embark/archive/master.zip");
        assert.strictEqual(result.filePath.replace(/\\/g,'/'), ".embark/templates/embark-framework/embark/archive.zip");
      });

      it('return correct zip filename with just username/repo specified', function () {
        let result = templateGenerator.getExternalProject("embark-framework/embark");
        assert.strictEqual(result.url, "https://github.com/embark-framework/embark/archive/master.zip");
        assert.strictEqual(result.filePath.replace(/\\/g,'/'), ".embark/templates/embark-framework/embark/archive.zip");
      });

      it('return correct zip filename with just embark template specified', function () {
        let result = templateGenerator.getExternalProject("react");
        assert.strictEqual(result.url, "https://github.com/embark-framework/embark-react-template/archive/master.zip");
        assert.strictEqual(result.filePath.replace(/\\/g,'/'), ".embark/templates/embark-framework/embark-react-template/archive.zip");
      });

    });

  });
});


/*globals describe, it*/
const assert = require('assert');
const TemplateGenerator = require('../lib/utils/template_generator');

describe('TemplateGenerator', function () {
  describe('getExternalProject', function () {
    let templateGenerator;

    before(() => {
      templateGenerator = new TemplateGenerator();
    });

    describe('with github link', function () {

      it('return correct zip filename for https link', function () {
        let result = templateGenerator.getExternalProject("https://github.com/embark-framework/embark");
        assert.strictEqual(result.url, "https://github.com/embark-framework/embark/archive/master.zip");
        assert.strictEqual(result.filePath.replace(/\\/g,'/'), ".embark/templates/embark-framework/embark/archive.zip");
      });

      it('return correct zip filename for http link', function () {
        let result = templateGenerator.getExternalProject("http://github.com/embark-framework/embark");
        assert.strictEqual(result.url, "http://github.com/embark-framework/embark/archive/master.zip");
        assert.strictEqual(result.filePath.replace(/\\/g,'/'), ".embark/templates/embark-framework/embark/archive.zip");
      });

      it('return correct zip filename without protocol specified ', function () {
        let result = templateGenerator.getExternalProject("github.com/embark-framework/embark");
        assert.strictEqual(result.url, "https://github.com/embark-framework/embark/archive/master.zip");
        assert.strictEqual(result.filePath.replace(/\\/g,'/'), ".embark/templates/embark-framework/embark/archive.zip");
      });

      it('return correct zip filename without protocol specified ', function () {
        let result = templateGenerator.getExternalProject("github.com/embark-framework/embark");
        assert.strictEqual(result.url, "https://github.com/embark-framework/embark/archive/master.zip");
        assert.strictEqual(result.filePath.replace(/\\/g,'/'), ".embark/templates/embark-framework/embark/archive.zip");
      });

      it('return correct zip filename with just username/repo specified', function () {
        let result = templateGenerator.getExternalProject("embark-framework/embark");
        assert.strictEqual(result.url, "https://github.com/embark-framework/embark/archive/master.zip");
        assert.strictEqual(result.filePath.replace(/\\/g,'/'), ".embark/templates/embark-framework/embark/archive.zip");
      });

      it('return correct zip filename with just embark template specified', function () {
        let result = templateGenerator.getExternalProject("react");
        assert.strictEqual(result.url, "https://github.com/embark-framework/embark-react-template/archive/master.zip");
        assert.strictEqual(result.filePath.replace(/\\/g,'/'), ".embark/templates/embark-framework/embark-react-template/archive.zip");
      });

    });

  });
});


update test