mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-11-28 22:43:30 +03:00
Merge pull request #4527 from rwjblue/unit-tests
Add initial client unit test.
This commit is contained in:
commit
1db30f896f
56
Gruntfile.js
56
Gruntfile.js
@ -59,11 +59,19 @@ var _ = require('lodash'),
|
||||
]
|
||||
}
|
||||
},
|
||||
clientTests: {
|
||||
files: {
|
||||
src: [
|
||||
'core/test/client/**/*.js'
|
||||
]
|
||||
}
|
||||
},
|
||||
// Linting files for test code.
|
||||
test: {
|
||||
files: {
|
||||
src: [
|
||||
'core/test/**/*.js'
|
||||
'core/test/**/*.js',
|
||||
'!core/test/client/**/*.js'
|
||||
]
|
||||
}
|
||||
}
|
||||
@ -106,8 +114,8 @@ var _ = require('lodash'),
|
||||
tasks: ['emberTemplates:dev']
|
||||
},
|
||||
ember: {
|
||||
files: ['core/client/**/*.js'],
|
||||
tasks: ['clean:tmp', 'transpile', 'concat_sourcemap:dev']
|
||||
files: ['core/client/**/*.js', 'core/test/client/**/*.js'],
|
||||
tasks: ['clean:tmp', 'transpile', 'concat_sourcemap:dev', 'concat_sourcemap:tests']
|
||||
},
|
||||
sass: {
|
||||
files: [
|
||||
@ -169,6 +177,11 @@ var _ = require('lodash'),
|
||||
jshintrc: 'core/client/.jshintrc'
|
||||
}
|
||||
},
|
||||
clientTests: {
|
||||
options: {
|
||||
jshintrc: 'core/test/client/.jshintrc'
|
||||
}
|
||||
},
|
||||
test: {
|
||||
options: {
|
||||
jshintrc: 'core/test/.jshintrc'
|
||||
@ -193,6 +206,12 @@ var _ = require('lodash'),
|
||||
esnext: true
|
||||
}
|
||||
},
|
||||
clientTests: {
|
||||
options: {
|
||||
config: '.jscsrc',
|
||||
esnext: true
|
||||
}
|
||||
},
|
||||
test: {
|
||||
options: {
|
||||
config: '.jscsrc'
|
||||
@ -297,6 +316,14 @@ var _ = require('lodash'),
|
||||
}
|
||||
},
|
||||
|
||||
testem: {
|
||||
command: path.resolve(cwd + '/node_modules/.bin/testem ci'),
|
||||
options: {
|
||||
stdout: true,
|
||||
stdin: false
|
||||
}
|
||||
},
|
||||
|
||||
// #### Generate coverage report
|
||||
// See the `grunt test-coverage` task in the section on [Testing](#testing) for more information.
|
||||
coverage: {
|
||||
@ -389,6 +416,18 @@ var _ = require('lodash'),
|
||||
src: ['**/*.js', '!loader.js', '!config-*.js'],
|
||||
dest: '.tmp/ember-transpiled/'
|
||||
}]
|
||||
},
|
||||
tests: {
|
||||
type: 'amd',
|
||||
moduleName: function (path) {
|
||||
return 'ghost/tests/' + path;
|
||||
},
|
||||
files: [{
|
||||
expand: true,
|
||||
cwd: 'core/test/client/',
|
||||
src: ['**/*.js'],
|
||||
dest: '.tmp/ember-tests-transpiled/'
|
||||
}]
|
||||
}
|
||||
},
|
||||
|
||||
@ -402,6 +441,13 @@ var _ = require('lodash'),
|
||||
sourcesContent: true
|
||||
}
|
||||
},
|
||||
tests: {
|
||||
src: ['.tmp/ember-tests-transpiled/**/*.js'],
|
||||
dest: 'core/built/scripts/ghost-tests.js',
|
||||
options: {
|
||||
sourcesContent: true
|
||||
}
|
||||
},
|
||||
prod: {
|
||||
src: ['.tmp/ember-transpiled/**/*.js', 'core/built/scripts/templates.js',
|
||||
'core/client/loader.js'],
|
||||
@ -769,7 +815,7 @@ var _ = require('lodash'),
|
||||
// details of each of the test suites.
|
||||
//
|
||||
grunt.registerTask('test', 'Run tests and lint code',
|
||||
['jshint', 'jscs', 'test-routes', 'test-module', 'test-unit', 'test-integration', 'test-functional']);
|
||||
['jshint', 'jscs', 'test-routes', 'test-module', 'test-unit', 'test-integration', 'test-functional', 'shell:testem']);
|
||||
|
||||
// ### Lint
|
||||
//
|
||||
@ -934,7 +980,7 @@ var _ = require('lodash'),
|
||||
// ### Ember Build *(Utility Task)*
|
||||
// All tasks related to building the Ember client code including transpiling ES6 modules and building templates
|
||||
grunt.registerTask('emberBuildDev', 'Build Ember JS & templates for development',
|
||||
['clean:tmp', 'buildAboutPage', 'emberTemplates:dev', 'transpile', 'concat_sourcemap:dev']);
|
||||
['clean:tmp', 'buildAboutPage', 'emberTemplates:dev', 'transpile', 'concat_sourcemap:dev', 'concat_sourcemap:tests']);
|
||||
|
||||
// ### Ember Build *(Utility Task)*
|
||||
// All tasks related to building the Ember client code including transpiling ES6 modules and building templates
|
||||
|
@ -25,5 +25,10 @@
|
||||
"showdown-ghost": "0.3.4",
|
||||
"validator-js": "3.22.1",
|
||||
"google-caja": "5669.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"ember-mocha": "~0.1.4",
|
||||
"ember-cli-test-loader": "dgeb/ember-cli-test-loader#test-agnostic",
|
||||
"ember-cli-shims": "stefanpenner/ember-cli-shims#~0.0.3"
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,6 @@
|
||||
// Loader to create the Ember.js application
|
||||
/*global require */
|
||||
|
||||
if (!window.disableBoot) {
|
||||
window.App = require('ghost/app')['default'].create();
|
||||
}
|
||||
|
46
core/test/client/.jshintrc
Normal file
46
core/test/client/.jshintrc
Normal file
@ -0,0 +1,46 @@
|
||||
{
|
||||
"node": false,
|
||||
"browser": true,
|
||||
"nomen": false,
|
||||
"bitwise": true,
|
||||
"curly": true,
|
||||
"eqeqeq": true,
|
||||
"forin": true,
|
||||
"immed": true,
|
||||
"latedef": true,
|
||||
"newcap": true,
|
||||
"noarg": true,
|
||||
"noempty": true,
|
||||
"nonew": true,
|
||||
"plusplus": true,
|
||||
"regexp": true,
|
||||
"undef": true,
|
||||
"unused": true,
|
||||
"trailing": true,
|
||||
"indent": 4,
|
||||
"esnext": true,
|
||||
"onevar": true,
|
||||
"white": true,
|
||||
"quotmark": "single",
|
||||
"globals": {
|
||||
"Ember": true,
|
||||
"Em": true,
|
||||
"DS": true,
|
||||
"$": true,
|
||||
"SimpleAuth": true,
|
||||
"validator": true,
|
||||
"ic": true,
|
||||
"_": true,
|
||||
"NProgress": true,
|
||||
"moment": true,
|
||||
"mocha": true,
|
||||
"chai": true,
|
||||
"expect": true,
|
||||
"describe": true,
|
||||
"it": true,
|
||||
"beforeEach": true,
|
||||
"before": true,
|
||||
"afterEach": true,
|
||||
"after": true
|
||||
}
|
||||
}
|
33
core/test/client/index.html
Normal file
33
core/test/client/index.html
Normal file
@ -0,0 +1,33 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<title>Ghost Admin Tests</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<link rel="stylesheet" href="/bower_components/mocha/mocha.css">
|
||||
<link rel="stylesheet" href="/core/client/assets/css/ghost.min.css">
|
||||
<script>
|
||||
window.disableBoot = true;
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="mocha"></div>
|
||||
|
||||
<script src="/core/built/scripts/vendor-dev.js"></script>
|
||||
<script src="/core/built/scripts/ghost-dev.js"></script>
|
||||
<script src="/bower_components/mocha/mocha.js"></script>
|
||||
<script src="/testem.js"></script>
|
||||
<script src="/bower_components/chai/chai.js"></script>
|
||||
<script src="/bower_components/ember-cli-shims/app-shims.js"></script>
|
||||
<script src="/bower_components/ember-mocha-adapter/adapter.js"></script>
|
||||
<script src="/bower_components/ember-mocha/ember-mocha.amd.js"></script>
|
||||
<script src="/core/built/scripts/ghost-tests.js"></script>
|
||||
<script src="/bower_components/ember-cli-test-loader/test-loader.js"></script>
|
||||
|
||||
<script>
|
||||
require('ghost/tests/test-helper');
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
18
core/test/client/test-helper.js
Normal file
18
core/test/client/test-helper.js
Normal file
@ -0,0 +1,18 @@
|
||||
import TestLoader from 'ember-cli/test-loader';
|
||||
import Resolver from 'ember/resolver';
|
||||
import { setResolver } from 'ember-mocha';
|
||||
|
||||
var resolver = Resolver.create();
|
||||
resolver.namespace = {
|
||||
modulePrefix: 'ghost'
|
||||
};
|
||||
|
||||
setResolver(resolver);
|
||||
|
||||
TestLoader.load();
|
||||
|
||||
window.expect = chai.expect;
|
||||
|
||||
mocha.checkLeaks();
|
||||
mocha.globals(['jQuery', 'EmberInspector']);
|
||||
mocha.run();
|
18
core/test/client/unit/components/gh-trim-focus-input_test.js
Normal file
18
core/test/client/unit/components/gh-trim-focus-input_test.js
Normal file
@ -0,0 +1,18 @@
|
||||
/* jshint expr:true */
|
||||
import {
|
||||
describeComponent,
|
||||
it
|
||||
} from 'ember-mocha';
|
||||
|
||||
describeComponent('gh-trim-focus-input', function () {
|
||||
it('trims value on focusOut', function () {
|
||||
var component = this.subject({
|
||||
value: 'some random stuff '
|
||||
});
|
||||
|
||||
this.render();
|
||||
|
||||
component.$().focusout();
|
||||
expect(component.$().val()).to.equal('some random stuff');
|
||||
});
|
||||
});
|
@ -98,6 +98,7 @@
|
||||
"should": "~4.0.4",
|
||||
"sinon": "~1.10.3",
|
||||
"supertest": "~0.13.0",
|
||||
"testem": "^0.6.23",
|
||||
"top-gh-contribs": "0.0.2"
|
||||
}
|
||||
}
|
||||
|
9
testem.json
Normal file
9
testem.json
Normal file
@ -0,0 +1,9 @@
|
||||
{
|
||||
"test_page": "core/test/client/index.html",
|
||||
"launch_in_ci": [
|
||||
"PhantomJS"
|
||||
],
|
||||
"launch_in_dev": [
|
||||
"PhantomJS"
|
||||
]
|
||||
}
|
Loading…
Reference in New Issue
Block a user