vue-screen-orientation
Version:
Get easy and reactive access to the Direction, Version and Angle of your screen with vue.js.
112 lines (94 loc) • 2.9 kB
JavaScript
import { createLocalVue, shallowMount } from '@vue/test-utils'
import VueScreenOrientation from '../src'
const localVue = createLocalVue()
localVue.use(VueScreenOrientation, {vsoUse: VueScreenOrientation.VSO_USE_TYPE.ORIENTATION})
const screenComponent = {
template: '<div>Hello Wolrd</div>',
}
let wrapper
let events = {}
beforeEach(() => {
events = {};
global.screen.orientation = {
type: 'portrait-primary',
angle: 0,
onchange: null,
addEventListener(event, callback) {
events[event] = callback;
},
removeEventListener(event, callback) {
if (events[event] === callback) {
delete events[event]
}
},
dispatchEvent(event, eventData) {
if (events.hasOwnProperty(event)) {
events[event](eventData)
}
}
}
wrapper = shallowMount(screenComponent, { localVue })
});
describe('With window.screen.orientation', () => {
test('Default Load', () => {
expect(wrapper.vm.$vsoDirection).toEqual('portrait')
expect(wrapper.vm.$vsoVersion).toEqual('primary')
expect(wrapper.vm.$vsoAngle).toEqual(0)
})
test('Rotate left 1 time', () => {
global.screen.orientation.dispatchEvent('change', {
target: {
type: 'landscape-primary',
angle: 90,
}
})
expect(wrapper.vm.$vsoDirection).toEqual('landscape')
expect(wrapper.vm.$vsoVersion).toEqual('primary')
expect(wrapper.vm.$vsoAngle).toEqual(90)
})
test('Rotate left 2 times', () => {
global.screen.orientation.dispatchEvent('change', {
target: {
type: 'portrait-secondary',
angle: 180,
}
})
expect(wrapper.vm.$vsoDirection).toEqual('portrait')
expect(wrapper.vm.$vsoVersion).toEqual('secondary')
expect(wrapper.vm.$vsoAngle).toEqual(180)
})
test('Rotate left 3 time', () => {
global.screen.orientation.dispatchEvent('change', {
target: {
type: 'landscape-secondary',
angle: 270,
}
})
expect(wrapper.vm.$vsoDirection).toEqual('landscape')
expect(wrapper.vm.$vsoVersion).toEqual('secondary')
expect(wrapper.vm.$vsoAngle).toEqual(270)
})
test('Rotate left 4 times', () => {
global.screen.orientation.dispatchEvent('change', {
target: {
type: 'portrait-primary',
angle: 0,
}
})
expect(wrapper.vm.$vsoDirection).toEqual('portrait')
expect(wrapper.vm.$vsoVersion).toEqual('primary')
expect(wrapper.vm.$vsoAngle).toEqual(0)
})
test('$vsoDestroyListener', () => {
wrapper.vm.$vsoDestroyListener()
global.screen.orientation.dispatchEvent('change', {
target: {
type: 'landscape-secondary',
angle: 270,
}
})
expect(wrapper.vm.$vsoDirection).not.toEqual('landscape')
expect(wrapper.vm.$vsoVersion).not.toEqual('secondary')
expect(wrapper.vm.$vsoAngle).not.toEqual(270)
})
})