@@ -2,14 +2,14 @@ import { mount, shallowMount, createLocalVue } from '@vue/test-utils'
22import VueImageKit from '../../src/components/VueImageKit'
33import 'jest-canvas-mock'
44
5- function setupIntersectionObserverMock ( {
5+ function setupIntersectionObserverMock ( {
66 observe = ( ) => null ,
7- unobserve = ( ) => null ,
7+ unobserve = ( ) => null
88} = { } ) {
99 class IntersectionObserver {
1010 observe = observe
1111 unobserve = unobserve
12- disconnect ( ) { }
12+ disconnect ( ) { }
1313 }
1414 Object . defineProperty (
1515 window ,
@@ -23,16 +23,13 @@ function setupIntersectionObserverMock({
2323 )
2424}
2525
26- function waitForImageToLoad ( imageElement ) {
27- return new Promise ( resolve => { imageElement . onload = resolve } )
28- }
29-
3026describe ( 'When I create the VueImageKit component' , ( ) => {
3127 const item = { hash : '6xhf1gnexgdgk' , src : 'lion_BllLvaqVn.jpg' }
3228
3329 beforeEach ( ( ) => {
3430 setupIntersectionObserverMock ( )
3531 } )
32+
3633 const createComponent = ( propsData = { } ) => {
3734 return shallowMount ( VueImageKit , { propsData } )
3835 }
@@ -141,6 +138,16 @@ describe('When I create the VueImageKit component', () => {
141138 expect ( main . attributes ( ) . sizes ) . toBe ( expected )
142139 } )
143140
141+ it ( 'should have different sizes and srcset from default' , ( ) => {
142+ const wrapper = createComponent ( { ...item , srcset : [ 210 , 220 , 230 ] , sizes : [ 210 , 220 , 230 ] } )
143+ const main = wrapper . find ( '.vue-image-kit > .vue-image-kit__img' )
144+ expect ( main . exists ( ) ) . toBe ( true )
145+ const expected = '(max-width: 210px) 210px, (max-width: 220px) 220px, (max-width: 230px) 230px 1080px'
146+ expect ( main . attributes ( ) . sizes ) . toBe ( expected )
147+ const expectedSrcset = 'https://ik.imagekit.io/6xhf1gnexgdgk/tr:w-210/lion_BllLvaqVn.jpg 210w, https://ik.imagekit.io/6xhf1gnexgdgk/tr:w-220/lion_BllLvaqVn.jpg 220w, https://ik.imagekit.io/6xhf1gnexgdgk/tr:w-230/lion_BllLvaqVn.jpg 230w'
148+ expect ( main . attributes ( ) . srcset ) . toBe ( expectedSrcset )
149+ } )
150+
144151 it ( 'should have different default size' , ( ) => {
145152 const wrapper = createComponent ( { ...item , defaultSize : 1366 } )
146153 const main = wrapper . find ( '.vue-image-kit > .vue-image-kit__img' )
@@ -170,15 +177,14 @@ describe('When I create the VueImageKit component', () => {
170177 it ( 'should clear the timeout on disconnect' , ( done ) => {
171178 const wrapper = createComponent ( { ...item , width : 300 , height : 300 , placeholder : 'https://ik.imagekit.io/6xhf1gnexgdgk/igor2_HJhiHMa54.png' } )
172179 expect ( wrapper . exists ( ) ) . toBe ( true )
180+ wrapper . destroy ( )
173181 setTimeout ( ( ) => {
174- wrapper . destroy ( )
175182 expect ( wrapper . vm . timeOut ) . toBe ( null )
176183 done ( )
177184 } , 500 )
178185 } )
179186
180- it ( 'should trigger intersection' , ( done ) => {
181- // ! WIP
187+ it ( 'should trigger intersection' , async ( ) => {
182188 const localVue = createLocalVue ( )
183189 const wrapper = mount ( VueImageKit , {
184190 propsData : { ...item , width : 300 , height : 300 , placeholder : 'https://ik.imagekit.io/6xhf1gnexgdgk/igor2_HJhiHMa54.png' } ,
@@ -197,17 +203,12 @@ describe('When I create the VueImageKit component', () => {
197203 const placeholder = wrapper . find ( '.vue-image-kit__placeholder' )
198204 expect ( placeholder . exists ( ) ) . toBe ( true )
199205 expect ( wrapper . vm . $el . querySelector ( '.vue-image-kit__placeholder' ) ) . toBeDefined ( )
200- setTimeout ( ( ) => {
201- const imgQuerySelector = wrapper . vm . $el . querySelector ( '.vue-image-kit__img' )
202- waitForImageToLoad ( imgQuerySelector )
203- // expect(imgQuerySelector.classList).toContainEqual(['vue-image-kit--loaded'])
204- const placeholderAgain = wrapper . find ( '.vue-image-kit__placeholder' )
205- expect ( placeholderAgain . exists ( ) ) . toBe ( false )
206- expect ( wrapper . vm . timeOut ) . toBeNull ( )
207- expect ( wrapper . vm . $el . querySelector ( '.vue-image-kit__placeholder' ) ) . toBeNull ( )
208- // expect(wrapper.vm.$el.querySelector('.vue-image-kit__img').onload).toHaveBeenCalled()
209- done ( )
210- } , 301 )
206+ wrapper . vm . $el . querySelector ( '.vue-image-kit__img' ) . onload ( )
207+ await wrapper . vm . $nextTick ( )
208+ const placeholderAgain = wrapper . find ( '.vue-image-kit__placeholder' )
209+ expect ( placeholderAgain . exists ( ) ) . toBe ( false )
210+ expect ( wrapper . vm . timeOut ) . not . toBeNull ( )
211+ expect ( wrapper . vm . $el . querySelector ( '.vue-image-kit__placeholder' ) ) . toBeNull ( )
211212 } )
212213
213214 it ( 'should match snapshot' , ( ) => {
0 commit comments