Skip to content

Commit 9a5d454

Browse files
Adding tests+ configuting vscode tests
1 parent 6c2d0d6 commit 9a5d454

File tree

6 files changed

+162
-45
lines changed

6 files changed

+162
-45
lines changed

.vscode/launch.json

+51
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
{
2+
"version": "0.2.0",
3+
"configurations": [
4+
{
5+
"type": "node",
6+
"request": "launch",
7+
"name": "Jest All",
8+
"program": "${workspaceFolder}/node_modules/.bin/jest",
9+
"args": ["--runInBand"],
10+
"console": "integratedTerminal",
11+
"internalConsoleOptions": "neverOpen",
12+
"disableOptimisticBPs": true,
13+
"windows": {
14+
"program": "${workspaceFolder}/node_modules/jest/bin/jest",
15+
}
16+
},
17+
{
18+
"type": "node",
19+
"request": "launch",
20+
"name": "Jest Current File",
21+
"program": "${workspaceFolder}/node_modules/.bin/jest",
22+
"args": [
23+
"${relativeFile}",
24+
"--config",
25+
"jest.config.js"
26+
],
27+
"console": "integratedTerminal",
28+
"internalConsoleOptions": "neverOpen",
29+
"disableOptimisticBPs": true,
30+
"windows": {
31+
"program": "${workspaceFolder}/node_modules/jest/bin/jest",
32+
}
33+
},
34+
{
35+
"type": "node",
36+
"request": "launch",
37+
"name": "Jest Vue Current File",
38+
"program": "${workspaceFolder}/node_modules/@vue/cli-service/bin/vue-cli-service",
39+
"args": [
40+
"test:unit",
41+
"${relativeFile}",
42+
],
43+
"console": "integratedTerminal",
44+
"internalConsoleOptions": "neverOpen",
45+
"disableOptimisticBPs": true,
46+
"windows": {
47+
"program": "${workspaceFolder}/node_modules/@vue/cli-service/bin/vue-cli-service",
48+
}
49+
}
50+
]
51+
}

jest.config.js

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
module.exports = {
2+
moduleFileExtensions: [
3+
"js",
4+
"jsx",
5+
"json",
6+
"vue"
7+
],
8+
transform: {
9+
"^.+\\.vue$": "vue-jest",
10+
".+\\.(css|styl|less|sass|scss|svg|png|jpg|ttf|woff|woff2)$": "jest-transform-stub",
11+
"^.+\\.jsx?$": "babel-jest"
12+
},
13+
moduleNameMapper: {
14+
"^@/(.*)$": "<rootDir>/src/$1"
15+
},
16+
snapshotSerializers: [
17+
"jest-serializer-vue"
18+
],
19+
testMatch: [
20+
"**/tests/unit/**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)"
21+
],
22+
testURL: "http://localhost/",
23+
collectCoverageFrom: [
24+
"<rootDir>/src/vuedraggable.js",
25+
"<rootDir>/src/util/helper.js"
26+
],
27+
// testEnvironment: "node",
28+
transformIgnorePatterns: [
29+
"node_modules/(?!(babel-jest|jest-vue-preprocessor)/)"
30+
],
31+
};

package-lock.json

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

-27
Original file line numberDiff line numberDiff line change
@@ -74,33 +74,6 @@
7474
"last 2 versions",
7575
"not ie <= 8"
7676
],
77-
"jest": {
78-
"moduleFileExtensions": [
79-
"js",
80-
"jsx",
81-
"json",
82-
"vue"
83-
],
84-
"transform": {
85-
"^.+\\.vue$": "vue-jest",
86-
".+\\.(css|styl|less|sass|scss|svg|png|jpg|ttf|woff|woff2)$": "jest-transform-stub",
87-
"^.+\\.jsx?$": "babel-jest"
88-
},
89-
"moduleNameMapper": {
90-
"^@/(.*)$": "<rootDir>/src/$1"
91-
},
92-
"snapshotSerializers": [
93-
"jest-serializer-vue"
94-
],
95-
"testMatch": [
96-
"**/tests/unit/**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)"
97-
],
98-
"testURL": "http://localhost/",
99-
"collectCoverageFrom": [
100-
"<rootDir>/src/vuedraggable.js",
101-
"<rootDir>/src/util/helper.js"
102-
]
103-
},
10477
"files": [
10578
"dist/*.css",
10679
"dist/*.map",

src/vuedraggable.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -459,8 +459,8 @@ const draggableComponent = {
459459
const draggedContext = this.context;
460460
const futureIndex = this.computeFutureIndex(relatedContext, evt);
461461
Object.assign(draggedContext, { futureIndex });
462-
Object.assign(evt, { relatedContext, draggedContext });
463-
return onMove(evt, originalEvent);
462+
const sendEvt = Object.assign({}, evt, { relatedContext, draggedContext });
463+
return onMove(sendEvt, originalEvent);
464464
},
465465

466466
onDragEnd() {

tests/unit/vuedraggable.spec.js

+77-15
Original file line numberDiff line numberDiff line change
@@ -302,19 +302,19 @@ describe("draggable.vue when initialized with list", () => {
302302
})
303303

304304
describe("when calling onMove", () => {
305-
let evt;
306305
let originalEvt;
307306
let move;
308307
let doMove;
309308

310309
beforeEach(() => {
311-
//item = element.children[2];
312310
evt = {
313311
to: element,
314-
related: element,
312+
related: element.children[1],
315313
willInsertAfter: false
316314
};
317-
originalEvt = {};
315+
originalEvt = {
316+
domInfo: true
317+
};
318318
move = getEvent("onMove");
319319
doMove = () => move(evt, originalEvt);
320320
});
@@ -329,7 +329,69 @@ describe("draggable.vue when initialized with list", () => {
329329
beforeEach(() => {
330330
move = jest.fn();
331331
wrapper.setProps({ move });
332-
})
332+
});
333+
334+
it("calls move with list information", () => {
335+
const expectedEvt = {
336+
draggedContext: {
337+
element: "b",
338+
futureIndex: 0,
339+
index: 1
340+
},
341+
relatedContext: {
342+
component: vm,
343+
element: "a",
344+
index: 0,
345+
list: ["a", "b", "c"]
346+
},
347+
to: element,
348+
related: element.children[1],
349+
willInsertAfter: false
350+
};
351+
doMove();
352+
expect(move.mock.calls.length).toBe(1);
353+
expect(move).toHaveBeenCalledWith(expectedEvt, originalEvt);
354+
});
355+
356+
357+
test.each([
358+
[1, false, 0, { element: "a", index: 0 }],
359+
[2, false, 1, { element: "b", index: 1 }],
360+
[3, false, 2, { element: "c", index: 2 }],
361+
362+
// Will insert after is not taken into account if the dragging
363+
// element is in the target list
364+
[1, true, 0, { element: "a", index: 0 }],
365+
[2, true, 1, { element: "b", index: 1 }],
366+
[3, true, 2, { element: "c", index: 2 }],
367+
])(
368+
"when context is of index %n with insert after %o has futureIndex: %n and context: %o",
369+
(index, willInsertAfter, futureIndex, context) => {
370+
evt.willInsertAfter = willInsertAfter;
371+
evt.related = element.children[index];
372+
373+
const expectedEvt = {
374+
draggedContext: {
375+
element: "b",
376+
futureIndex,
377+
index: 1
378+
},
379+
relatedContext: {
380+
component: vm,
381+
element: context.element,
382+
index: context.index,
383+
list: ["a", "b", "c"]
384+
},
385+
to: element,
386+
related: element.children[index],
387+
willInsertAfter
388+
};
389+
390+
doMove();
391+
expect(move.mock.calls.length).toBe(1);
392+
expect(move).toHaveBeenCalledWith(expectedEvt, originalEvt);
393+
}
394+
)
333395

334396
test.each([
335397
true,
@@ -437,16 +499,6 @@ describe("draggable.vue when initialized with list", () => {
437499
})
438500
});
439501

440-
it("does calls Sortable destroy when mounted", () => {
441-
expect(SortableFake.destroy.mock.calls.length).toBe(0);
442-
});
443-
444-
it("calls Sortable destroy when destroyed", () => {
445-
wrapper.destroy();
446-
expect(SortableFake.destroy).toHaveBeenCalled();
447-
expect(SortableFake.destroy.mock.calls.length).toBe(1);
448-
});
449-
450502
describe("when attribute changes:", () => {
451503
const { error } = console;
452504
beforeEach(() => {
@@ -478,6 +530,16 @@ describe("draggable.vue when initialized with list", () => {
478530
expect(SortableFake.option).toHaveBeenCalledWith(sortableAttribute, value);
479531
}
480532
);
533+
534+
it("does calls Sortable destroy when mounted", () => {
535+
expect(SortableFake.destroy.mock.calls.length).toBe(0);
536+
});
537+
538+
it("calls Sortable destroy when destroyed", () => {
539+
wrapper.destroy();
540+
expect(SortableFake.destroy).toHaveBeenCalled();
541+
expect(SortableFake.destroy.mock.calls.length).toBe(1);
542+
});
481543
})
482544

483545
describe("draggable.vue when initialized with value", () => {

0 commit comments

Comments
 (0)