Skip to content

Commit ab6bd85

Browse files
committed
Update ve-table-edit.spec.js
1 parent 437f776 commit ab6bd85

File tree

1 file changed

+163
-0
lines changed

1 file changed

+163
-0
lines changed

tests/unit/specs/ve-table-edit.spec.js

Lines changed: 163 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { mount } from "@vue/test-utils";
22
import veTable from "@/ve-table";
33
import { later } from "../util";
4+
import { KEY_CODES } from "../constant";
45

56
describe("veTable edit", () => {
67
const TABLE_DATA = [
@@ -613,4 +614,166 @@ describe("veTable edit", () => {
613614
rowKey: 0,
614615
});
615616
});
617+
618+
it("keydown event with single click edit", async () => {
619+
const mockFn = jest.fn();
620+
621+
const wrapper = mount(veTable, {
622+
propsData: {
623+
columns: COLUMNS,
624+
tableData: TABLE_DATA,
625+
editOption: {
626+
doubleClickEdit: false,
627+
fullRowEdit: false,
628+
// cell value change
629+
cellValueChange: ({ row, column }) => {
630+
mockFn(row, column);
631+
},
632+
},
633+
rowKeyFieldName: "rowKey",
634+
},
635+
});
636+
637+
// 选中单元格
638+
const firstCell = wrapper
639+
.findAll(".ve-table-body-tr")
640+
.at(0)
641+
.findAll(".ve-table-body-td")
642+
.at(0);
643+
644+
firstCell.trigger("click");
645+
646+
await later();
647+
648+
expect(firstCell.find(".ve-table-body-td-edit-input").exists()).toBe(
649+
true,
650+
);
651+
652+
document.dispatchEvent(
653+
new KeyboardEvent("keydown", { keyCode: KEY_CODES.ENTER }),
654+
);
655+
656+
await later();
657+
658+
expect(firstCell.find(".ve-table-body-td-edit-input").exists()).toBe(
659+
false,
660+
);
661+
expect(mockFn).toHaveBeenCalled();
662+
});
663+
664+
it("keydown event with double click edit", async () => {
665+
const mockFn = jest.fn();
666+
667+
const wrapper = mount(veTable, {
668+
propsData: {
669+
columns: COLUMNS,
670+
tableData: TABLE_DATA,
671+
editOption: {
672+
doubleClickEdit: true,
673+
fullRowEdit: false,
674+
// cell value change
675+
cellValueChange: ({ row, column }) => {
676+
mockFn(row, column);
677+
},
678+
},
679+
rowKeyFieldName: "rowKey",
680+
},
681+
});
682+
683+
// 选中单元格
684+
const firstCell = wrapper
685+
.findAll(".ve-table-body-tr")
686+
.at(0)
687+
.findAll(".ve-table-body-td")
688+
.at(0);
689+
690+
firstCell.trigger("click");
691+
692+
await later();
693+
694+
expect(firstCell.find(".ve-table-body-td-edit-input").exists()).toBe(
695+
false,
696+
);
697+
698+
document.dispatchEvent(
699+
new KeyboardEvent("keydown", { keyCode: KEY_CODES.ENTER }),
700+
);
701+
702+
await later();
703+
704+
expect(firstCell.find(".ve-table-body-td-edit-input").exists()).toBe(
705+
true,
706+
);
707+
708+
document.dispatchEvent(
709+
new KeyboardEvent("keydown", { keyCode: KEY_CODES.ENTER }),
710+
);
711+
712+
await later();
713+
714+
expect(firstCell.find(".ve-table-body-td-edit-input").exists()).toBe(
715+
false,
716+
);
717+
expect(mockFn).toHaveBeenCalled();
718+
});
719+
720+
it("keydown event with full row edit", async () => {
721+
const mockFn = jest.fn();
722+
723+
const wrapper = mount(veTable, {
724+
propsData: {
725+
columns: COLUMNS,
726+
tableData: TABLE_DATA,
727+
editOption: {
728+
doubleClickEdit: true,
729+
fullRowEdit: true,
730+
// cell value change
731+
rowValueChange: ({ row }) => {
732+
mockFn(row);
733+
},
734+
},
735+
rowKeyFieldName: "rowKey",
736+
},
737+
});
738+
739+
// 选中单元格
740+
const firstCell = wrapper
741+
.findAll(".ve-table-body-tr")
742+
.at(0)
743+
.findAll(".ve-table-body-td")
744+
.at(0);
745+
746+
firstCell.trigger("click");
747+
748+
await later();
749+
750+
expect(firstCell.find(".ve-table-body-td-edit-input").exists()).toBe(
751+
false,
752+
);
753+
expect(wrapper.findAll(".ve-table-body-td-edit-input").length).toBe(0);
754+
755+
document.dispatchEvent(
756+
new KeyboardEvent("keydown", { keyCode: KEY_CODES.ENTER }),
757+
);
758+
759+
await later();
760+
761+
expect(firstCell.find(".ve-table-body-td-edit-input").exists()).toBe(
762+
true,
763+
);
764+
expect(wrapper.findAll(".ve-table-body-td-edit-input").length).toBe(4);
765+
766+
document.dispatchEvent(
767+
new KeyboardEvent("keydown", { keyCode: KEY_CODES.ENTER }),
768+
);
769+
770+
await later();
771+
772+
expect(firstCell.find(".ve-table-body-td-edit-input").exists()).toBe(
773+
false,
774+
);
775+
expect(wrapper.findAll(".ve-table-body-td-edit-input").length).toBe(0);
776+
777+
expect(mockFn).toHaveBeenCalled();
778+
});
616779
});

0 commit comments

Comments
 (0)