blob: 547bfc1331ee5d1c344ca198f902dabc2ad926f9 [file] [log] [blame]
'use strict';
/* global -Promise */
var Promise = require('es6-promise').Promise;
var mockery = require('mockery');
var nodemock = require('nodemock');
module.exports = {
'findDevices() should enumerate ADB devices and scan for b2g installations': function(test) {
var fxosId = '8675309';
var androidId = 'ILIKEROBOTS';
var mocked = nodemock
.mock('listDevices')
.returns(new Promise(function(resolve, reject) {
resolve([
{ id: fxosId, type: 'device' },
{ id: androidId, type: 'device' }
]);
}));
var mockShell = function(deviceId, command) {
return new Promise(function(resolve, reject) {
// Note: '0' means FxOS *was* detected.
var result = (deviceId === fxosId) ? '0' : '1';
resolve(result + '\r\n');
});
};
mocked.mock('createClient').returns({
listDevices: mocked.listDevices,
shell: mockShell
});
mockery.registerMock('adbkit', {
createClient: mocked.createClient,
util: {
readAll: function(input) {
return new Buffer(input, 'utf8');
}
}
});
// Enable mocks on a clear import cache
mockery.enable({
warnOnReplace: false,
warnOnUnregistered: false,
useCleanCache: true
});
// Require a freshly imported findDevices for this test
var findDevices = require('../../index');
findDevices().catch(function(err) {
test.ifError(err);
test.done();
}).then(function(results) {
// Ensure all the mocks were called, and with the expected parameters
test.ok(mocked.assert());
var foundFirefoxOS = false;
var foundAndroid = false;
results.forEach(function(result) {
if (result.id === fxosId) {
foundFirefoxOS = true;
}
if (result.id === androidId) {
foundAndroid = true;
}
});
// Ensure we did not find the Android device
test.ok(!foundAndroid);
// Ensure we found the Firefox OS device
test.ok(foundFirefoxOS);
test.done();
});
}
};