1 |
|
2 |
|
3 |
|
4 |
|
5 | var fs = require('fs'),
|
6 | path = require('path'),
|
7 | fis = require('fis3'),
|
8 | _ = fis.util,
|
9 | expect = require('chai').expect,
|
10 | _release = fis.require('command-release/lib/release.js'),
|
11 | _deploy = fis.require('command-release/lib/deploy.js'),
|
12 | iconfont = require('../src/');
|
13 |
|
14 | var dev,
|
15 | dist;
|
16 |
|
17 | function release(opts, cb) {
|
18 | opts = opts || {};
|
19 |
|
20 | _release(opts, function(error, info) {
|
21 | _deploy(info, cb);
|
22 | });
|
23 | }
|
24 |
|
25 |
|
26 | function setFisConfig(iconfont, deploy) {
|
27 | var iconConf = _.merge({
|
28 |
|
29 | ignore: ['zepto', 'badjs', 'mod', 'bj-report', 'tools', 'db.js'],
|
30 |
|
31 | classPrefix: 'i-',
|
32 |
|
33 | svgPath: '../svgs',
|
34 |
|
35 | output: 'modules/common/fonts',
|
36 | pseClass: 'before'
|
37 | }, iconfont || {}),
|
38 | deployConf = deploy;
|
39 |
|
40 | fis.match('**.{css,scss}', {
|
41 | domain: 'http://7.url.cn/icon'
|
42 | })
|
43 | .match('::image', {
|
44 | domain: 'http://9.url.cn/image'
|
45 | })
|
46 | .match('::package', {
|
47 | postpackager: wrapper(iconConf)
|
48 | })
|
49 | .match('*', {
|
50 | deploy: fis.plugin('local-deliver', deployConf)
|
51 | });
|
52 | }
|
53 |
|
54 | function wrapper(options) {
|
55 | return function(ret, pack, settings, opt) {
|
56 |
|
57 | _.assign(settings, options);
|
58 | return iconfont.call(this, ret, pack, settings, opt);
|
59 | }
|
60 | }
|
61 |
|
62 | describe('fis-postpackager-iconfont', function() {
|
63 | var root = path.join(__dirname, 'src');
|
64 |
|
65 | fis.project.setProjectRoot(root);
|
66 |
|
67 | beforeEach(function() {
|
68 | dev = path.join(__dirname, 'dev');
|
69 | _.del(dev);
|
70 |
|
71 | dist = path.join(__dirname, 'dist');
|
72 | _.del(dist);
|
73 |
|
74 | });
|
75 |
|
76 | it('iconfont:link', function() {
|
77 |
|
78 | setFisConfig({}, {
|
79 | to: dev
|
80 | });
|
81 |
|
82 |
|
83 | fis.on('iconfont:allIcons', function(allIcons) {
|
84 | expect(allIcons.length).to.equal(3);
|
85 | });
|
86 |
|
87 | release({
|
88 | unique: true
|
89 | }, function() {
|
90 |
|
91 | expect(fs.existsSync(path.join(dev, 'modules/common/fonts', 'font.css'))).to.be.true;
|
92 | expect(fs.existsSync(path.join(dev, 'modules/common/fonts', 'iconfont.eot'))).to.be.true;
|
93 | expect(fs.existsSync(path.join(dev, 'modules/common/fonts', 'iconfont.svg'))).to.be.true;
|
94 | expect(fs.existsSync(path.join(dev, 'modules/common/fonts', 'iconfont.ttf'))).to.be.true;
|
95 | expect(fs.existsSync(path.join(dev, 'modules/common/fonts', 'iconfont.woff'))).to.be.true;
|
96 |
|
97 |
|
98 | expect(fs.readFileSync(path.join(dev, 'index.html')).toString().indexOf('http://7.url.cn/icon/modules/common/fonts/font.css') > -1).to.be.true;
|
99 |
|
100 |
|
101 | var cssFileContent = fs.readFileSync(path.join(dev, 'modules/common/fonts', 'font.css')).toString();
|
102 | ['add', 'alert', 'back'].forEach(function(icon) {
|
103 | expect(cssFileContent.indexOf('i-' + icon + ':before') > -1).to.be.true;
|
104 | });
|
105 |
|
106 | console.log('css link');
|
107 | });
|
108 | });
|
109 |
|
110 | it('iconfont:inline', function() {
|
111 | setFisConfig({
|
112 | cssInline: true
|
113 | }, {
|
114 | to: dist
|
115 | });
|
116 |
|
117 |
|
118 | fis.on('iconfont:allIcons', function(allIcons) {
|
119 | expect(allIcons.length).to.equal(3);
|
120 | });
|
121 |
|
122 | release({
|
123 | unique: true
|
124 | }, function() {
|
125 |
|
126 | expect(fs.existsSync(path.join(dist, 'modules/common/fonts', 'font.css'))).to.be.true;
|
127 | expect(fs.existsSync(path.join(dist, 'modules/common/fonts', 'iconfont.eot'))).to.be.true;
|
128 | expect(fs.existsSync(path.join(dist, 'modules/common/fonts', 'iconfont.svg'))).to.be.true;
|
129 | expect(fs.existsSync(path.join(dist, 'modules/common/fonts', 'iconfont.ttf'))).to.be.true;
|
130 | expect(fs.existsSync(path.join(dist, 'modules/common/fonts', 'iconfont.woff'))).to.be.true;
|
131 |
|
132 |
|
133 | var htmlFileContent = fs.readFileSync(path.join(dist, 'index.html')).toString();
|
134 | ['add', 'alert', 'back'].forEach(function(icon) {
|
135 | expect(htmlFileContent.indexOf('i-' + icon + ':before') > -1).to.be.true;
|
136 | });
|
137 |
|
138 | console.log('css inline');
|
139 | });
|
140 | });
|
141 | });
|