1
0
mirror of synced 2025-12-08 23:08:11 +08:00

added test

This commit is contained in:
Jamie Peabody
2018-05-09 21:10:04 +01:00
parent bde295febd
commit 3ee7b77186
4 changed files with 151 additions and 8 deletions

62
karma.conf.js Normal file
View File

@@ -0,0 +1,62 @@
const path = require('path');
const webpackCfg = require('./webpack.config');
const ExtractTextPlugin = require('extract-text-webpack-plugin');
module.exports = function(config) {
config.set({
basePath: './',
browsers: [
'ChromeHeadless'
],
frameworks: [
'mocha', 'chai'
],
files: [
'node_modules/codemirror/lib/codemirror.css',
'src/mergely.css',
'tests/**/*.spec.js'
],
preprocessors: {
'node_modules/jquery/dist/jquery.js': ['webpack'],
'node_modules/codemirror/lib/codemirror.js': ['webpack'],
'tests/**/*.spec.js': ['webpack'],
'src/**/*.js': ['webpack']
},
reporters: ['mocha'],
mochaReporter: {
showDiff: true
},
singleRun: true,
client: {
captureConsole: true,
mocha: {}
},
webpack: {
entry: './src/mergely.js',
module: {
loaders: [
{ test: /\.css$/, loader: ExtractTextPlugin.extract('css-loader') }
]
},
resolve: {
extensions: ['.js'],
alias: {
CodeMirror: path.join(__dirname, 'node_modules', 'codemirror'),
jQuery: path.join(__dirname, 'node_modules', 'jquery')
}
},
plugins: [
new ExtractTextPlugin('mergely.css')
]
},
webpackServer: {
noInfo: true
}
});
}

View File

@@ -9,7 +9,8 @@
},
"scripts": {
"build": "rm -rf lib && webpack",
"test": "echo \"Error: no test specified\" && exit 1"
"test": "karma start",
"test:chrome": "karma start --browsers Chrome --singleRun=false"
},
"repository": {
"type": "git",
@@ -37,12 +38,21 @@
},
"homepage": "https://github.com/wickedest/Mergely#readme",
"devDependencies": {
"chai": "^4.1.2",
"codemirror": "^5.32.0",
"css-loader": "^0.28.7",
"extract-text-webpack-plugin": "^3.0.2",
"file-loader": "^1.1.5",
"image-webpack-loader": "^3.4.2",
"jquery": "^3.2.1",
"karma": "^2.0.0",
"karma-chai": "^0.1.0",
"karma-chrome-launcher": "^2.2.0",
"karma-coverage-istanbul-reporter": "^1.3.0",
"karma-mocha": "^1.3.0",
"karma-mocha-reporter": "^2.2.5",
"karma-webpack": "^2.0.9",
"mocha": "^4.0.1",
"webpack": "^3.8.1"
}
}

File diff suppressed because one or more lines are too long

74
tests/mergely.spec.js Normal file
View File

@@ -0,0 +1,74 @@
const jQuery = require('jquery');
const CodeMirror = require('CodeMirror');
const mergely = require('../src/mergely');
const $ = jQuery;
(function($) {
$.fn.hasScrollBar = function() {
return this.get(0).scrollHeight - 2 > this.height();
}
})(jQuery);
describe('mergely', function () {
function init(options) {
$('body').css({'margin': '0px'}).append('<div id="mergely"></div>');
const editor = $('#mergely');
editor.mergely(options);
return editor;
};
describe('initialization', () => {
it('initializes without arguments', function (done) {
$(document).ready(() => {
const editor = init({
height: 100,
license: 'lgpl-separate-notice'
});
expect(editor).to.exist;
expect(editor.mergely).to.exist;
const children = editor.children();
expect(children.length).to.equal(6);
expect($(children[0]).attr('id')).to.equal('mergely-splash');
expect($(children[1]).attr('class')).to.equal('mergely-margin');
expect($(children[2]).attr('class')).to.equal('mergely-column');
expect($(children[3]).attr('class')).to.equal('mergely-canvas');
expect($(children[4]).attr('class')).to.equal('mergely-column');
expect($(children[5]).attr('class')).to.equal('mergely-margin');
expect($('body').hasScrollBar()).to.equal(false);
expect($('.mergely-editor-lhs .CodeMirror-code').text()).to.equal('');
expect($('.mergely-editor-rhs .CodeMirror-code').text()).to.equal('');
done();
});
});
it.only('initializes with static arguments for lhs/rhs text', function (done) {
$(document).ready(() => {
const editor = init({
height: 100,
license: 'lgpl-separate-notice',
lhs: (setValue) => {
console.log('here');
setValue('left-hand side text')
},
rhs: (setValue) => setValue('right-hand side text'),
});
expect(editor).to.exist;
expect(editor.mergely).to.exist;
const children = editor.children();
expect(children.length).to.equal(6);
expect($(children[0]).attr('id')).to.equal('mergely-splash');
expect($(children[1]).attr('class')).to.equal('mergely-margin');
expect($(children[2]).attr('class')).to.equal('mergely-column');
expect($(children[3]).attr('class')).to.equal('mergely-canvas');
expect($(children[4]).attr('class')).to.equal('mergely-column');
expect($(children[5]).attr('class')).to.equal('mergely-margin');
expect($('body').hasScrollBar()).to.equal(false);
expect($('#mergely-editor-lhs .CodeMirror-code .CodeMirror-line').text()).to.equal('left-hand side text');
expect($('#mergely-editor-rhs .CodeMirror-code .CodeMirror-line').text()).to.equal('right-hand side text');
done();
});
});
});
});