vue3-dnd
Version:
Drag and Drop for Vue Composition API
82 lines (81 loc) • 3.31 kB
JavaScript
;
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);
});
});