UNPKG

vue3-dnd

Version:

Drag and Drop for Vue Composition API

82 lines (81 loc) 3.31 kB
"use strict"; var _dndCore = require("dnd-core"); var _vue = require("@testing-library/vue"); var _dndContext = require("../DndContext"); var _dndProvider = _interopRequireDefault(require("../DndProvider")); var _reactDndTestBackend = require("react-dnd-test-backend"); var _vueDemi = require("vue-demi"); var _vitest = require("vitest"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } (0, _vitest).describe("DndProvider", function() { (0, _vitest).afterEach(_vue.cleanup); (0, _vitest).it("reuses DragDropManager provided to it", function() { var capturedManager; var manager = (0, _dndCore).createDragDropManager(_reactDndTestBackend.TestBackend, {}, {}); var ChildComponent = (0, _vueDemi).defineComponent(function() { capturedManager = (0, _dndContext).useDndContextInjector(); return function() { return null; }; }); var TestComponent = (0, _vueDemi).defineComponent(function() { return function() { return (0, _vueDemi).h(_dndProvider.default, { manager: manager }, { default: function() { return (0, _vueDemi).h(ChildComponent); } }); }; }); (0, _vue).render(TestComponent); (0, _vitest).expect(capturedManager).toBe(manager); }); /* * Since @testing-library/vue still calls unmount during uninstallation and determines element.parentNode, although * our use case is correct, an error will be reported. * */ _vitest.it.skip("stores DragDropManager in global context and cleans up on unmount", function() { var capturedManager; var ChildComponent = (0, _vueDemi).defineComponent(function() { capturedManager = (0, _dndContext).useDndContextInjector(); return function() { return null; }; }); var TestProvider = (0, _vueDemi).defineComponent(function() { return function() { return (0, _vueDemi).h(_dndProvider.default, { backend: _reactDndTestBackend.TestBackend }, { default: function() { return (0, _vueDemi).h(ChildComponent); } }); }; }); var mountProvider = function() { return (0, _vue).render(TestProvider); }; var globalInstance = function() { return global[Symbol.for("__VUE_DND_CONTEXT_INSTANCE__")]; }; // Single mount & unmount works var root = mountProvider(); (0, _vitest).expect(globalInstance()).toEqual(capturedManager); root.unmount(); (0, _vitest).expect(globalInstance()).toEqual(null); // Two mounted components do a refcount var rootA = mountProvider(); var rootB = mountProvider(); (0, _vitest).expect(globalInstance()).toEqual(capturedManager); rootA.unmount(); (0, _vitest).expect(globalInstance()).toEqual(capturedManager); rootB.unmount(); (0, _vitest).expect(globalInstance()).toEqual(null); }); });