1
0
mirror of https://github.com/moparisthebest/mail synced 2024-12-22 07:18:49 -05:00

Integration test works again

This commit is contained in:
Tankred Hase 2014-10-09 16:51:39 +02:00 committed by Felix Hammerl
parent 85afb0be01
commit 84d5bd8124
9 changed files with 853 additions and 898 deletions

2
.gitignore vendored
View File

@ -8,6 +8,6 @@ dist/
release/ release/
test/integration/src/ test/integration/src/
.elasticbeanstalk/ .elasticbeanstalk/
test/unit/index.js test/*/index.js
**/*.browserified.js **/*.browserified.js
**/*.js.map **/*.js.map

View File

@ -26,7 +26,7 @@ module.exports = function(grunt) {
}, },
jshint: { jshint: {
all: ['Gruntfile.js', 'src/*.js', 'src/js/**/*.js', 'test/unit/*-test.js', 'test/integration/*.js'], all: ['Gruntfile.js', 'src/*.js', 'src/js/**/*.js', 'test/unit/*-test.js', 'test/integration/*-test.js'],
options: { options: {
jshintrc: '.jshintrc' jshintrc: '.jshintrc'
} }
@ -156,17 +156,27 @@ module.exports = function(grunt) {
'test/unit/invitation-dao-test.js', 'test/unit/invitation-dao-test.js',
'test/unit/update-handler-test.js', 'test/unit/update-handler-test.js',
'test/unit/connection-doctor-test.js', 'test/unit/connection-doctor-test.js',
'test/unit/main.js' 'test/main.js'
] ]
}, },
options: { options: {
external: ['openpgp', 'node-forge', 'net', 'tls', 'crypto'] external: ['openpgp', 'node-forge', 'net', 'tls', 'crypto']
} }
}, },
integrationTest: {
files: {
'test/integration/index.browserified.js': [
'test/integration/email-dao-test.js',
'test/main.js'
]
},
options: {
external: ['openpgp', 'node-forge', 'net', 'tls', 'crypto']
}
}
/* /*
TODO: TODO:
mailreader-worker: {}, mailreader-worker: {},
integrationTest: {}
*/ */
}, },
@ -220,14 +230,10 @@ module.exports = function(grunt) {
'src/lib/angular/angular.min.js', 'src/lib/angular/angular.min.js',
'src/lib/angular/angular-route.min.js', 'src/lib/angular/angular-route.min.js',
'src/lib/angular/angular-animate.min.js', 'src/lib/angular/angular-animate.min.js',
'src/lib/ngtagsinput/ng-tags-input.min.js',
'node_modules/ng-infinite-scroll/build/ng-infinite-scroll.min.js',
'node_modules/angularjs/src/ngMock/angular-mocks.js', 'node_modules/angularjs/src/ngMock/angular-mocks.js',
'src/lib/fastclick/fastclick.js',
'src/lib/lawnchair/lawnchair-git.js', 'src/lib/lawnchair/lawnchair-git.js',
'src/lib/lawnchair/lawnchair-adapter-webkit-sqlite-git.js', 'src/lib/lawnchair/lawnchair-adapter-webkit-sqlite-git.js',
'src/lib/lawnchair/lawnchair-adapter-indexed-db-git.js', 'src/lib/lawnchair/lawnchair-adapter-indexed-db-git.js',
'test/lib/angular-mocks.js',
'test/unit/index.browserified.js' 'test/unit/index.browserified.js'
] ]
}, },
@ -238,6 +244,23 @@ module.exports = function(grunt) {
sourceMapName: 'test/unit/index.js.map' sourceMapName: 'test/unit/index.js.map'
} }
}, },
integrationTest: {
files: {
'test/integration/index.js': [
'src/lib/underscore/underscore-min.js',
'src/lib/lawnchair/lawnchair-git.js',
'src/lib/lawnchair/lawnchair-adapter-webkit-sqlite-git.js',
'src/lib/lawnchair/lawnchair-adapter-indexed-db-git.js',
'test/integration/index.browserified.js'
]
},
options: {
mangle: false,
compress: false,
sourceMap: true,
sourceMapName: 'test/integration/index.js.map'
}
},
options: { options: {
banner: '/*! Copyright © <%= grunt.template.today("yyyy") %>, Whiteout Networks GmbH.*/\n' banner: '/*! Copyright © <%= grunt.template.today("yyyy") %>, Whiteout Networks GmbH.*/\n'
} }

View File

@ -1,10 +0,0 @@
'use strict';
chrome.app.runtime.onLaunched.addListener(function() {
chrome.app.window.create('integration/index.html', {
'bounds': {
'width': 1024,
'height': 768
}
});
});

View File

@ -1,19 +1,16 @@
define(function(require) {
'use strict'; 'use strict';
var expect = chai.expect, var ImapClient = require('imap-client'),
ImapClient = require('imap-client'),
BrowserCrow = require('browsercrow'), BrowserCrow = require('browsercrow'),
BrowserSMTP = require('browsersmtp'), BrowserSMTP = require('browsersmtp'),
SmtpClient = require('smtpclient'), SmtpClient = require('wo-smtpclient'),
LawnchairDAO = require('js/dao/lawnchair-dao'), LawnchairDAO = require('../../src/js/dao/lawnchair-dao'),
DeviceStorageDAO = require('js/dao/devicestorage-dao'), DeviceStorageDAO = require('../../src/js/dao/devicestorage-dao'),
appController = require('js/app-controller'), appController = require('../../src/js/app-controller'),
mailreader = require('mailreader'), mailreader = require('mailreader'),
openpgp = require('openpgp'),
PgpMailer = require('pgpmailer'), PgpMailer = require('pgpmailer'),
config = require('js/app-config').config, config = require('../../src/js/app-config').config,
str = require('js/app-config').string; str = require('../../src/js/app-config').string;
describe('Email DAO integration tests', function() { describe('Email DAO integration tests', function() {
this.timeout(100000); this.timeout(100000);
@ -827,4 +824,3 @@ define(function(require) {
}); });
}); });
}); });
});

View File

@ -2,7 +2,7 @@
<html style="overflow-y: auto"> <html style="overflow-y: auto">
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<title>JavaScript Unit Tests</title> <title>JavaScript Integration Tests</title>
<link rel="stylesheet" href="../lib/mocha.css" /> <link rel="stylesheet" href="../lib/mocha.css" />
</head> </head>
@ -10,10 +10,20 @@
<div id="mocha"></div> <div id="mocha"></div>
<script src="../lib/chai.js"></script> <script src="../lib/chai.js"></script>
<script src="../lib/sinon.js"></script>
<script src="../lib/mocha.js"></script> <script src="../lib/mocha.js"></script>
<script src="../lib/sinon.js"></script>
<script data-main="main.js" src="../lib/require.js"></script> <script>
window.expect = chai.expect;
mocha.setup('bdd');
</script>
<script src="../lib/openpgp.js"></script>
<script src="../lib/forge.min.js"></script>
<script src="index.js"></script>
<script>
mocha.run();
</script>
</body> </body>
</html> </html>

View File

@ -1,61 +0,0 @@
'use strict';
// Mozilla bind polyfill because phantomjs is stupid
if (!Function.prototype.bind) {
Function.prototype.bind = function(oThis) {
if (typeof this !== "function") {
// closest thing possible to the ECMAScript 5 internal IsCallable function
throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");
}
var aArgs = Array.prototype.slice.call(arguments, 1),
fToBind = this,
FNOP = function() {},
fBound = function() {
return fToBind.apply(this instanceof FNOP && oThis ? this : oThis, aArgs.concat(Array.prototype.slice.call(arguments)));
};
FNOP.prototype = this.prototype;
fBound.prototype = new FNOP();
return fBound;
};
}
require(['src/require-config'], function() {
require.config({
baseUrl: 'src/lib',
paths: {
'browsercrow': '../../../lib/browsercrow',
'browsercrow-envelope': '../../../lib/browsercrow-envelope',
'browsercrow-bodystructure': '../../../lib/browsercrow-bodystructure',
'browsercrow-mimeparser': '../../../lib/browsercrow-mimeparser',
'browsersmtp': '../../../lib/browsersmtp'
}
});
// Start the main app logic.
require(['js/app-config', 'axe'], function(app, axe) {
window.Worker = undefined; // disable web workers since mocha doesn't support them
app.config.workerPath = '../../src/js';
//app.config.cloudUrl = 'http://localhost:8888';
axe.removeAppender(axe.defaultAppender);
startTests();
});
});
function startTests() {
mocha.setup('bdd');
require(
[
'../../email-dao-test'
], function() {
//Tests loaded, run tests
mocha.run();
}
);
}

50
test/main.js Normal file
View File

@ -0,0 +1,50 @@
'use strict';
//
// Polyfills
//
// Mozilla bind polyfill because phantomjs is stupid
if (!Function.prototype.bind) {
Function.prototype.bind = function(oThis) {
if (typeof this !== "function") {
// closest thing possible to the ECMAScript 5 internal IsCallable function
throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");
}
var aArgs = Array.prototype.slice.call(arguments, 1),
fToBind = this,
FNOP = function() {},
fBound = function() {
return fToBind.apply(this instanceof FNOP && oThis ? this : oThis, aArgs.concat(Array.prototype.slice.call(arguments)));
};
FNOP.prototype = this.prototype;
fBound.prototype = new FNOP();
return fBound;
};
}
// a warm round of applause for phantomjs for missing events
(function() {
if (!window.CustomEvent) {
var CustomEvent = function(event, params) {
params = params || {
bubbles: false,
cancelable: false,
detail: undefined
};
var evt = document.createEvent('CustomEvent');
evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);
return evt;
};
CustomEvent.prototype = window.Event.prototype;
window.CustomEvent = CustomEvent;
}
})();
// set worker path for tests
require('../src/js/app-config').config.workerPath = '../lib';

View File

@ -9,55 +9,6 @@
<body> <body>
<div id="mocha"></div> <div id="mocha"></div>
<script>
//
// Polyfills
//
(function() {
'use strict';
// Mozilla bind polyfill because phantomjs is stupid
if (!Function.prototype.bind) {
Function.prototype.bind = function(oThis) {
if (typeof this !== "function") {
// closest thing possible to the ECMAScript 5 internal IsCallable function
throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");
}
var aArgs = Array.prototype.slice.call(arguments, 1),
fToBind = this,
FNOP = function() {},
fBound = function() {
return fToBind.apply(this instanceof FNOP && oThis ? this : oThis, aArgs.concat(Array.prototype.slice.call(arguments)));
};
FNOP.prototype = this.prototype;
fBound.prototype = new FNOP();
return fBound;
};
}
// a warm round of applause for phantomjs for missing events
(function() {
function CustomEvent(event, params) {
params = params || {
bubbles: false,
cancelable: false,
detail: undefined
};
var evt = document.createEvent('CustomEvent');
evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);
return evt;
}
CustomEvent.prototype = window.Event.prototype;
window.CustomEvent = CustomEvent;
})();
})();
</script>
<script src="../lib/chai.js"></script> <script src="../lib/chai.js"></script>
<script src="../lib/mocha.js"></script> <script src="../lib/mocha.js"></script>
<script src="../lib/sinon.js"></script> <script src="../lib/sinon.js"></script>
@ -73,7 +24,7 @@
<script> <script>
mocha.checkLeaks(); mocha.checkLeaks();
mocha.globals([]); mocha.globals(['chrome']);
mocha.run(); mocha.run();
</script> </script>
</body> </body>

View File

@ -1,4 +0,0 @@
'use strict';
// set worker path for tests
require('../../src/js/app-config').config.workerPath = '../lib';