Skip to content

Commit

Permalink
Merge 02f8dba into f8322a1
Browse files Browse the repository at this point in the history
  • Loading branch information
Mathieu Desvé committed Feb 15, 2014
2 parents f8322a1 + 02f8dba commit e64697f
Show file tree
Hide file tree
Showing 11 changed files with 224 additions and 5 deletions.
2 changes: 1 addition & 1 deletion package.json
Expand Up @@ -55,7 +55,7 @@
},
"devDependencies": {
"proxyquire": "~0.5.1",
"sinon": "~1.7.3",
"sinon": "~1.8.2",
"coveralls": "~2.7.1",
"gulp": "~3.5.2",
"gulp-mocha": "~0.4.1",
Expand Down
77 changes: 73 additions & 4 deletions test/conflicter.js
Expand Up @@ -5,11 +5,12 @@ var events = require('events');
var assert = require('assert');
var Conflicter = require('../lib/util/conflicter');
var log = require('../lib/util/log')();
var inquirer = require('./helpers/inquirer');

describe('Conflicter', function () {
beforeEach(function () {
var mockAdapter = {
prompt: function () {},
prompt: inquirer.prompt,
diff: function () {},
log: log
};
Expand All @@ -22,11 +23,39 @@ describe('Conflicter', function () {

it('#add()', function () {
this.conflicter.add(__filename);
var conflict = this.conflicter.conflicts.pop();
var conflict = this.conflicter.pop();
assert.deepEqual(conflict.file, __filename);
assert.deepEqual(conflict.content, fs.readFileSync(__filename, 'utf8'));
});

it('#pop()', function () {
this.conflicter.add({
file: 'foo.js',
content: 'var foo = "foo";\n'
});
this.conflicter.add({
file: 'boo.js',
content: 'var boo = "boo";\n'
});
var conflict = this.conflicter.pop();
assert.deepEqual(conflict.file, 'boo.js');
assert.deepEqual(conflict.content, 'var boo = "boo";\n');
});

it('#shift()', function () {
this.conflicter.add({
file: 'foo.js',
content: 'var foo = "foo";\n'
});
this.conflicter.add({
file: 'boo.js',
content: 'var boo = "boo";\n'
});
var conflict = this.conflicter.shift();
assert.deepEqual(conflict.file, 'foo.js');
assert.deepEqual(conflict.content, 'var foo = "foo";\n');
});

describe('#resolve()', function () {
it('wihout conflict', function (done) {
this.conflicter.resolve(done);
Expand Down Expand Up @@ -87,8 +116,14 @@ describe('Conflicter', function () {
});
});

describe.skip('#collision()', function () {
describe('#collision()', function () {

var me = fs.readFileSync(__filename, 'utf8');

afterEach(function () {
delete this.conflicter.force;
});

it('identical status', function (done) {
this.conflicter.collision(__filename, me, function (status) {
assert.equal(status, 'identical');
Expand All @@ -103,7 +138,41 @@ describe('Conflicter', function () {
});
});

it('conflict status', function (done) {
it('conflict status force', function (done) {
this.conflicter.collision(__filename, '', function (status) {
assert.equal(status, 'force');
done();
});
inquirer.readline.emit('line', 'y');
});

it('conflict status skip', function (done) {
this.conflicter.collision(__filename, '', function (status) {
assert.equal(status, 'skip');
done();
});
inquirer.readline.emit('line', 'n');
});

it('conflict status force all', function (done) {
this.conflicter.collision(__filename, '', function (status) {
assert.equal(status, 'force');
done();
});
inquirer.readline.emit('line', 'a');
});

it('conflict status show diff', function (done) {
this.conflicter.collision(__filename, '', function (status) {
assert.equal(status, 'force');
done();
});
inquirer.readline.emit('line', 'd');
inquirer.readline.emit('line', 'y');
});

it('force conflict status', function (done) {
this.conflicter.force = true;
this.conflicter.collision(__filename, '', function (status) {
assert.equal(status, 'force');
done();
Expand Down
6 changes: 6 additions & 0 deletions test/fixtures/css_block.html
@@ -0,0 +1,6 @@
<html><head>
<!-- build:css out/file.css -->
<link rel="stylesheet" href="in/file1.css">
<link rel="stylesheet" href="in/file2.css">
<!-- endbuild -->
</head></html>
6 changes: 6 additions & 0 deletions test/fixtures/css_block_dir.html
@@ -0,0 +1,6 @@
<html><head>
<!-- build:css out/file.css -->
<link rel="stylesheet" href="file1.css">
<link rel="stylesheet" href="file2.css">
<!-- endbuild -->
</head></html>
Empty file.
Empty file.
7 changes: 7 additions & 0 deletions test/fixtures/js_block_dir.html
@@ -0,0 +1,7 @@
<html><body>
<!-- build:js out/file.js -->
<script src="foo-process.js"></script>
<script src="foo-template.js"></script>
<script src="foo.js"></script>
<!-- endbuild -->
</body></html>
6 changes: 6 additions & 0 deletions test/fixtures/js_block_with_attr.html
@@ -0,0 +1,6 @@
<html><body>
<!-- build:js out/file.js -->
<script data-test="my-attr" src="in/file1.js"></script>
<script data-test="my-attr" src="in/file2.js"></script>
<!-- endbuild -->
</body></html>
14 changes: 14 additions & 0 deletions test/helpers/inquirer.js
@@ -0,0 +1,14 @@
var ReadlineStub = require('./readline');
var _ = require("lodash");
var inquirer = _.clone( require('inquirer') );

var readline = new ReadlineStub();
inquirer.ui.Prompt.prototype.rl = readline;

module.exports = {
prompt: function (config, cb) {
inquirer.prompt.apply(inquirer, arguments);
},

readline: readline
};
30 changes: 30 additions & 0 deletions test/helpers/readline.js
@@ -0,0 +1,30 @@
var EventEmitter = require("events").EventEmitter;
var sinon = require("sinon");
var util = require("util");
var _ = require("lodash");

var stub = {
write : sinon.stub().returns(stub),
moveCursor : sinon.stub().returns(stub),
setPrompt : sinon.stub().returns(stub),
close : sinon.stub().returns(stub),
pause : sinon.stub().returns(stub),
resume : sinon.stub().returns(stub),
_getCursorPos : sinon.stub().returns(stub),
output : {
end : sinon.stub().returns(stub),
mute : sinon.stub().returns(stub),
unmute : sinon.stub().returns(stub),
write : sinon.stub().returns(stub)
}
};

var ReadlineStub = function() {
EventEmitter.apply( this, arguments );
};

util.inherits( ReadlineStub, EventEmitter );
_.assign( ReadlineStub.prototype, stub );


module.exports = ReadlineStub;
81 changes: 81 additions & 0 deletions test/wiring.js
Expand Up @@ -60,6 +60,32 @@ describe('yeoman.generator.lib.actions.wiring', function () {
assert.equal(res, res2);
});

it('appendFiles should work with css file', function () {
var html = '<html><head></head></html>';
var res = wiring.appendFiles(html, 'css', 'out/file.css', ['in/file1.css', 'in/file2.css']);
var fixture = fs.readFileSync(path.join(this.fixtures, 'css_block.html'),
'utf-8').trim();

assert.textEqual(res, fixture);
});

it('appendFiles should work with attributes params', function () {
var html = '<html><body></body></html>';
var res = wiring.appendFiles({
html: html,
fileType: 'js',
optimizedPath: 'out/file.js',
sourceFileList: ['in/file1.js', 'in/file2.js'],
attrs: {
'data-test': 'my-attr'
}
});
var fixture = fs.readFileSync(path.join(this.fixtures, 'js_block_with_attr.html'),
'utf-8').trim();

assert.textEqual(res, fixture);
});

it('should append content in the right place', function () {
var html = '<html><body><section><span></span></section></body></html>';
var expected = '<html><body><section><span></span>TEST</section></body></html>';
Expand Down Expand Up @@ -117,4 +143,59 @@ describe('yeoman.generator.lib.actions.wiring', function () {

fs.writeFileSync(filepath, html, 'utf-8');
});

it('should append scripts', function () {
var html = '<html><body></body></html>';
var res = wiring.appendScripts(html, 'out/file.js', ['in/file1.js', 'in/file2.js']);
var fixture = fs.readFileSync(path.join(this.fixtures, 'js_block.html'),
'utf-8').trim();

assert.textEqual(res, fixture);

});

it('should remove script', function () {
var withScript = '<html><body><script src="file1.js"></script></body></html>';
var html = '<html><body></body></html>';

var res = wiring.removeScript(withScript, 'file1.js');

assert.textEqual(res, html);
});

it('should append styles', function () {
var html = '<html><head></head></html>';
var res = wiring.appendStyles(html, 'out/file.css', ['in/file1.css', 'in/file2.css']);
var fixture = fs.readFileSync(path.join(this.fixtures, 'css_block.html'),
'utf-8').trim();

assert.textEqual(res, fixture);
});

it('should remove style', function () {
var withStyle = '<html><head><link rel="stylesheet" href="file1.css"></head></html>';
var html = '<html><head></head></html>';

var res = wiring.removeStyle(withStyle, 'file1.css');

assert.textEqual(res, html);
});

it('should append scripts directory', function () {
var html = '<html><body></body></html>';
var res = wiring.appendScriptsDir(html, 'out/file.js', path.join(__dirname, 'fixtures', 'dir-fixtures'));
var fixture = fs.readFileSync(path.join(this.fixtures, 'js_block_dir.html'),
'utf-8').trim();

assert.textEqual(res, fixture);
});

it('should append styles directory', function () {
var html = '<html><head></head></html>';
var res = wiring.appendStylesDir(html, 'out/file.css', path.join(__dirname, 'fixtures', 'dir-css-fixtures'));
var fixture = fs.readFileSync(path.join(this.fixtures, 'css_block_dir.html'),
'utf-8').trim();

assert.textEqual(res, fixture);
});
});

0 comments on commit e64697f

Please sign in to comment.