1 |
|
2 | var SPAWNWATCHER = require('../src/core/spawn-watch')
|
3 | , chai = require('chai')
|
4 | , expect = chai.expect
|
5 | , should = chai.should()
|
6 | , path = require('path')
|
7 | , _ = require('underscore')
|
8 | , FRESHResume = require('../src/core/fresh-resume')
|
9 | , HMR = require( '../src/hackmyapi')
|
10 | , validator = require('is-my-json-valid')
|
11 | , READFILES = require('recursive-readdir-sync')
|
12 | , fileContains = require('../src/utils/file-contains')
|
13 | , FS = require('fs');
|
14 |
|
15 | chai.config.includeStack = true;
|
16 |
|
17 | function genThemes( title, src, fmt ) {
|
18 |
|
19 | describe('Testing themes against ' + title.toUpperCase() + ' resume ' + '(' + fmt + ')' , function () {
|
20 |
|
21 | var _sheet;
|
22 |
|
23 | function genTheme( fmt, src, themeName, themeLoc, testTitle ) {
|
24 | themeLoc = themeLoc || themeName;
|
25 | testTitle = themeName.toUpperCase() + ' theme (' + fmt + ') should generate without throwing an exception';
|
26 | it( testTitle, function () {
|
27 | function tryOpen() {
|
28 |
|
29 | var dst = ['test/sandbox/' + fmt + '/' + title + '/' + themeName + '/resume.all'];
|
30 | var opts = {
|
31 | theme: themeLoc,
|
32 | format: fmt,
|
33 | prettify: true,
|
34 | silent: false,
|
35 | css: 'embed'
|
36 | };
|
37 | try {
|
38 | HMR.verbs.build( src, dst, opts, function(msg) {
|
39 | msg = msg || '';
|
40 | console.log(msg);
|
41 | });
|
42 | }
|
43 | catch(ex) {
|
44 | console.log(ex);
|
45 | console.log(ex.stack);
|
46 | throw ex;
|
47 | }
|
48 | }
|
49 | tryOpen.should.not.Throw();
|
50 | });
|
51 | }
|
52 |
|
53 | genTheme(fmt, src, 'hello-world');
|
54 | genTheme(fmt, src, 'compact');
|
55 | genTheme(fmt, src, 'modern');
|
56 | genTheme(fmt, src, 'minimist');
|
57 | genTheme(fmt, src, 'awesome');
|
58 | genTheme(fmt, src, 'positive');
|
59 | genTheme(fmt, src, 'jsonresume-theme-boilerplate', 'node_modules/jsonresume-theme-boilerplate' );
|
60 | genTheme(fmt, src, 'jsonresume-theme-sceptile', 'node_modules/jsonresume-theme-sceptile' );
|
61 | genTheme(fmt, src, 'jsonresume-theme-modern', 'node_modules/jsonresume-theme-modern' );
|
62 | genTheme(fmt, src, 'jsonresume-theme-classy', 'node_modules/jsonresume-theme-classy' );
|
63 |
|
64 | });
|
65 |
|
66 | }
|
67 |
|
68 | function folderContains( needle, haystack ) {
|
69 | return _.some( READFILES( path.join(__dirname, haystack) ), function( absPath ) {
|
70 | if( FS.lstatSync( absPath ).isFile() ) {
|
71 | if( fileContains( absPath, needle ) ) {
|
72 | console.log('Found invalid metadata in ' + absPath);
|
73 | return true;
|
74 | }
|
75 | }
|
76 | });
|
77 | }
|
78 |
|
79 | genThemes( 'jane-q-fullstacker', ['node_modules/fresh-test-resumes/src/jane-fullstacker.fresh.json'], 'FRESH' );
|
80 | genThemes( 'johnny-trouble', ['node_modules/fresh-test-resumes/src/johnny-trouble.fresh.json'], 'FRESH' );
|
81 | genThemes( 'richard-hendriks', ['test/resumes/jrs-0.0.0/richard-hendriks.json'], 'JRS' );
|
82 |
|
83 | describe('Verifying generated theme files...', function() {
|
84 | it('Generated files should not contain ICE.', function() {
|
85 | expect( folderContains('@@@@', 'sandbox') ).to.be.false;
|
86 | });
|
87 | });
|