1 | Hey = require '../'
|
2 | mkdirp = require 'mkdirp'
|
3 | async = require 'async'
|
4 | fs = require 'fs'
|
5 | exec = require('child_process').exec
|
6 | handlebars = require 'handlebars'
|
7 |
|
8 | class HeyTest
|
9 | constructor: (@blog_dir, options) ->
|
10 | options or= {}
|
11 | @hey = null
|
12 | @number_of_posts = options.number_of_posts or 1000
|
13 | @fixtures_file = options.fixtures_file or './fixtures/posts'
|
14 | @tpl = handlebars.compile "{{title}}\n=========\nType: Text\nPublished: {{date}}\nTags: {{tags}}\n\n {{body}}"
|
15 |
|
16 | create_blog_folder: (callback) ->
|
17 | mkdirp.sync @blog_dir
|
18 |
|
19 | delete_blog_folder: (callback) ->
|
20 | exec "rm -rf #{blog_dir}", callback
|
21 |
|
22 | create_new_blog: (callback) =>
|
23 | @create_blog_folder()
|
24 | @hey = new Hey @blog_dir
|
25 | @hey.init()
|
26 | callback?()
|
27 |
|
28 | loadFixtures: =>
|
29 | @data = require @fixtures_file
|
30 |
|
31 | @make_post = (n, callback) ->
|
32 | title = randomItem @data.titles
|
33 | post = tpl
|
34 | title: title
|
35 | date: randomItem @data.dates
|
36 | tags: randomItem @data.tags
|
37 | body: randomItem @data.contents
|
38 |
|
39 | fs.writeFileSync makeFilename(title, n), post
|
40 | callback null, post
|
41 |
|
42 | load_test: =>
|
43 | @create_new_blog =>
|
44 | @loadFixtures()
|
45 | console.log typeof @make_post
|
46 |
|
47 |
|
48 |
|
49 | randomItem = (items) ->
|
50 | items[Math.floor(Math.random() * items.length)]
|
51 |
|
52 | makeFilename = (title, n) ->
|
53 | "#{blogDir}/posts/"+ title.toLowerCase().replace(/\s/g, '-') + "-#{n}.md"
|
54 |
|
55 | test = new HeyTest process.cwd() + '/blog/'
|
56 | test.load_test()
|