From 797abb5487e36096a8ee2438823cd35087ab565a Mon Sep 17 00:00:00 2001 From: bezany Date: Fri, 19 Apr 2019 16:05:21 +0300 Subject: [PATCH 1/3] worked test for LMarker with parent LMap --- tests/unit/LMarker.spec.js | 42 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 tests/unit/LMarker.spec.js diff --git a/tests/unit/LMarker.spec.js b/tests/unit/LMarker.spec.js new file mode 100644 index 00000000..c53b5fc5 --- /dev/null +++ b/tests/unit/LMarker.spec.js @@ -0,0 +1,42 @@ +import { createLocalVue, mount } from '@vue/test-utils'; +import L from 'leaflet'; +import LMarker from '@/components/LMarker.vue'; +import LMap from '@/components/LMap.vue'; + +const localVue = createLocalVue(); + +function getWrapper (propsData) { + const ParentMapVm = mount(LMap, { + localVue + }).vm; + + const wrapper = mount({ + ...LMarker, + // trick from here https://github.com/vuejs/vue-test-utils/issues/560#issuecomment-461865315 + created () { + this.$parent = ParentMapVm; + } + }, { + localVue, + propsData, + sync: false // avoid warning, see + // Removing sync mode #1137 https://github.com/vuejs/vue-test-utils/issues/1137 + }); + return wrapper; +} + +describe('LMarker.vue', () => { + test('LMarker.vue change prop latLng', async () => { + const initLatlng = L.latLng([11, 22]); + const wrapper = getWrapper({ + latLng: initLatlng + }); + expect(wrapper.exists()).toBe(true); + expect(wrapper.vm.mapObject.getLatLng().equals(initLatlng)).toBe(true); + const newLatLng = L.latLng([1, 1]); + wrapper.setProps({ latLng: newLatLng }); + await wrapper.vm.$nextTick(); + const curLatLng = wrapper.vm.mapObject.getLatLng(); + expect(curLatLng.equals(newLatLng)).toBe(true); + }); +}); From 78d253e2b9c1222c84b71d512c37165ce869a35f Mon Sep 17 00:00:00 2001 From: bezany Date: Mon, 22 Apr 2019 15:30:59 +0300 Subject: [PATCH 2/3] added getWrapperWithMap for wrap map component with root map --- tests/unit/LMarker.spec.js | 38 ++++++++++++++++++++++++++++++-------- 1 file changed, 30 insertions(+), 8 deletions(-) diff --git a/tests/unit/LMarker.spec.js b/tests/unit/LMarker.spec.js index c53b5fc5..dab50a9a 100644 --- a/tests/unit/LMarker.spec.js +++ b/tests/unit/LMarker.spec.js @@ -5,32 +5,37 @@ import LMap from '@/components/LMap.vue'; const localVue = createLocalVue(); -function getWrapper (propsData) { - const ParentMapVm = mount(LMap, { +function getWrapperWithMap (component, propsData, mountOptions) { + const mapWrapper = mount(LMap, { localVue - }).vm; + }); const wrapper = mount({ - ...LMarker, + ...component, // trick from here https://github.com/vuejs/vue-test-utils/issues/560#issuecomment-461865315 created () { - this.$parent = ParentMapVm; + this.$parent = mapWrapper.vm; } }, { localVue, propsData, - sync: false // avoid warning, see + sync: false, // avoid warning, see // Removing sync mode #1137 https://github.com/vuejs/vue-test-utils/issues/1137 + ...mountOptions }); - return wrapper; + return { + wrapper, + mapWrapper + }; } describe('LMarker.vue', () => { test('LMarker.vue change prop latLng', async () => { const initLatlng = L.latLng([11, 22]); - const wrapper = getWrapper({ + const wrapperAndMap = getWrapperWithMap(LMarker, { latLng: initLatlng }); + const wrapper = wrapperAndMap.wrapper; expect(wrapper.exists()).toBe(true); expect(wrapper.vm.mapObject.getLatLng().equals(initLatlng)).toBe(true); const newLatLng = L.latLng([1, 1]); @@ -39,4 +44,21 @@ describe('LMarker.vue', () => { const curLatLng = wrapper.vm.mapObject.getLatLng(); expect(curLatLng.equals(newLatLng)).toBe(true); }); + + test('LMarker.vue default slot text', async () => { + const markerText = 'Hello from marker!'; + const wrapperAndMap = getWrapperWithMap(LMarker, { + latLng: [0, 0] + }, { + slots: { + default: markerText + } + }); + const wrapper = wrapperAndMap.wrapper; + const mapWrapper = wrapperAndMap.mapWrapper; + expect(mapWrapper.text()).toContain('Leaflet'); + expect(wrapper.exists()).toBe(true); + await wrapper.vm.$nextTick(); + expect(wrapper.text()).toEqual(markerText); + }); }); From 6ea3062b56e0d4f8e9dde2373ce21381484aad16 Mon Sep 17 00:00:00 2001 From: bezany Date: Mon, 22 Apr 2019 15:57:00 +0300 Subject: [PATCH 3/3] added test for LMarker --- tests/unit/LMarker.spec.js | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/tests/unit/LMarker.spec.js b/tests/unit/LMarker.spec.js index dab50a9a..2f4e0058 100644 --- a/tests/unit/LMarker.spec.js +++ b/tests/unit/LMarker.spec.js @@ -61,4 +61,32 @@ describe('LMarker.vue', () => { await wrapper.vm.$nextTick(); expect(wrapper.text()).toEqual(markerText); }); + + test('LMarker.vue draggable change', async () => { + const wrapperAndMap = getWrapperWithMap(LMarker, { + latLng: [0, 0] + }); + const wrapper = wrapperAndMap.wrapper; + const markerObject = wrapper.vm.mapObject; + expect(markerObject.dragging.enabled()).toBeFalsy(); + wrapper.setProps({ draggable: true }); + await wrapper.vm.$nextTick(); + expect(markerObject.dragging.enabled()).toBeTruthy(); + wrapper.setProps({ draggable: false }); + await wrapper.vm.$nextTick(); + expect(markerObject.dragging.enabled()).toBeFalsy(); + }); + + test('LMarker.vue not change prop latLng to null', async () => { + const initLatlng = L.latLng([11, 22]); + const wrapperAndMap = getWrapperWithMap(LMarker, { + latLng: initLatlng + }); + const wrapper = wrapperAndMap.wrapper; + expect(wrapper.exists()).toBe(true); + expect(wrapper.vm.mapObject.getLatLng().equals(initLatlng)).toBe(true); + wrapper.setProps({ latLng: null }); + await wrapper.vm.$nextTick(); + expect(wrapper.vm.mapObject.getLatLng().equals(initLatlng)).toBe(true); + }); });