blob: 3685b40f6cb1e7323ea1033198f7492dfef1d010 [file] [log] [blame]
var cordova = require('../cordova'),
path = require('path'),
shell = require('shelljs'),
fs = require('fs'),
Q = require('q'),
cordova_util = require('../src/util');
var cwd = process.cwd();
var project_dir = path.join('spec', 'fixtures', 'templates');
describe('info flag', function(){
var is_cordova,
cd_project_root,
writeFileSync,
cordova_utilSpy,
readFileSync,
shellSpy,
exec = {},
done = false;
function infoPromise( f ) {
f.then( function() { done = true; }, function(err) { done = err; } );
}
beforeEach(function() {
is_cordova = spyOn(cordova_util, 'isCordova').andReturn(project_dir);
cd_project_root = spyOn(cordova_util, 'cdProjectRoot').andReturn(project_dir);
writeFileSync = spyOn( fs, 'writeFileSync' );
shellSpy = spyOn( shell, 'exec' ).andReturn( "" );
cordova_utilSpy = spyOn( cordova_util, 'projectConfig').andReturn(project_dir + '/no_content_config.xml' );
done = false;
});
it('should not run outside of a Cordova-based project by calling util.isCordova', function() {
var msg = 'Dummy message about not being in a cordova dir.';
cd_project_root.andThrow(new Error(msg));
is_cordova.andReturn(false);
runs(function() {
infoPromise( Q().then(cordova.raw.info) );
});
waitsFor(function() { return done; }, 'platform promise never resolved', 500);
runs(function() {
expect( done.message ).toEqual( msg );
});
});
it('should run inside a Cordova-based project by calling util.isCordova', function() {
readFileSync = spyOn( fs, 'readFileSync' ).andReturn( "" );
cordova.raw.info().then(function() {
expect(cd_cordova_root).toHaveBeenCalled();
done();
});
});
it('should emit a results event with info contents', function(done) {
readFileSync = spyOn( fs, 'readFileSync' ).andReturn( "info" );
this.after(function() {
cordova.removeAllListeners('results');
});
cordova.on('results', function(h) {
expect(h).toMatch(/info/gi);
done();
});
cordova.info();
});
});