Skip to content
This repository was archived by the owner on Dec 1, 2023. It is now read-only.

Commit 9317ef6

Browse files
authored
Merge pull request #3 from fabianmieller/create-tests
feature | added tests
2 parents efc4c6a + 61471e5 commit 9317ef6

File tree

8 files changed

+444
-3
lines changed

8 files changed

+444
-3
lines changed

package.json

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,29 @@
2121
"url": "git+https://github.com/pagekit/vue-event-manager.git"
2222
},
2323
"scripts": {
24+
"test": "jest --env=node",
25+
"karma": "karma start test/karma.conf.js --single-run",
2426
"build": "node build/build.js",
25-
"release": "node build/release.js"
27+
"release": "node build/release.js",
28+
"webpack": "webpack --config test/webpack.config.js -wd"
2629
},
2730
"devDependencies": {
2831
"buble": "^0.15.2",
2932
"buble-loader": "^0.4.1",
30-
"jest": "^21.0.2",
33+
"jasmine": "^2.8.0",
34+
"jasmine-core": "^2.8.0",
35+
"jest": "^22.0.3",
36+
"karma": "^1.7.1",
37+
"karma-chrome-launcher": "^2.2.0",
38+
"karma-firefox-launcher": "^1.1.0",
39+
"karma-jasmine": "^1.1.1",
40+
"karma-safari-launcher": "^1.0.0",
41+
"karma-webpack": "^2.0.9",
3142
"replace-in-file": "^2.6.4",
3243
"rollup": "^0.49.3",
3344
"rollup-plugin-buble": "^0.15.0",
34-
"uglify-js": "^3.1.0"
45+
"uglify-js": "^3.1.0",
46+
"vue": "^2.5.13",
47+
"webpack": "^3.10.0"
3548
}
3649
}

test/event.js

Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
import Vue from 'vue';
2+
3+
describe('Vue.eventmanager', () => {
4+
5+
it('Trigger Method with one param', () => {
6+
new Vue({
7+
created() {
8+
this.$trigger('someEvent', 'foo');
9+
},
10+
events: {
11+
someEvent(param) {
12+
expect(param).toBe('foo');
13+
}
14+
}
15+
});
16+
});
17+
18+
it('Trigger Method with Array', () => {
19+
new Vue({
20+
created() {
21+
this.$trigger('paramArray', ['foo', 'bar']);
22+
},
23+
events: {
24+
paramArray(param, param2) {
25+
expect(param).toBe('foo');
26+
expect(param2).toBe('bar');
27+
}
28+
}
29+
});
30+
});
31+
32+
it('Trigger Method with Object', () => {
33+
new Vue({
34+
created() {
35+
this.$trigger('paramObject', { foo : 'bar' });
36+
},
37+
events: {
38+
paramObject(param) {
39+
expect(param.foo).toBe('bar');
40+
}
41+
}
42+
});
43+
});
44+
45+
it('Trigger Method with Priority', () => {
46+
var vm = new Vue({
47+
data() {
48+
return {
49+
lastPrio : null
50+
}
51+
},
52+
events: {
53+
// event handler (priority 10)
54+
prioHandler: [
55+
{
56+
// handler callback
57+
handler(param) {
58+
this.lastPrio = 10;
59+
},
60+
// a higher priority, means earlier execution
61+
priority: 10
62+
},
63+
{
64+
// handler callback
65+
handler(param) {
66+
expect(this.lastPrio).toBe(10);
67+
this.lastPrio = -10;
68+
},
69+
// a higher priority, means earlier execution
70+
priority: -10
71+
}
72+
]
73+
}
74+
});
75+
vm.$trigger('prioHandler');
76+
});
77+
78+
79+
it('Trigger Method with Different Instances and Priority', () => {
80+
81+
var vm1 = new Vue({
82+
data() {
83+
return {
84+
isLoaded : false
85+
}
86+
},
87+
events: {
88+
testEvent(param) {
89+
this.isLoaded = true;
90+
expect(this.isLoaded).toBe(true);
91+
}
92+
}
93+
});
94+
95+
var vm2 = new Vue({
96+
events: {
97+
testEvent:{
98+
handler(param) {
99+
expect(param).toBe('foo');
100+
},
101+
priority: 10
102+
}
103+
}
104+
});
105+
vm1.$trigger('testEvent', 'foo');
106+
});
107+
108+
it('Trigger Method with Cancel Event', () => {
109+
110+
var vm1 = new Vue({
111+
data() {
112+
return {
113+
isLoaded: false
114+
}
115+
},
116+
events: {
117+
actionCancel(param) {
118+
this.isLoaded = true;
119+
return "lastAction";
120+
}
121+
}
122+
});
123+
124+
var vm2 = new Vue({
125+
events: {
126+
actionCancel:{
127+
handler(param) {
128+
expect(param).toBe('foo');
129+
return false;
130+
},
131+
priority: 10
132+
}
133+
}
134+
});
135+
136+
vm1.$trigger('actionCancel', 'foo');
137+
expect(vm1.isLoaded).toBe(false);
138+
139+
});
140+
141+
});

test/eventAsync.js

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
import Vue from 'vue';
2+
3+
describe('Vue.eventmanager Async', () => {
4+
it('Trigger Method asynchronous', () => {
5+
new Vue({
6+
data() {
7+
return {
8+
isRun : false
9+
}
10+
},
11+
created() {
12+
this.$trigger('setRun', [], true);
13+
this.$trigger('sendParam', 'foo');
14+
},
15+
events: {
16+
setRun() {
17+
this.isRun = true;
18+
expect(this.isRun).toBe(true);
19+
},
20+
sendParam(param) {
21+
expect(this.isRun).toBe(false);
22+
}
23+
}
24+
});
25+
});
26+
27+
it('Trigger Method asynchronous with Different Instances', (done) => {
28+
29+
var vm1 = new Vue({
30+
data() {
31+
return {
32+
isLoaded : false
33+
}
34+
},
35+
events: {
36+
testEvent(param) {
37+
this.isLoaded = true;
38+
expect(this.isLoaded).toBe(true);
39+
done();
40+
}
41+
}
42+
});
43+
44+
var vm2 = new Vue({
45+
events: {
46+
testEvent:{
47+
handler(param) {
48+
expect(param).toBe('foo');
49+
return new Promise((resolve) => {
50+
setTimeout(resolve, 300);
51+
});
52+
},
53+
priority: 10
54+
}
55+
}
56+
});
57+
vm1.$trigger('testEvent', 'foo', true);
58+
});
59+
60+
});

test/index.html

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<!DOCTYPE html>
2+
<html>
3+
<head>
4+
<meta charset="utf-8">
5+
<title>Vue EventManager - Jasmine</title>
6+
7+
<link rel="shortcut icon" type="image/png" href="../node_modules/jasmine-core/images/jasmine_favicon.png">
8+
<link rel="stylesheet" href="../node_modules/jasmine-core/lib/jasmine-core/jasmine.css">
9+
10+
<script src="../node_modules/jasmine-core/lib/jasmine-core/jasmine.js"></script>
11+
<script src="../node_modules/jasmine-core/lib/jasmine-core/jasmine-html.js"></script>
12+
<script src="../node_modules/jasmine-core/lib/jasmine-core/boot.js"></script>
13+
<script src="specs.js"></script>
14+
15+
</head>
16+
<body>
17+
</body>
18+
</html>

test/index.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import Vue from 'vue';
2+
import VueEventManager from '../src/index';
3+
4+
Vue.use(VueEventManager);
5+
6+
x();
7+
8+
require('./event');
9+
require('./eventAsync');

test/karma.conf.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
module.exports = config => {
2+
3+
config.set({
4+
basePath: __dirname,
5+
frameworks: ['jasmine'],
6+
browsers: ['Chrome', 'Safari', 'Firefox'],
7+
files: ['index.js'],
8+
preprocessors: {
9+
'index.js' : ['webpack']
10+
},
11+
proxies: {
12+
13+
}
14+
});
15+
};

test/specs.js

Lines changed: 168 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/webpack.config.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
var webpack = require('webpack');
2+
3+
module.exports = {
4+
entry: __dirname + '/index.js',
5+
output: {
6+
path: __dirname + '/',
7+
filename: 'specs.js'
8+
},
9+
module: {
10+
loaders: [
11+
{test: /\.js$/, loader: 'buble-loader', exclude: /node_modules/}
12+
]
13+
},
14+
plugins: [
15+
new webpack.optimize.ModuleConcatenationPlugin()
16+
]
17+
};

0 commit comments

Comments
 (0)