1
1
'use strict' ;
2
2
3
+ const cheerio = require ( 'cheerio' ) ;
4
+
3
5
describe ( 'css' , ( ) => {
4
6
const Hexo = require ( '../../../lib/hexo' ) ;
5
7
const hexo = new Hexo ( __dirname ) ;
@@ -12,14 +14,22 @@ describe('css', () => {
12
14
13
15
const css = require ( '../../../lib/plugins/helper/css' ) . bind ( ctx ) ;
14
16
15
- function assertResult ( result ) {
16
- let expected = '' ;
17
+ function assertResult ( result , expected ) {
18
+ const $ = cheerio . load ( result ) ;
17
19
18
- for ( let i = 1 , len = arguments . length ; i < len ; i ++ ) {
19
- expected += '<link rel="stylesheet" href="' + arguments [ i ] + '">\n' ;
20
+ if ( ! Array . isArray ( expected ) ) {
21
+ expected = [ expected ] ;
20
22
}
21
23
22
- result . should . eql ( expected . trim ( ) ) ;
24
+ expected . forEach ( ( item , index ) => {
25
+ if ( typeof item === 'string' || item instanceof String ) {
26
+ $ ( 'link' ) . eq ( index ) . attr ( 'href' ) . should . eql ( item ) ;
27
+ } else {
28
+ for ( const attribute in item ) {
29
+ $ ( 'link' ) . eq ( index ) . attr ( attribute ) . should . eql ( item [ attribute ] ) ;
30
+ }
31
+ }
32
+ } ) ;
23
33
}
24
34
25
35
it ( 'a string' , ( ) => {
@@ -30,18 +40,36 @@ describe('css', () => {
30
40
} ) ;
31
41
32
42
it ( 'an array' , ( ) => {
33
- assertResult ( css ( [ 'foo' , 'bar' , 'baz' ] ) , '/foo.css' , '/bar.css' , '/baz.css' ) ;
43
+ assertResult ( css ( [ 'foo' , 'bar' , 'baz' ] ) , [ '/foo.css' , '/bar.css' , '/baz.css' ] ) ;
34
44
} ) ;
35
45
36
46
it ( 'multiple strings' , ( ) => {
37
- assertResult ( css ( 'foo' , 'bar' , 'baz' ) , '/foo.css' , '/bar.css' , '/baz.css' ) ;
47
+ assertResult ( css ( 'foo' , 'bar' , 'baz' ) , [ '/foo.css' , '/bar.css' , '/baz.css' ] ) ;
38
48
} ) ;
39
49
40
50
it ( 'multiple arrays' , ( ) => {
41
- assertResult ( css ( [ 'foo' , 'bar' ] , [ 'baz' ] ) , '/foo.css' , '/bar.css' , '/baz.css' ) ;
51
+ assertResult ( css ( [ 'foo' , 'bar' ] , [ 'baz' ] ) , [ '/foo.css' , '/bar.css' , '/baz.css' ] ) ;
42
52
} ) ;
43
53
44
54
it ( 'mixed' , ( ) => {
45
- assertResult ( css ( [ 'foo' , 'bar' ] , 'baz' ) , '/foo.css' , '/bar.css' , '/baz.css' ) ;
55
+ assertResult ( css ( [ 'foo' , 'bar' ] , 'baz' ) , [ '/foo.css' , '/bar.css' , '/baz.css' ] ) ;
56
+ } ) ;
57
+
58
+ it ( 'an object' , ( ) => {
59
+ assertResult ( css ( { href : 'script.css' } ) , { href : '/script.css' } ) ;
60
+ assertResult ( css ( { href : '/script.css' } ) , { href : '/script.css' } ) ;
61
+ assertResult ( css ( { href : '/script.css' , foo : 'bar' } ) , { href : '/script.css' , foo : 'bar' } ) ;
62
+ } ) ;
63
+
64
+ it ( 'mulitple objects' , ( ) => {
65
+ assertResult ( css ( { href : '/foo.css' } , { href : '/bar.css' } ) , [ { href : '/foo.css' } , { href : '/bar.css' } ] ) ;
66
+ assertResult ( css ( { href : '/aaa.css' , bbb : 'ccc' } , { href : '/ddd.css' , eee : 'fff' } ) ,
67
+ [ { href : '/aaa.css' , bbb : 'ccc' } , { href : '/ddd.css' , eee : 'fff' } ] ) ;
68
+ } ) ;
69
+
70
+ it ( 'an array of objects' , ( ) => {
71
+ assertResult ( css ( [ { href : '/foo.css' } , { href : '/bar.css' } ] ) , [ { href : '/foo.css' } , { href : '/bar.css' } ] ) ;
72
+ assertResult ( css ( [ { href : '/aaa.css' , bbb : 'ccc' } , { href : '/ddd.css' , eee : 'fff' } ] ) ,
73
+ [ { href : '/aaa.css' , bbb : 'ccc' } , { href : '/ddd.css' , eee : 'fff' } ] ) ;
46
74
} ) ;
47
75
} ) ;
0 commit comments