11import Vue from 'vue'
2+ import $ from 'jquery'
23import Alert from '@src/components/alert/Alert.vue'
34import AlertDoc from '@docs/pages/components/Alert.md'
45import utils from './../utils'
56
7+ const DEFAULT_ALERT_CLASS = 'alert-info'
8+
69describe ( 'Alert' , ( ) => {
7- let app
10+ let vm
11+ let $el
812
913 beforeEach ( ( ) => {
10- app = new Vue ( {
11- template : '<alert-doc ref="doc"/>' ,
12- components : { AlertDoc}
13- } )
14+ let Constructor = Vue . extend ( AlertDoc )
15+ vm = new Constructor ( ) . $mount ( )
16+ $el = $ ( vm . $el )
1417 } )
1518
1619 afterEach ( ( ) => {
17- try {
18- app . $destroy ( )
19- } catch ( err ) {
20- // Silent
21- }
20+ vm . $destroy ( )
21+ $el = null
2222 } )
2323
24- it ( 'Should be able to add alert with no type' , ( done ) => {
24+ const getDefaultAlertLength = ( ) => {
25+ return $el . find ( `.${ DEFAULT_ALERT_CLASS } ` ) . length
26+ }
27+
28+ it ( 'Should be able to add alert with no type' , ( ) => {
2529 let res = Vue . compile ( '<alert>{{ msg }}</alert>' )
2630 let vm = new Vue ( {
2731 data ( ) {
@@ -34,62 +38,41 @@ describe('Alert', () => {
3438 staticRenderFns : res . staticRenderFns
3539 } )
3640 vm . $mount ( )
37- vm . $nextTick ( ( ) => {
38- expect ( vm . $el . className ) . to . equal ( 'alert alert-success' )
39- vm . $destroy ( )
40- done ( )
41- } )
41+ let $el = $ ( vm . $el )
42+ expect ( $el . hasClass ( 'alert' ) ) . to . be . true
43+ expect ( $el . hasClass ( DEFAULT_ALERT_CLASS ) ) . to . be . true
44+ vm . $destroy ( )
4245 } )
4346
44- it ( 'Alert can be closed' , ( done ) => {
45- let vm = app . $mount ( ) . $refs . doc
46- vm . $nextTick ( ( ) => {
47- let alertInfo = vm . $el . querySelector ( '#alert-test' )
48- expect ( alertInfo ) . to . exist
49- let closedBtn = alertInfo . querySelector ( 'button.close' )
50- utils . triggerEvent ( closedBtn , 'click' )
51- vm . $nextTick ( ( ) => {
52- expect ( vm . $el . querySelector ( '#alert-test' ) ) . not . exist
53- done ( )
54- } )
55- } )
47+ it ( 'Should be able to dismiss alerts' , async ( ) => {
48+ let alert = $el . find ( '#alert-test' )
49+ expect ( alert . length ) . to . equal ( 1 )
50+ let closedBtn = alert . find ( 'button.close' )
51+ closedBtn . click ( )
52+ await vm . $nextTick ( )
53+ expect ( $el . find ( '#alert-test' ) . length ) . to . equal ( 0 )
5654 } )
5755
58- it ( 'Can add a Alert' , ( done ) => {
59- let vm = app . $mount ( ) . $refs . doc
60- vm . $nextTick ( ( ) => {
61- let alertSuccess = vm . $el . querySelectorAll ( '.alert-success' )
62- let alertSuccessLengthBefore = alertSuccess . length
63- let addAlertBtn = vm . $el . querySelector ( '#add-alert-2' )
64- utils . triggerEvent ( addAlertBtn , 'click' )
65- vm . $nextTick ( ( ) => {
66- alertSuccess = vm . $el . querySelectorAll ( '.alert-success' )
67- let alertSuccessLengthAfter = alertSuccess . length
68- expect ( alertSuccessLengthAfter ) . to . equal ( alertSuccessLengthBefore + 1 )
69- done ( )
70- } )
71- } )
56+ it ( 'Should be able to add dismissible alerts' , async ( ) => {
57+ let before = getDefaultAlertLength ( )
58+ let addAlertBtn = $el . find ( '#add-alert-1' )
59+ addAlertBtn . click ( )
60+ await vm . $nextTick ( )
61+ let after = getDefaultAlertLength ( )
62+ expect ( after ) . to . equal ( before + 1 )
7263 } )
7364
74- it ( 'Can add a Alert had duration' , ( done ) => {
75- let vm = app . $mount ( ) . $refs . doc
65+ it ( 'Should be able to add auto dismiss alerts' , async ( ) => {
7666 vm . duration = 1000
77- vm . $nextTick ( ( ) => {
78- let alertSuccess = vm . $el . querySelectorAll ( '.alert-success' )
79- let alertSuccessLengthBefore = alertSuccess . length
80- let addAlertBtn = vm . $el . querySelector ( '#add-alert-1' )
81- utils . triggerEvent ( addAlertBtn , 'click' )
82- vm . $nextTick ( ( ) => {
83- alertSuccess = vm . $el . querySelectorAll ( '.alert-success' )
84- let alertSuccessLengthAfter = alertSuccess . length
85- expect ( alertSuccessLengthAfter ) . to . equal ( alertSuccessLengthBefore + 1 )
86- setTimeout ( ( ) => {
87- alertSuccess = vm . $el . querySelectorAll ( '.alert-success' )
88- alertSuccessLengthAfter = alertSuccess . length
89- expect ( alertSuccessLengthAfter ) . to . equal ( alertSuccessLengthBefore )
90- done ( )
91- } , 1200 )
92- } )
93- } )
67+ await vm . $nextTick ( )
68+ let before = getDefaultAlertLength ( )
69+ let addAlertBtn = $el . find ( '#add-alert-2' )
70+ addAlertBtn . click ( )
71+ await vm . $nextTick ( )
72+ let after = getDefaultAlertLength ( )
73+ expect ( after ) . to . equal ( before + 1 )
74+ await utils . sleep ( vm . duration + 200 )
75+ let _after = getDefaultAlertLength ( )
76+ expect ( _after ) . to . equal ( before )
9477 } )
9578} )
0 commit comments