11import { mount , createLocalVue as CreateLocalVue } from '@vue/test-utils'
22import { BIconPerson } from '../../icons/icons'
33import { BAvatar } from './avatar'
4+ import { waitNT } from '../../../tests/utils'
45
56describe ( 'avatar' , ( ) => {
67 it ( 'should have expected default structure' , async ( ) => {
78 const wrapper = mount ( BAvatar )
9+ expect ( wrapper . isVueInstance ( ) ) . toBe ( true )
810 expect ( wrapper . is ( 'span' ) ) . toBe ( true )
911 expect ( wrapper . classes ( ) ) . toContain ( 'b-avatar' )
1012 expect ( wrapper . classes ( ) ) . toContain ( 'badge-secondary' )
1113 expect ( wrapper . classes ( ) ) . not . toContain ( 'disabled' )
1214 expect ( wrapper . attributes ( 'href' ) ) . not . toBeDefined ( )
1315 expect ( wrapper . attributes ( 'type' ) ) . not . toBeDefined ( )
16+ wrapper . destroy ( )
1417 } )
1518
1619 it ( 'should have expected structure when prop `button` set' , async ( ) => {
@@ -19,6 +22,7 @@ describe('avatar', () => {
1922 button : true
2023 }
2124 } )
25+ expect ( wrapper . isVueInstance ( ) ) . toBe ( true )
2226 expect ( wrapper . is ( 'button' ) ) . toBe ( true )
2327 expect ( wrapper . classes ( ) ) . toContain ( 'b-avatar' )
2428 expect ( wrapper . classes ( ) ) . toContain ( 'btn-secondary' )
@@ -29,6 +33,17 @@ describe('avatar', () => {
2933 expect ( wrapper . text ( ) ) . toEqual ( '' )
3034 expect ( wrapper . find ( '.b-icon' ) . exists ( ) ) . toBe ( true )
3135 expect ( wrapper . find ( 'img' ) . exists ( ) ) . toBe ( false )
36+
37+ expect ( wrapper . emitted ( 'click' ) ) . toBeUndefined ( )
38+
39+ wrapper . trigger ( 'click' )
40+ await waitNT ( wrapper . vm )
41+
42+ expect ( wrapper . emitted ( 'click' ) ) . not . toBeUndefined ( )
43+ expect ( wrapper . emitted ( 'click' ) . length ) . toBe ( 1 )
44+ expect ( wrapper . emitted ( 'click' ) [ 0 ] [ 0 ] ) . toBeInstanceOf ( Event )
45+
46+ wrapper . destroy ( )
3247 } )
3348
3449 it ( 'should have expected structure when prop `href` set' , async ( ) => {
@@ -37,6 +52,7 @@ describe('avatar', () => {
3752 href : '#foo'
3853 }
3954 } )
55+ expect ( wrapper . isVueInstance ( ) ) . toBe ( true )
4056 expect ( wrapper . is ( 'a' ) ) . toBe ( true )
4157 expect ( wrapper . classes ( ) ) . toContain ( 'b-avatar' )
4258 expect ( wrapper . classes ( ) ) . toContain ( 'badge-secondary' )
@@ -48,6 +64,17 @@ describe('avatar', () => {
4864 expect ( wrapper . text ( ) ) . toEqual ( '' )
4965 expect ( wrapper . find ( '.b-icon' ) . exists ( ) ) . toBe ( true )
5066 expect ( wrapper . find ( 'img' ) . exists ( ) ) . toBe ( false )
67+
68+ expect ( wrapper . emitted ( 'click' ) ) . toBeUndefined ( )
69+
70+ wrapper . trigger ( 'click' )
71+ await waitNT ( wrapper . vm )
72+
73+ expect ( wrapper . emitted ( 'click' ) ) . not . toBeUndefined ( )
74+ expect ( wrapper . emitted ( 'click' ) . length ) . toBe ( 1 )
75+ expect ( wrapper . emitted ( 'click' ) [ 0 ] [ 0 ] ) . toBeInstanceOf ( Event )
76+
77+ wrapper . destroy ( )
5178 } )
5279
5380 it ( 'should have expected structure when prop `text` set' , async ( ) => {
@@ -56,6 +83,7 @@ describe('avatar', () => {
5683 text : 'BV'
5784 }
5885 } )
86+ expect ( wrapper . isVueInstance ( ) ) . toBe ( true )
5987 expect ( wrapper . is ( 'span' ) ) . toBe ( true )
6088 expect ( wrapper . classes ( ) ) . toContain ( 'b-avatar' )
6189 expect ( wrapper . classes ( ) ) . toContain ( 'badge-secondary' )
@@ -65,6 +93,7 @@ describe('avatar', () => {
6593 expect ( wrapper . text ( ) ) . toContain ( 'BV' )
6694 expect ( wrapper . find ( '.b-icon' ) . exists ( ) ) . toBe ( false )
6795 expect ( wrapper . find ( 'img' ) . exists ( ) ) . toBe ( false )
96+ wrapper . destroy ( )
6897 } )
6998
7099 it ( 'should have expected structure when default slot used' , async ( ) => {
@@ -76,6 +105,7 @@ describe('avatar', () => {
76105 default : 'BAR'
77106 }
78107 } )
108+ expect ( wrapper . isVueInstance ( ) ) . toBe ( true )
79109 expect ( wrapper . is ( 'span' ) ) . toBe ( true )
80110 expect ( wrapper . classes ( ) ) . toContain ( 'b-avatar' )
81111 expect ( wrapper . classes ( ) ) . toContain ( 'badge-secondary' )
@@ -86,14 +116,17 @@ describe('avatar', () => {
86116 expect ( wrapper . text ( ) ) . not . toContain ( 'FOO' )
87117 expect ( wrapper . find ( '.b-icon' ) . exists ( ) ) . toBe ( false )
88118 expect ( wrapper . find ( 'img' ) . exists ( ) ) . toBe ( false )
119+ wrapper . destroy ( )
89120 } )
90121
91122 it ( 'should have expected structure when prop `src` set' , async ( ) => {
92123 const wrapper = mount ( BAvatar , {
93124 propsData : {
94- src : '/foo/bar'
125+ src : '/foo/bar' ,
126+ text : 'BV'
95127 }
96128 } )
129+ expect ( wrapper . isVueInstance ( ) ) . toBe ( true )
97130 expect ( wrapper . is ( 'span' ) ) . toBe ( true )
98131 expect ( wrapper . classes ( ) ) . toContain ( 'b-avatar' )
99132 expect ( wrapper . classes ( ) ) . toContain ( 'badge-secondary' )
@@ -104,9 +137,31 @@ describe('avatar', () => {
104137 expect ( wrapper . find ( '.b-icon' ) . exists ( ) ) . toBe ( false )
105138 expect ( wrapper . find ( 'img' ) . exists ( ) ) . toBe ( true )
106139 expect ( wrapper . find ( 'img' ) . attributes ( 'src' ) ) . toEqual ( '/foo/bar' )
140+ expect ( wrapper . text ( ) ) . not . toContain ( 'BV' )
141+
142+ wrapper . setProps ( {
143+ src : '/foo/baz'
144+ } )
145+ await waitNT ( wrapper . vm )
146+
147+ expect ( wrapper . find ( 'img' ) . exists ( ) ) . toBe ( true )
148+ expect ( wrapper . find ( 'img' ) . attributes ( 'src' ) ) . toEqual ( '/foo/baz' )
149+ expect ( wrapper . text ( ) ) . not . toContain ( 'BV' )
150+ expect ( wrapper . emitted ( 'img-error' ) ) . not . toBeDefined ( )
151+ expect ( wrapper . text ( ) ) . not . toContain ( 'BV' )
152+
153+ // Fake an image error
154+ wrapper . find ( 'img' ) . trigger ( 'error' )
155+ await waitNT ( wrapper . vm )
156+ expect ( wrapper . emitted ( 'img-error' ) ) . toBeDefined ( )
157+ expect ( wrapper . emitted ( 'img-error' ) . length ) . toBe ( 1 )
158+ expect ( wrapper . find ( 'img' ) . exists ( ) ) . toBe ( false )
159+ expect ( wrapper . text ( ) ) . toContain ( 'BV' )
160+
161+ wrapper . destroy ( )
107162 } )
108163
109- it ( 'should have expected structure when prop `src ` set' , async ( ) => {
164+ it ( 'should have expected structure when prop `icon ` set' , async ( ) => {
110165 const localVue = new CreateLocalVue ( )
111166 localVue . component ( 'BIconPerson' , BIconPerson )
112167 const wrapper = mount ( BAvatar , {
@@ -115,6 +170,7 @@ describe('avatar', () => {
115170 icon : 'person'
116171 }
117172 } )
173+ expect ( wrapper . isVueInstance ( ) ) . toBe ( true )
118174 expect ( wrapper . is ( 'span' ) ) . toBe ( true )
119175 expect ( wrapper . classes ( ) ) . toContain ( 'b-avatar' )
120176 expect ( wrapper . classes ( ) ) . toContain ( 'badge-secondary' )
@@ -125,31 +181,40 @@ describe('avatar', () => {
125181 const $icon = wrapper . find ( '.b-icon' )
126182 expect ( $icon . exists ( ) ) . toBe ( true )
127183 expect ( $icon . classes ( ) ) . toContain ( 'bi-person' )
184+ wrapper . destroy ( )
128185 } )
129186
130187 it ( '`size` prop should work as expected' , async ( ) => {
131188 const wrapper1 = mount ( BAvatar )
132189 expect ( wrapper1 . attributes ( 'style' ) ) . toEqual ( 'width: 2.5em; height: 2.5em;' )
190+ wrapper1 . destroy ( )
133191
134192 const wrapper2 = mount ( BAvatar , { propsData : { size : 'sm' } } )
135193 expect ( wrapper2 . attributes ( 'style' ) ) . toEqual ( 'width: 1.5em; height: 1.5em;' )
194+ wrapper2 . destroy ( )
136195
137196 const wrapper3 = mount ( BAvatar , { propsData : { size : 'md' } } )
138197 expect ( wrapper3 . attributes ( 'style' ) ) . toEqual ( 'width: 2.5em; height: 2.5em;' )
198+ wrapper3 . destroy ( )
139199
140200 const wrapper4 = mount ( BAvatar , { propsData : { size : 'lg' } } )
141201 expect ( wrapper4 . attributes ( 'style' ) ) . toEqual ( 'width: 3.5em; height: 3.5em;' )
202+ wrapper4 . destroy ( )
142203
143204 const wrapper5 = mount ( BAvatar , { propsData : { size : 20 } } )
144205 expect ( wrapper5 . attributes ( 'style' ) ) . toEqual ( 'width: 20px; height: 20px;' )
206+ wrapper5 . destroy ( )
145207
146208 const wrapper6 = mount ( BAvatar , { propsData : { size : '24.5' } } )
147209 expect ( wrapper6 . attributes ( 'style' ) ) . toEqual ( 'width: 24.5px; height: 24.5px;' )
210+ wrapper6 . destroy ( )
148211
149212 const wrapper7 = mount ( BAvatar , { propsData : { size : '5em' } } )
150213 expect ( wrapper7 . attributes ( 'style' ) ) . toEqual ( 'width: 5em; height: 5em;' )
214+ wrapper7 . destroy ( )
151215
152216 const wrapper8 = mount ( BAvatar , { propsData : { size : '36px' } } )
153217 expect ( wrapper8 . attributes ( 'style' ) ) . toEqual ( 'width: 36px; height: 36px;' )
218+ wrapper8 . destroy ( )
154219 } )
155220} )
0 commit comments